当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 麻烦帮忙调式一下一个gtk程序!谢谢!
帖子发表于 : 2008-11-09 15:07 

注册: 2008-02-20 11:46
帖子: 84
送出感谢: 0 次
接收感谢: 0 次
大伙帮忙调式一下程序,错误在show()(小弟猜的),我怎样该都错!!郁闷!
附:用glade3华的界面&&code

#include <gtk/gtk.h>
#include <glade/glade.h>
void delete_event( GtkWidget *widget,GtkWidget *dialog );
typedef struct{
GladeXML *xml;
GtkWidget *textview;
GtkTextBuffer *buffer;
char *str;
GtkWidget *statusbar;
GtkWidget *dialog;
}app;
void destory(GtkWidget *window,gpointer data)
{
gtk_main_quit();
}
void update_statusbar(GtkTextBuffer *buffer,GtkStatusbar *statusbar)
{
gchar *msg;
gint row,col;
GtkTextIter iter;
gtk_statusbar_pop(statusbar, 0);

gtk_text_buffer_get_iter_at_mark(buffer,&iter, gtk_text_buffer_get_insert(buffer));

row = gtk_text_iter_get_line(&iter);
col = gtk_text_iter_get_line_offset(&iter);

msg = g_strdup_printf("Col %d Ln %d", col+1, row+1);

gtk_statusbar_push(statusbar, 0, msg);

g_free(msg);
}
static void mark_set_callback(GtkTextBuffer *buffer,const GtkTextIter *new_location, GtkTextMark *mark,
gpointer data)
{
update_statusbar(buffer, GTK_STATUSBAR(data));
}


void insert(GtkWidget *meun,app *q)
{

GtkTextIter start,end;
//GtkTextBuffer *buffer;
q->buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(q->textview));
gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(q->buffer),&start,&end);//获得buf的开始&结束的位置
gtk_text_buffer_insert(GTK_TEXT_BUFFER(q->buffer),&end,q->str,-1);//在最后插入buf的所有的内容
}
void show(GtkWidget *widget,app *p)
{
p->dialog=glade_xml_get_widget(p->xml,"colorselectiondialog1");//颜色dialog
if(!p->dialog)
{
g_print("error in the fun of show()\n");
exit(1);
}
gtk_widget_show(p->dialog);

}
void delete_event( GtkWidget *widget,GtkWidget *dialog )
{
gtk_widget_destroy(dialog);
g_print("safe in the delete_event()\n");
if(!dialog)
{
g_print("error in the close\n");
exit(1);
}

}


int main(int argc, char *argv[]) {

GtkWidget *meun_insert;
GtkWidget *exit_meun;
GtkWidget *color;
GtkWidget *button;
GtkWidget *meun;
app *p;
p=g_slice_new(app);
gtk_init(&argc, &argv);
p->str="i will be success\n";
p->xml = glade_xml_new("see.glade", NULL, NULL);
p->textview=glade_xml_get_widget(p->xml,"textview1");
meun_insert=glade_xml_get_widget(p->xml,"insert");
p->buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(p->textview));
g_signal_connect(G_OBJECT (meun_insert), "activate",G_CALLBACK (insert),p);
exit_meun=glade_xml_get_widget(p->xml,"exit");
g_signal_connect(G_OBJECT (exit_meun), "clicked",G_CALLBACK (destory),NULL);
p->statusbar=glade_xml_get_widget(p->xml,"statusbar");
g_signal_connect(p->buffer, "changed",G_CALLBACK(update_statusbar), p->statusbar);
g_signal_connect_object(p->buffer, "mark_set",G_CALLBACK(mark_set_callback), p->statusbar, 0);
//以下为颜色选择dialog的代码
color=glade_xml_get_widget(p->xml,"chang_color");//视图->颜色菜单
p->dialog=glade_xml_get_widget(p->xml,"colorselectiondialog1");//颜色dialog

button=glade_xml_get_widget(p->xml,"colorsel-ok_button1");//dialog的确定按钮
g_signal_connect(G_OBJECT (color), "activate",G_CALLBACK(show),p);//call color dialog
//-------------
g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (delete_event), p->dialog);//close color dialog(beta)


gtk_main();
g_slice_free (app, p);
return 0;
}


附件:
文件注释: 这是界面
see.glade.zip [1.69 KiB]
被下载 23 次
文件注释: 源码
chmsee.c.zip [1.33 KiB]
被下载 26 次
页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译