-
关于插件机制的补充
首先,之前我说过,现在的CodeLite没有一个很大的包罗万象的dll了,这个说法不是很准确了。因为确实仍然有一个叫libcodeliteu.dll的文件,只不过里面包含的内容确实不介Code::Blocks的那个dll是包含了完整的几乎所有的功能,而是只包含了一些跟IDE业务关系不大,却是比较底层而又基础的通用功能。 其次,CodeLite的插件使用C链接的方式导出几个知名函数,用于创建插件对象,查询插件信息等。而Code::Blocks的插件则不然,它们没有这样的知名函数,而只是...…
-
Qt Creator插件机制简单分析
Qt Creator的插件机制比起CodeLite和Code::Blocks来要强大得多。每个插件至少有一个dll文件(以Windows平台为例),还有一个必须的.pluginspec文件。插件的基本信息在.pluginspec文件中描述,包括插件的名称、版本、版权、作者、基本信息、分类、网站等,最重要的一点是有依赖的插件信息。支持插件依赖可以获取得大的灵活性和可扩展能力,这点CodeLite和Code::Blocks都没做到,因为单靠一个动态链接库很难实现这种依赖关系的描述。 插件...…
-
CodeLite/Code::Blocks插件机制简单分析
昨天查看了一下CodeLite和Code::Blocks的源代码,了解了一下它们的插件机制的实现情况,还是非常简单的。 CodeLite宿主程序是一个单独的exe文件(Windows平台下),插件都是单独的dll文件。宿主程序首先声明了一组接口,这组接口定义了宿主程序可以提供给插件使用的各种服务,比如访问当前编辑器等,然后宿主程序实现这组接口。接着再声明一组接口,这组接口需要每个插件都提供自己的实现,另外,插件还需要提供几个dll标准的导出函数,用于查询插件的基本信息,比如返回版本号...…
-
使用qmake转换工程文件
原本用Qt Creator生成工程文件.pro,然后通过qmake -spec macx-xcode xxx.pro可以生成Xcode可用的工程文件,但是说实话Xcode还是用得不习惯,至少我常常用的在class中声明一个函数后,用Visual Assist X可以在右键菜单中直接将其在cpp文件中生成函数框架,但Xcode中还要自己一个字一个字地敲进去,而且这个过程中输入类名都没有自动完成了。当然整个的编辑功能上,Xcode已经比Qt Creator强出太多了。 今天有人跟说我了下...…
-
给N73换新键盘
我的N73是2007年6月买的,由于一直把它装在一个硬质小挎包里,从去年开始,键盘上的按键就开始一个一个掉落了,最开始是5,最中心的一个,然后沿着这个5把4,7,8,*,0都掉了,今年5月买了个5230后,就让N73光荣退役了。 从上海回来后,就一直把N73丢在书柜上,前天突发奇想,在淘宝搜索了一下,果然有N73的键盘卖,想去年去深圳华强北的电子市场找了半天都没找到。于是马上订了一块,定价20,快递6块,从广东寄过来。今天早上有电话打来,是申通快递,说是我填的那个地址他们不送到,要我...…
-
尝试移植到Mac受挫
这两天想试一下把手头这个用wxWidgets开发的工程移植到Linux和Mac,不过遇到了些困难。 该工程使用wxWidgets作为主GUI Framework,又嵌入了Lua解释器,将一部分界面和逻辑使用Lua脚本实现,而Lua脚本大量使用了wxLua以及诸如LPeg之类的第三方库,除此之外,主程序还使用了Boost、wxFlatNotebook、wxScintilla、wxPropertyGrid等第三方库。 主要的困难在移植到Mac上。目前我使用的wxWidgets是2.8....…
-
升级MinGW到GCC 4.5.0
一直用GCC 4.4.0,之前也尝试过将sf.net上MinGW的各个包下载下来后解压覆盖到4.5.0,但最后编译我的工程时总是std::basic_string什么的一些libstdc++-6中的一些符号链接有问题,于是就搁置下来了。 今天偶然到了mamedev.org上看了看,发现它用的是4.4.3,于是想试试,后来干脆又去sf.net上找官方MinGW的文件来看,居然发现一个叫MinGW-Get的在线安装程序。MinGW很喜欢提供在线安装工具,而很少提供打包好的整体的解决方案,...…
-
实现命令行打开文件
之前我说过,作为一个文本编辑器,一个IDE,不能通过命令行参数打开一个文件,是很说不过去的。前面试图加入这个功能,结果遇到了些问题,经过昨天和今天的奋战,终于搞定了。 其实就是发现用wxWidgets的IPC机制怎么都不能正常运行,于是最后我想到了直接用Boost的InterProcess库,这个库也是跨平台可移植的,基本处于符合我的要求的范围内。 昨天还一直没死心,希望能用wxWidgets的IPC类搞定,结果果然无论是用DDE还是用Socket,都有问题。今天下定决心,先看了一...…
-
一无所获,寸步难行
作为一个文本编辑器,一个IDE,不能通过命令行参数打开一个文件,是很说不过去的,于是我就想加这个功能,不料却意外地困难! 首先考虑当前没有已经运行的本程序的进程,通过命令行参数指定一个文件后,最wxApp::OnInit的最后返回前,主窗口已经正常创建显示后,可以将文件路径传递给主窗口,让主窗口打开这个文件。照理说,这应该是一个很平常很普通很正规的流程吧,结果不知道为什么,打开文件这个操作会让程序崩溃。 然后考虑当前已经有运行的本程序的进程了,这时如果再通过命令行参数指定一个文件,...…
-
Twitter hosts IP全挂了
昨晚突然发现twitter的hosts ip不能用了,在just-ping.com里找了一遍api.twitter.com的ip,挨个儿ping了一遍,没有一个能ping通的。真是太杯具了,如果用Mac OSX,倒是没什么影响,反正我都是连上SSH后进行全局代理的,Echofon for Mac本身不能设API和Proxy,全靠这样SSH上去用的。但在Windows下就很无奈了,我一般用TweetDeck或Seesmic Desktop2,这两个东西一个用的是Adobe AIR,另一个...…
-
一帮幸福的人
上午大牛在twitter上DM我,说他升级了,6号时小吉给他生了个儿子。恭喜一下。 前些日子小思思发短信说生了个女儿的,而且还是比预产期晚了10天的,前天还用邮件给我发了张小侄女的照片。眼睛黑黑亮亮,脸圆圆肉肉,好可爱的。 再之前,大约半年前,孙同学和薛mm也发短信来说过生了女儿和儿子。 呃,我们这批同事中,大概最早的是宣宣的女儿了。 真是一帮幸福的人哇!…
-
纠结的wxWidgets…和其它…
突然想再整一下wxMac,之前曾经编译过,也编译出静态链接和动态链接的库了,记得也生成samples的可执行文件了,今天找了一下,那些samples的可执行文件找不到了,随便敲了下make,发现连头文件都没有找到,应该是wx-config没正确执行。然后好奇看了一下readme,赫然发现wxWidgets/Mac doesn't come with any guarantee whatsoever. It might crash your harddisk or destroy you...…
-
Twitter客户端大赏之Saezuri
Saezuri是个UI设计得很精致的Twitter客户端,作者是个日本人,基于Adobe AIR开发。 Saezuri支持多账号,但添加账号的方式稍显繁琐,一方面需要Saezuri本身可以访问twitter.com,另一方面还需要浏览器可以访问twitter,以获取一个PIN号,将该PIN号填入Saezuri中才能使用该账号。而像Seesmic Desktop、Echofon for Mac、TweetDeck等都只要在客户端内填入用户名和密码就可以搞定。 Saezuri使用单列显示方...…
-
Twitter客户端大赏之TweetDeck
从TweetStats的每日统计可以看出,TweetDeck是除官方web外使用最多的客户端,对,没有之一。 与众多第三方客户端一样,TweetDeck也是基于Adobe AIR开发,不过说实话它并不像其他各种使用AIR开发的客户端那种拥有炫目的UI,甚至说,它在UI方面实在有点儿土。TweetDeck使用多列显示的UI,可以自定义在主界面顶部或底部出现输入框,而且会自动隐藏输入框,这点是比较赞的。而且TweetDeck不但支持Twitter服务,还支持MySpace等其他的SNS。...…
-
Qt Quick来啦
Qt4.7.0发布有几天了,这个版本较4.6.x来说,最大的改动莫过于增加了Qt Quick。 Qt Quick是一套解决方案的统称,它包括一个称为declarative的framework,跟animation、state machine之类层次的东西,包括一个称为QML的声明式语言,还包括Qt Creator中辅助设计和编码的那部分。 开发人员可以通过名为QtDeclarative的C++模块,在自己的Qt程序中装入QML文件,并与之交互。QML语言通过一组丰富的QML元素,构...…