PYQT5:基于QsciScintilla的代码编辑器分析1--菜单介绍(使用帮助,提供exe文件、源代码下载)
阅读原文时间:2021年04月24日阅读:1

本代码编辑器实现的目标功能:
1.常用的代码编辑功能,提高编辑效率的功能,如语法高亮显示,输入自动补全(基于QsciScintilla),函数列表,函数跳转,包含文件打开。
2. 设置编译器路径,编译器参数(SDCC)。
3. 生成C51的hex文件后,可以选择串口对目标芯片(STC12、STC15、STC8)下载。
4. C51工程采用《code::blocks》的组织方式,用后缀名为.cbp的xml的文件组织,可以直接打开《code::blocks》的工程文件(for MCS51).
————————————————

这里提供本编辑器可执行文件(exe)的下载链接:
1.Code51.Code51_STC
2.百度盘链接::https://pan.baidu.com/s/1Ihxb7WX0ozUuRs3KFyzApQ
提取码:i6my
3.源代码:百度盘链接:https://pan.baidu.com/s/1jlRvWgN2LFHTtnKogeUZZw
提取码:w437
4.源代码的码云链接:https://gitee.com/huangweide001/code4STC51

读者在调试代码时,可以直接运行主文件《texteditor2.py》。
————————————————

1、菜单栏

1.1菜单–>file


example子菜单在实现时,要求将文件夹《example》放在与软件相同的目录下。example里面有子文件夹,例如图中的《01BasicCode》《02display》等。《01BasicCode》下面又有子文件夹,例如图中的《01target001》,后者里面就有一个同名的.cbp的文件,也就是《01target001.cbp》。如果工程文件名和所在目录不同名,将会检测不到工程文件,不能添加到example菜单中。详细的实现参考第8章《子菜单及对话框》的相关源码注释。

1.2菜单–>edit


重点介绍“Find”,查找的窗口如下:


如果打开查找窗口时已有选择文字, 所选文字将自动传入;当然也可以复制粘贴,手动输入。查找后的结果显示在“built output”窗口。双击窗口将读取鼠标所在行的文字对应的文件名和行数,进行跳转。


具体实现请参考第7章《编译器命令与信息输出视图》

1.3菜单–>project

“project”菜单的第4项是Built(编译工程),第5项是Clean(清除工程),第6项是Download(下载hex文件到目标芯片),第7项是Built and load(编译后下载hex文件,综合了4和6),第8项是最近打开的工程。编译工程就是调用SDCC的编译命令,写成了单独一个类《compileProject.py》,将在第7章《编译器命令与信息输出视图》中详讲。


下载hex文件也是一个类Programmer,在第9章《STC51烧写协议及实现》中详讲。

1.4菜单–>setting

1.4.1芯片选择

菜单–>Setting(设置)包含4个子项,上图是“Chip”芯片选择,目前支持笔者手头上的芯片型号有:
1】STC12C5A08S2
2】STC15F2K60S2
3】STC8F2K32S2
4】STC8A8K64S4A12(与STC8F2K32S2相同协议)
芯片内部配置信息都不支持修改。支持的晶振频率也有限。参见第9章《STC51烧写协议及实现》的介绍。
原来的开源软件《stcflash.py》是支持比“STC12”早的芯片,如STC89,STC10,STC11。只是我手头上没有芯片,没法测试,就没有开放出来。有兴趣的网友可以自己更改源代码,开放出来。

1.4.2串口选择

自动检测已有串口。

标题1.4.3下载方式选择

下载hex文件的方式:1】冷启动;2】发送[0x5a,0x3a,0x6c];3】自定义数据,输入时用空格隔开,2个十六进制数字对齐。
波特率是指目标芯片运行时的下载口的波特率。

1.4.4编译器选项

编译器路径选择后保存在软件目录下的《setting.ini》文件中;外部ram则保存于工程文件《xxx.cbp》中。

1.5菜单–>tool

这个菜单目前有两个子项,第一个“Encode to UTF8”的功能是将“GB2313”编码的文件转换为“utf8”编码的文件。主要是考虑从keilC51转过来的文件有乱码,需要进行转换。
第二个是“串口工具”几乎完全借用网友ColinFred的代码,见链接:Python3+PyQT5+Pyserial 实现简单的串口工具。主要考虑是一边用串口调试单片机程序,一边用串口下载,经常是下载时串口被占用,集成一个串口工具,下载前判断一下是否已经打开,如果打开就顺便关闭。串口工具相关的代码分析见第11章:11–集成串口工具

1.6菜单–>window

这个window菜单只有“Project-Viewer”和“Built-viewer”是我加上去的,其它的都是《PYTHON QT GUI快速编程 PYQT编程指南》第9章第5节的例程照抄的。当“工程窗口”被关闭后,“Project-Viewer”处于不打钩状态,此时点击“Project-Viewer”,将使“工程窗口”重新出现。“Built-viewer”和“编译输出窗口”也是一样的关系。

2.工具栏

工具栏是把菜单中使用频率高的功能放到工具栏来。

3.右键菜单

3.1工程窗口右键菜单

这部分的源码分析在第4章《xml格式的工程文件与树状列表部件》

3.1.1添加文件


在工程窗口中,右击除了文件名以外的地方都默认为添加文件;不过最好准确的添加,比如c文件右击“source”添加到《source》,h文件右击“header”添加到《header》。

3.1.2删除文件


右击文件名,显示删除文件菜单。

3.2编辑区右键菜单

这部分的代码分析在第5章《多文档编辑区介绍》

3.2.1跳转到函数体


当鼠标位于函数名时,右击将出现这个菜单,然后左击实现跳转到函数体。应该把宏定义跳转也包括进来,目前没有完成。

3.2.2跳转(打开)到包含文件

当鼠标停留在#include行,右击将出现这个菜单,然后左击实现跳转到(或者打开)包含文件。

3.信息输出区的双击跳转


当编译工程出现警告(warning)或者错误(error)时,双击该警告或者错误,将跳转到警告(错误)所在的源代码行。源码分析在第7章《编译器命令与信息输出视图》第2节。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章