📄 uicommon.c
字号:
#ifdef HAVE_CONFIG_H# include <config.h>#endif#include <gnome.h>#include <glib.h>#include <gconf/gconf-client.h>#include "callbacks.h"#include "interface.h"#include "support.h"#include "common.h"static intrelease_user_entry(GtkTreeView *view) { GtkTreePath *path; GtkTreeIter iter; GtkTreeModel *model; model = gtk_tree_view_get_model(view); if (!model) return -EINVAL; path=gtk_tree_path_new_first (); g_assert(path); if (gtk_tree_model_get_iter(model,&iter,path)) { while(gtk_list_store_remove(GTK_LIST_STORE(model), &iter)) dbg_out("Remove OK\n"); } gtk_tree_path_free (path); return 0;}static voidon_messageUserTree_user_clicked(GtkTreeViewColumn *treeviewcolumn, gpointer user_data) { dbg_out("Here"); g_assert(treeviewcolumn); gtk_tree_view_column_set_sort_column_id(treeviewcolumn,0);}static voidon_messageUserTree_group_clicked(GtkTreeViewColumn *treeviewcolumn, gpointer user_data) { dbg_out("Here"); g_assert(treeviewcolumn); gtk_tree_view_column_set_sort_column_id(treeviewcolumn,1);}static voidon_messageUserTree_host_clicked(GtkTreeViewColumn *treeviewcolumn, gpointer user_data) { dbg_out("Here"); g_assert(treeviewcolumn); gtk_tree_view_column_set_sort_column_id(treeviewcolumn,2);}static voidon_messageUserTree_ipaddr_clicked(GtkTreeViewColumn *treeviewcolumn, gpointer user_data) { dbg_out("Here"); g_assert(treeviewcolumn); gtk_tree_view_column_set_sort_column_id(treeviewcolumn,3);}static voidon_messageUserTree_logon_clicked(GtkTreeViewColumn *treeviewcolumn, gpointer user_data) { dbg_out("Here"); g_assert(treeviewcolumn); gtk_tree_view_column_set_sort_column_id(treeviewcolumn,4);}static voidsetup_message_tree_view(GtkWidget *view) { GtkTreeViewColumn *col; GtkCellRenderer *renderer; /* * タイトル設定 */ /* --- Column #1 --- */ col = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(col, _("User")); /* pack tree view column into tree view */ gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); renderer = gtk_cell_renderer_text_new(); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start(col, renderer, TRUE); /* connect 'text' property of the cell renderer to * model column that contains the first name */ gtk_tree_view_column_add_attribute(col, renderer, "text", 0); gtk_tree_view_column_set_resizable (col,TRUE); gtk_tree_view_column_set_clickable(col,TRUE); g_signal_connect ((gpointer) col, "clicked", G_CALLBACK (on_messageUserTree_user_clicked), NULL); /* --- Column #2 --- */ col = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(col, _("Group")); /* pack tree view column into tree view */ gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); renderer = gtk_cell_renderer_text_new(); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start(col, renderer, TRUE); /* connect 'text' property of the cell renderer to * model column that contains the first name */ gtk_tree_view_column_add_attribute(col, renderer, "text", 1); gtk_tree_view_column_set_resizable (col,TRUE); gtk_tree_view_column_set_clickable(col,TRUE); g_signal_connect ((gpointer) col, "clicked", G_CALLBACK (on_messageUserTree_group_clicked), NULL); /* --- Column #3 --- */ col = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(col, _("Host")); /* pack tree view column into tree view */ gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); renderer = gtk_cell_renderer_text_new(); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start(col, renderer, TRUE); /* connect 'text' property of the cell renderer to * model column that contains the first name */ gtk_tree_view_column_add_attribute(col, renderer, "text", 2); gtk_tree_view_column_set_resizable (col,TRUE); gtk_tree_view_column_set_clickable(col,TRUE); g_signal_connect ((gpointer) col, "clicked", G_CALLBACK (on_messageUserTree_host_clicked), NULL); /* --- Column #4 --- */ col = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(col, _("IP Address")); /* pack tree view column into tree view */ gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); renderer = gtk_cell_renderer_text_new(); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start(col, renderer, TRUE); /* connect 'text' property of the cell renderer to * model column that contains the first name */ gtk_tree_view_column_add_attribute(col, renderer, "text", 3); gtk_tree_view_column_set_resizable (col,TRUE); gtk_tree_view_column_set_clickable(col,TRUE); g_signal_connect ((gpointer) col, "clicked", G_CALLBACK (on_messageUserTree_ipaddr_clicked), NULL); /* --- Column #5 --- */ col = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(col, _("LogOn")); /* pack tree view column into tree view */ gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); renderer = gtk_cell_renderer_text_new(); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start(col, renderer, TRUE); /* connect 'text' property of the cell renderer to * model column that contains the first name */ gtk_tree_view_column_add_attribute(col, renderer, "text", 4); gtk_tree_view_column_set_resizable (col,TRUE); gtk_tree_view_column_set_clickable(col,TRUE); g_signal_connect ((gpointer) col, "clicked", G_CALLBACK (on_messageUserTree_logon_clicked), NULL);}voidupdate_user_entry(GList *top,GtkWidget *view) { GtkListStore *liststore; GtkTreeIter toplevel; GtkWidget *usersEntry; userdb_t *current_user; int i; int users_count=0; gchar num_str[32]; if ( (!top) || (!view) ) return; if (!gtk_tree_view_get_column (GTK_TREE_VIEW(view),4)) setup_message_tree_view(view); release_user_entry(GTK_TREE_VIEW(view)); liststore = gtk_list_store_new(5, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); for(i=0;(current_user=g_list_nth_data(top,i));++i) { g_assert(current_user); dbg_out("Update\n"); dbg_out("NickName: %s\n",current_user->nickname); dbg_out("Group: %s\n",current_user->group); dbg_out("User: %s\n",current_user->user); dbg_out("Host: %s\n",current_user->host); dbg_out("IP Addr: %s\n",current_user->ipaddr); /* Append a top level row and leave it empty */ gtk_list_store_append(liststore, &toplevel); gtk_list_store_set(liststore, &toplevel, 0, current_user->nickname, 1,current_user->group, 2,current_user->host, 3,current_user->ipaddr, 4,current_user->user, -1); ++users_count; fflush(stdout); } gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(liststore)); g_object_unref(liststore); /* destroy model automatically with view */ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(view)), GTK_SELECTION_MULTIPLE ); /* * ユーザ数更新 */ usersEntry=lookup_widget(GTK_WIDGET(view),"messageWinUsersEntry"); g_assert(usersEntry); snprintf(num_str,31,"%d",users_count); gtk_entry_set_text(GTK_ENTRY(usersEntry), num_str); return;}voidipmsg_update_ui(void){ while (gtk_events_pending ()) gtk_main_iteration ();}voidipmsg_update_ui_user_list(void){ userdb_invalidate_userdb(); ipmsg_send_br_entry(udp_con,0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -