⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uicommon.c

📁 飞鸽传书的linux源代码
💻 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 + -