显示标签为“gtk”的博文。显示所有博文
显示标签为“gtk”的博文。显示所有博文

2008年11月16日星期日

Weekly Twitter 2008 #46

  • 搞错了,原来是gtk-1.2.10更新了,我还以为是2.10呢。好在最近发现sourceware.org上直接提供了cygwinports的镜像,所以可以安装那里的新版本gtk2了...
  • cygwin的gtk总算更新了,这下我可以搞新版本的xfce了。现在网站空间又没了,要不去申请一个sourceforge项目
  • comtypes挺好用,比pywin32提供的win32com更让人习惯一点,也不需要安装一大砣东西

2006年12月27日星期三

claws-mail vs thunderbird(3): 快捷键设置

claws-mail/sylpheed-claws利用了gtk提供的一个很好的特性: 将焦点移动到一个菜单项上,按下一个键,这个键就成了这个菜单项的快捷键(accelerator)。按Del键就可以删除这个快捷键

gtk程序可以设置~/.gtkrc-2.0文件获得这个功能:
gtk-can-change-accels = 1

GNOME程序可在gconf-editor中钩选如下选项
/desktop/gnome/interface/can-change-accels

但有些应用程序(比如claws-mail)不想依赖这些设置,自己打开了这个功能:
   gtk_settings_set_long_property(gtk_settings_get_default(),
"gtk-can-change-accels",
(glong)TRUE, "XProperty");

可惜thunderbird/icedove没有这个功能,也没有其它的设置快捷键的功能:-(

2006年12月25日星期一

升级到gaim-2.0beta,又降下来了

Debian testing中的gaim早升到了2.0beta版,但我一直没有升级,主要是原来在Windows下试用过,gaim-2.0中好像不能单独设置某个协议的状态,我没法单独将QQ或者MSN隐身。

这两天没啥事情,Torchwood也因为没有找到字幕没法看,干脆就来升级这个玩儿 :-)

先做了个备份

$ dpkg-repack gaim
$ dpkg-repack gaim-data
$ dpkg-repack openq

升级:

$ apt-get install gaim

没想到升级后gaim很不稳定,老崩溃。一小时后只能重新安装1.5了:

$ apt-get remove gaim
$ dpkg -i gaim_1.5*.deb openq*.deb

BTW: Debian简直太方便了 :-)

2006年7月15日星期六

sylpheed-claws(gtk2)总算有了win32版

Here. (没错,目前还不是独立的,只是gpg4win的一部分)

自从切换到gtk2后,sylpheed-claws一直都没有纯win32版本,我本来好几次想来折腾,但既然cygwin版本用得挺好(除了必须得启个X server这点不爽之外)。

2006年6月18日星期日

图片简易编辑软件: mtPaint

原来我说Linux下似乎没有一个简单的图片编辑软件,GIMP功能虽强但太bloated, 搞得我不得不翻出xv来用。xv其实功能不多,问题倒不少,而且界面操作起来怎么也不太方便。

昨天在gnomefiles上翻到一个mtPaint, 似乎正好可以填补这个空白。抓图、裁剪、缩放、旋转,以及胡乱画几笔,这些基本功能当然都有,锐化、柔化、模糊、浮雕这些简单的特效也有,而且居然支持层和动画!

P.S 在Windows上我用来做图片简单处理的软件是IrfanView,但它不能在上面画(比如画个红框,添点文字什么的),不过同时可以做图片浏览器。

2006年5月28日星期日

debian-installer有望使用新的gtk+-directfb

在framebuffer上构建图形界面也是越来越红火了,基于svgalib的肯定是越来越少了。gtk+本来有x11和win32两种front-end,后来见到一个gtk+-directfb,但当时仅仅算是个hacking,倒是debian胆子大,拿来做debian-installer的图形界面,不过也被限定了只能用gtk-2.09版本。

这个directfb front-end已经在合入了gtk+的2.10版本。但gtk+-2.10目前还没有进入debian,于是又有人提供了一份backport,使得可以在gtk+-2.8上使用directfb。

不过debian是否会采用,还没有定论。

PS: Debian Installer图形界面展示(Hiweed定制版)

2006年3月14日星期二

dia总算出了一个新版本了

只看见了Windows版本,反倒是主页上没什么消息。不过反正也是Windows版本问题多一点,新版本稳定多了。(我倒多是在工作中才会要画些流程图, 所以用Windows版的, 在家里很少用这个.)

另外,Windows版本网站上也可以下载到源代码。

链接: 几个建模工具

2006年3月1日星期三

