// 对于TextBuffer的Modify处理这里是关键,使之能对文本的改变做出响应
static gint undo_connect_signal(GtkTextBuffer *buffer)
{
g_signal_connect(G_OBJECT(buffer), "delete-range",
G_CALLBACK(cb_delete_range), buffer);
g_signal_connect_after(G_OBJECT(buffer), "insert-text",
G_CALLBACK(cb_insert_text), buffer);
return
g_signal_connect(G_OBJECT(buffer), "modified-changed",
G_CALLBACK(cb_modified_changed), NULL);
}
// 还有:
static void undo_check_step_modif(GtkTextBuffer *buffer)
{
if (g_list_length(undo_list) == step_modif) {
g_signal_handlers_block_by_func(G_OBJECT(buffer), G_CALLBACK(cb_modified_changed), NULL);
gtk_text_buffer_set_modified(buffer, FALSE);
g_signal_handlers_unblock_by_func(G_OBJECT(buffer), G_CALLBACK(cb_modified_changed), NULL);
set_main_window_title_with_asterisk(FALSE);
}
}
continue...
Read More...
2007-01-08
Gtk.TextBuffer undo
Posted by
Davy Hawk
at
1/08/2007 08:12:00 PM
0
comments
2007-01-02
Glib读取文本文件
gnotepad 开始第3天,遇到些许困难做不下去了(主要是undo的实现),于是打算下一个简单点的XFCE的mousepad源代码看看(开源软件的好处 :))。
费尽千辛万苦,以最大1K/s的速度终于下载下来mousepad的源码——台湾地震断网后访问国外的网站真是困难,光打开个页面找到mousepad就花费了我1个多小时 -_-|||
哈,下载下来之后惊奇的发现我的gnotepad和mousepad的源码结构出奇的相似 :D,这也难怪,都是参照Win的notepad,以GTK+为基础做的。。。
看了之后才发现Glib中还有 g_file_get_contents() 可以获取文件内容的,这比我原来用 g_fopen + fread 好多了(我就说Glib中怎么有g_fopen怎么没得读写文件的函数呢?)
gboolean g_file_get_contents (const gchar *filename, gchar **contents, gsize *length, GError **error);
gboolean g_file_set_contents (const gchar *filename, gchar *contents, gssize length, GError **error);
[Since v2.8]
不过写文件他还是用的 fopen + fputs,和我的差不多。
之所以不用g_file_set_contents()是因为length不好确定(特别是在Muti-byte-char和ASCII混编时,用下面的更简便)
还有我想要的编码转换部分,g_convert()(不过最后还是决定不用编码转换了)
呵呵,也找到了我正需要的modify部分的代码和undo,redo的代码,还是需要研究一下。
//EOF
Read More...
Posted by
Davy Hawk
at
1/02/2007 10:45:00 PM
0
comments
2006-12-31
gnotepad
学习GTK+有一段时间了,终于下决心要做点什么。
先从简单的开始吧,做简单的有助于提升信心,循序渐进、逐步完善 好了,哈哈。
(用Linux这段时间看过太多“眼高手低,浅尝辄止”的例子了)
那么具体做什么呢?前一段时间做的LFS里X我只装了GTK+,GNOME/XFCE/KDE都没装(不想用这些大部头的东西,用了icewm),连QT我都没装的-_-... 这样有很多方便的东西就用不了了。
现在最想要的是一个小巧些的文本编辑工具,不是说vim不好,就是有时候零时性的输入一小段文字然后复制粘贴到其他地方去 老是启动个vim感觉有些大材小用了,呵呵
说做就做吧,很快一个小巧的文本输入工具就出来了(ver. 0.0.0) :D
但是现在除了输入、复制、粘贴文本,其他的什么都没的做的,以后慢慢的完善吧,今天太晚了,睡觉去了。
这个软件叫什么名字呢?于是想到了Win里面的notepad,呵呵,就叫gnotepad吧(GTK notepad)。
(管他有没有同名的,反正是我自己用——内部使用(仅供学习和交流),呵呵)
//EOF
Read More...
Posted by
Davy Hawk
at
12/31/2006 11:32:00 PM
0
comments
