大伙帮忙调式一下程序,错误在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;
}
麻烦帮忙调式一下一个gtk程序!谢谢!
-
- 帖子: 84
- 注册时间: 2008-02-20 11:46
- 联系:
麻烦帮忙调式一下一个gtk程序!谢谢!
- 附件
-
- see.glade.zip
- 这是界面
- (1.69 KiB) 已下载 71 次
-
- chmsee.c.zip
- 源码
- (1.33 KiB) 已下载 84 次