geany: 微型IDE

UNIX下编程的人,常常都是用vi, cc和make来折腾,但如果你vi用得不熟悉,又不愿意用anjuta这样的大东西,不妨geany试试这个小玩意。

Geany is a small editor using GTK2 with basic features of an integrated development environment.
Some features:
- syntax highlighting
- code completion
- call tips
- many supported filetypes like C, C++, Java, PHP, HTML, DocBook, Perl, LaTeX, Bash
- symbol lists

2006年2月27日星期一

又可以用OpenQ了(附win32版本)

网友poppyer针对OpenQ-0.3.2给出了补丁,解决了不让登录的问题(因为Tencent禁用了老登录接口),也解决了不能在Gaim-2.0上编译的问题。

这里应网友kexianbin的要求,编译了一个win32版本:

OpenQ-0.3.2 for Gaim-2.0.0beta2, win32版本

时间匆忙,目前只有DLL,放到plugins目录下即可。而笑脸等数据文件尚未打包进去(先可以从源代码自行提取,或者下载我以前提供的老版本)。

我以前在用gaim-1.5 + OpenQ-0.3.2,似乎要删除原来的帐号配置重新添加才行。

-----------------------------------------------------------

编译方法:

1. 先按gaim的win32编译说明编译gaim;

这里需要补充说明的是,并不需要安装cygwin,这里只是需要使用里面的一些常用命令,用tcl网站提供的msys + mingw包更方便。

另外要升级w32api,可以从mingw网站得到(www.mingw.org可能这边访问不了,但sf.net上的下载是可以的)。

2. 将OpenQ-0.3.2的代码解压,并用poppyer的补丁文件覆盖src目录下的文件; 在gaim-2.0的src/protocols下建立目录qq,将OpenQ的src下的文件移过去,然后将这个Makefile.mingw拷贝到该目录下

3. 编译

$ cd gaim-2.0.0beta2/src/protocols/qq

$ make -f Makefile.mingw

这样就可以得到libqq.dll,拷贝到gaim安装目录的plugins下即可;

4. 拷贝数据文件,拷贝pixmaps文件拷贝夹到gaim的安装目录就可以了。

也许你要问那个Makefile.mingw是怎样产生的,其实很简单,我把GG插件的Makefile.mingw拷贝了一份,然后将GG换成了QQ,再将源代码文件列表C_SRC改一下就行了。

--------------------------------------------------


User Comments
(no subject) [Reply]
bamanzi | 07 三月, 2006 16:14
这两天又看见了一个针对gaim-1.5的补丁,于是又做了一个gaim-1.5的版本,也放在上述位置
(no subject) [Reply]
kexianbin | 14 三月, 2006 01:23
prefs.xml内的pref name='ipfile' type='string' value=''/
(no subject) [Reply]
bamanzi | 14 三月, 2006 09:48
我后来比较过原来的prefs.xml和后来的prefs.xml,也发现只有ipfile不同。但认为这个东西应该没有影响,所以想不明白。另外gaim-2.0似乎没有让设置ipfile的地方了
(no subject) [Reply]
sha | 27 三月, 2006 17:48
我删除了perfs.xml中pref name='ipfile' type='string' value=''/ 加载openQ插件可以正常启动Gaim-2.0.
(no subject) [Reply]
aaron | 29 三月, 2006 09:28
hello ~~ 可以开发一下PSI的QQ插件吗?~win下的~~ http://psi-im.org/home
Re: aaron [Reply]
bamanzi | 29 三月, 2006 19:38
还是到某个论坛上去问问吧,在这里说肯定没有什么用
(no subject) [Reply]
aaron | 30 三月, 2006 16:55
还是到某个论坛上去问问吧,在这里说肯定没有什么用 某个论坛? 哪个论坛?~ 这个不是你开发的吗?~
Re: aaron [Reply]
bamanzi | 30 三月, 2006 22:16
兄台抬爱了,俺可没有那个本事。openq的主页是http://openq.linuxsir.org
(no subject) [Reply]
michael | 04 四月, 2006 12:41
老大gaim-1.5的版本在那里?
Re: michale [Reply]
bamanzi | 04 四月, 2006 21:43
这里: http://gaim.sourceforge.net/win32/
(no subject) [Reply]
everack | 01 八月, 2006 09:26
你好: 是不是这个补丁现在不可以用了啊? 我用gaim2.0b2加这个补丁不行啊.

2005年9月30日星期五

BMPx

XMMS2总让我感觉怪怪的,又是SCons又是Python, 还要SQLite, 还分server和client,不管它设计怎么样,我是没有找到以前XMMS(或者更以前的winamp)的感觉,而且到现在连个GUI都没有看到。

所以在freshmeat上看到BMPx这个项目,看来还是有人也这么想(并且会动手去做:-)。

2005年9月23日星期五

Windows也可用gaim同时登录MSN, QQ和Gtalk

下载了最新的GaimOpenQ的Windows版本, 安装很顺利, OpenQ跟gaim之间也没有版本兼容性问题。跑起来gtk也不象原来那么容易崩溃了(至少dia的windows版本很是让人不爽)。这下Windows也可以顺当地同时使用MSN, QQ和Gtalk了。

2005年8月23日星期二

Ridley: libgnome must die

The GTK+ developers have announced a new initiative called "Project Ridley." The idea is to get rid of a number of the small libraries which follow GNOME applications around, merging their functionality into the core GTK+ toolkit. The end result will likely be the GTK+-3.0 release. More information can be found in the announcement (click below) or on the Project Ridley wiki page.

希望这个项目的诞生可以减轻编译gnome平台的麻烦程度。

2005年7月30日星期六

glib2,gtk2,pygtk2 reference in CHM format

I modified devhelp2chm a little, to workaround a problem I found when using gnochm to read the CHM files generated by it.

And updated two CHM files generated by it:
glib2/gtk2 gtk-2.6.8, glib-2.6.5, including FAQ and tutorial
(source: package libgtk2.0-doc, libglib2.0-doc)
pygtk2 reference pygtk2ref 2.6.0, and GtkSourceView, GtkSpell, GnomePrint, GnomePrintUI, GtkMozembed
(source: pygtk2 website)


----------------

How to build:

gtk2.chm:

apt-get install libglib2.0-doc libgtk2.0-doc
cd /usr/share/gtk-doc/html/
DIRS="gtk/ gdk/ gdk-pixbuf/ gtk-faq/ gtk-tutorial/ glib/ gobject/"
find $DIRS -name '*.devhelp.gz' | xargs gunzip
for d in $DIRS; do
(cd $d;
echo $d
for f in *.html; do
sed 's#/usr/share/gtk-doc/html/#../#' $f > $f.tmp
mv $f.tmp $f
done)
done
find $DIRS -name '*.devhelp | xargs ~/bin/devhelp2chm-v2.sh
-p gtk2 -T "GTK+ Reference Manual" -t gtk/index.html

...Then use HtmlHelp Workshop to build it.

pygtk2ref.chm

wget http://www.pygtk.org/dist/pygtk2reference.tbz2
tar jxf pygtk2reference.tbz2
find . -name '*.devhelp' | xargs ~/bin/devhelp2chm-v2.sh
-p pygtk2ref -T "PyGTK2 Reference" -t pygtk2reference/index.html

2005年7月22日星期五

My Cygwin Repository Updated

New:

  • vim-gtk2-6.3.071
  • dia-0.94 Dia is a gtk+ based diagram creation program (screenshots)
Updated:
  • leafpad-0.8.2
  • notecase-0.9.3
  • gtkpod-0.94.0


2005年5月25日星期三

Disk Catalog类软件

我这人是个三脚猫,什么都喜欢玩一玩,GTK/GNOME, Cygwin, Delphi, Python...时间长了,也就搜集了不少东西,所以隔一段时间就把自己近期搜集的东西刻录成一张盘。但刻的盘多了,找东西就费劲了。这时就需要 Disk Catalog类软件。

在Windows下我觉得比较好用的这类软件是Where Is It。它可以支持多种方式提取文件描述:

- 从文件中提取描述信息信息,比如HTML文件的标题,MP3文件的歌名、演唱者、专辑名称,PDF的标题、主题和书签,M$ Office文档的标题
- 从files.bbs, 00index.txt, descript.ion等文件提取文件描述信息
- 从CDDB服务器提取CD里面歌曲的名称
- 从图片提取缩略图(thumbnails)
- 从压缩包类提取文件列表

另外它还提供了插件接口,网站上提供了不少扩展插件,用户也可以自己用Desc API来编写插件(还是Delphi写的!),我自己就写了用于CSDN index和Debian Package的插件。

在GNU/Linux上,也试用过一些(基本上只用过基于Gtk/Gnome的),觉得功能比较强一点的也就是gtktalog了。 gtktalog可以做到上面的功能1、4。对于功能1,它可以根据MIME类型调用一个命令行来获取文件的描述信息,而GNU/Linux下有丰富的命令行程序来做这个,比如对于rpm文件可以用rpm -qpi %s提取包的描述,这要比Where Is It的编程接口方便多了。

