Showing posts with label GTK. Show all posts
Showing posts with label GTK. Show all posts

2007-01-08

Gtk.TextBuffer undo

// 对于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-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...

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...