(不过gtktalog的MIME判断有点问题,比如对于Debian Package包,通过设置界面添加时,它根据.deb的后缀猜测(guess)出"application/x-deb",我配上对应的命令行 "dpkg-deb --info "之后却根本提取不到包的描述信息,调试之后发现MIME类型应该是"application/x-dpkg",并且在gtktalog设置界面上还不让你添加(说是MIME类型不合法),只能自己修改配置文件~/.gtktalog/gtktalog.cf搞定) 。

另外GWhere有时也用,虽然功能比较弱,但因为它只需要Gtk2,不需要Gnome库,所以在Windows和Cygwin上都可以编译成功,也就可以跨平台使用。

2005年5月24日星期二

Gtk2 patch for gnome-commander-1.1.6

As Debian doesn't have the gnome2 version of gnome-commander, I have to build it by self.

But the problem is a function called _gtk_clist_create_cell_layout is used by the gnome2 version gnome-commander. The symbols started with an '_' are private symbols of gtk2, they should not be used by applications (in old days, these symbols are also exported by gtk2 on some distributions, but not debian).

I just found Mandrake provides this version of gcmd, thus I download the SRPM, and found the patch from it.

===================================================================
RCS file: /cvs/gnome/gnome-commander/src/gnome-cmd-clist.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- gnome-commander/src/gnome-cmd-clist.c 2004/01/08 20:11:28 1.3
+++ gnome-commander/src/gnome-cmd-clist.c 2004/05/03 18:20:18 1.4
@@ -226,6 +226,46 @@
}


+PangoLayout *
+my_gtk_clist_create_cell_layout (GtkCList *clist,
+ GtkCListRow *clist_row,
+ gint column)
+{
+ PangoLayout *layout;
+ GtkStyle *style;
+ GtkCell *cell;
+ gchar *text;
+
+ get_cell_style (clist, clist_row, GTK_STATE_NORMAL, column, &style,
+ NULL, NULL);
+
+
+ cell = &clist_row->cell[column];
+ switch (cell->type)
+ {
+ case GTK_CELL_TEXT:
+ case GTK_CELL_PIXTEXT:
+ text = ((cell->type == GTK_CELL_PIXTEXT) ?
+ GTK_CELL_PIXTEXT (*cell)->text :
+ GTK_CELL_TEXT (*cell)->text);
+
+ if (!text)
+ return NULL;
+
+ layout = gtk_widget_create_pango_layout (GTK_WIDGET (clist),
+ ((cell->type == GTK_CELL_PIXTEXT) ?
+ GTK_CELL_PIXTEXT (*cell)->text :
+ GTK_CELL_TEXT (*cell)->text));
+ pango_layout_set_font_description (layout, style->font_desc);
+
+ return layout;
+
+ default:
+ return NULL;
+ }
+}
+
+
static void
draw_row (GtkCList *clist,
GdkRectangle *area,
@@ -389,7 +429,7 @@

/* calculate real width for column justification */

- layout = _gtk_clist_create_cell_layout (clist, clist_row, i);
+ layout = my_gtk_clist_create_cell_layout (clist, clist_row, i);
if (layout)
{
pango_layout_get_pixel_extents (layout, NULL, &logical_rect);

2005年4月29日星期五

GtkList/GtkListView的查找快捷键

一直以来,对于Gtk程序中的列表(GtkList, GtkCList或者GtkListView),总是不能通过按首字母跳转到相应项目上去,很是不爽。今天无意中敲到了Ctrl+F,发现居然有个小搜索框。

记得当初gtk-2.4要添加GtkFileChooser时,FootNotes上 对于界面原型中"用Ctrl-L打开一个路径输入框"这点争论了半天(但我找不到具体的URL了,也许是这个)。反对者的意见是这样不直观,不看文档的话谁会知道这个 快捷键呢,用户要跳转到某个目录只能一层一层地点; 支持者的意见是这样界面比较简洁,“我们为什么要做得象Windows一样呢?" 对于这个问题,我的意见是反对不显示出来。

回到刚才说的Ctrl+F,好在这个搜索框是直接现在在窗口上,不是一个模态的,还算好用(Firefox后来也改成了这样,而不是原来的Windows风格的对话框。这个搜索框的模态问题其实Jef Raskin在The Humane Interface里特别讲到过)。

P.S. 我将键盘上所有字母键和Ctrl的组合都按了一遍,想看看还有没有别的什么(答案是没有)。

又: 当初别人说KDE比GNOME好(至少是好用),我还跟他们争论一番,最近似乎没有太多底气了,尤其是放弃维护Cygwin GNOME 2.x以及前两天Slackware宣布移除GNOME之后。

2005年4月4日星期一

Cygwin port of sylpheed-claws-gtk2-1.9.6cvs1

Here come the cygwin port sylpheed-claws-gtk2-1.9.6cvs1.

Only source patch available. Due to bandwidth limit, I can't upload the binary to my repository
now (Due to this reason I haven't updated it for serveral months :-(.
Now I have a lot of pending packages: xfce-4.2.0, rox-2.2, etc).

This patch was based on the source package provided by debian (experimental) , for its convenience, as it was preprocessed with autoconf/automake.

Usage:
$ tar zxvf sylpheed-claws-gtk2_1.0.1cvs1_orig.tar.gz $ patch -p1 -b < sylpheed-claws-gtk2-1.0.1cvs1-1.diff $ ./sylpheed-claws-gtk2-1.0.1cvs1-1.sh mkdirs patch config make install package

And I also uploaded the source patch for gtk1 version of 1.0.1.

2005年3月21日星期一

给Knoppix动态添加中文支持(4)

今日搞定几个我常用的gtk程序: gtk1的gtansgtktalog, gtk2的gqviewbeep-media-player

Chinese live extension for Knoppix - gqview, beep-media-player

本来还想加上我比较喜欢的rox的,但因为官方版本对非UTF-8的文件名支持不好(以前我胡乱弄了个补丁),所以没弄。
而且似乎Knoppix上也没有必要用这个文件管理器,除非打算在性能差的机器上不用KDE做桌面。

stardict没有搞成功,因为需要很多gnome的库,

BTW: 刚发现debian上似乎非得用LANGUAGE这个环境变量才能让程序文字生效,比如LANGUAGE=zh_CN beep-media-player。但我在Cygwin上从来都是只用LANG和LC_MESSAEGS的。



1. GQview 1.4.5

这个比较简单,不需要读取什么数据文件,只要将usr/bin/gqview拷贝到~/.dist/bin就可以了。

但Help菜单下的几个菜单项会读取/usr/share/doc/gqview/README,我替换成了/home/knoppix/.gqview/README(恰好一样长!),不过不做这一步也没有问题。

如果想要中文翻译,将/usr/share/locale/zh_CN/LC_MESSAGES/gqview.mo拷贝到~/.dist/下相应的目录即可。因为我们前几天已经做了mount --bind映射了

2. beep-media-player
Knoppix自带xmms, 但这个不如bmp好看,而且不用自己配置中文(只要有中文字体就可以了)——虽然xmms配置中文也不难

cp beep-media-player/usr/bin/beep-media-player $DESTDIR/usr/bin
perl -pi -e 's#/usr/share/bmp#./../share/bmp#g' $DESTDIR/usr/bin/beep-media-player #注1
# add a wrapper
cat <$DESTDIR/bin/beep-media-player
#!/bin/sh
cd `dirname $0`/../usr/bin
exec ./beep-media-player $*
EOF
chmod 755 $DESTDIR/bin/beep-media-player

#shared library required by bmp
cp beep-media-player/usr/lib/libbeep.so.2.0.0 $DESTDIR/lib
(cd $DESTDIR/lib && ln -s libbeep.so.2.0.0 libbeep.so.2 )
sudo ldconfig # is this really needed?

# data (glade,
rsync -Ha beep-media-player/usr/share/ $DESTDIR/usr/share/

# now the Skins dir. Let bmp share the same Skins with xmms
[ ! -d ~/.xmms/Skins ] && mkdir -p ~/.xmms/Skins
[ ! -d ~/.bmp/Skins ] && (cd ~/.bmp && ln -s ../.xmms/Skins .)

# now the Plugins dir.
[ ! -d ~/.bmp/Plugins ] && mkdir -p ~/.bmp/Plugins
rsync -Ha beep-media-player/usr/lib/bmp/ ~/.bmp/Plugins/ #注2

#1: 注意perl行的语句里面最后有个g,表示行内全部替换,前两天没有留意这个
#2: 这里将自带的插件也都放到~/.bmp/Plugins下。当然用相对路径替换掉/usr/lib/bmp也是可以的,这里只是为了说明有时也可以利用程序自己的功能(比如回头我们可以试试按这个思路给Knoppix自带的gaim添加QQ插件)