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

📄 menu.c

📁 飞鸽传书的linux源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <string.h>#include <stdio.h>#include <bonobo.h>#include <gnome.h>#include <glib.h>#include <libgnomevfs/gnome-vfs.h>#include <libgnomevfs/gnome-vfs-utils.h>#include <libgnomevfs/gnome-vfs-mime-handlers.h>#include "callbacks.h"#include "interface.h"#include "support.h"#include "common.h"#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \  g_object_set_data (G_OBJECT (component), name, widget)#define GLADE_HOOKUP_OBJECT(component,widget,name) \  g_object_set_data_full (G_OBJECT (component), name, \    gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)static GList *monitor_wins=NULL;GStaticMutex monitor_win_mutex = G_STATIC_MUTEX_INIT;static GtkWidget *create_menu_item(const char *name,const char *label,gpointer data,		 void (*menu_item_callback_function)		 (gpointer user_data)){  GtkWidget *new_item;  int index=(int)data;  dbg_out("Create item with:%d\n",index);  new_item=gtk_menu_item_new_with_label(label);  if (menu_item_callback_function){    dbg_out("connect:data %x\n",(unsigned int)data);    if (data)      gtk_signal_connect_object( (gpointer)new_item, "activate",				 GTK_SIGNAL_FUNC(menu_item_callback_function), 				 data);    else      gtk_signal_connect_object( (gpointer)new_item, "activate",				 GTK_SIGNAL_FUNC(menu_item_callback_function), 				 (gpointer )new_item);  }  gtk_widget_show(new_item);  return new_item;}static GtkWidget *create_stock_menu_item(const char *name,const gchar *stock_id,gpointer data,		 void (*menu_item_callback_function)		 (gpointer user_data)){  GtkWidget *new_item;  new_item=gtk_image_menu_item_new_from_stock(stock_id,NULL);  if (menu_item_callback_function) {    if (data)      gtk_signal_connect_object( GTK_OBJECT(new_item), "activate",				 GTK_SIGNAL_FUNC(menu_item_callback_function), 				 data);    else      gtk_signal_connect_object( GTK_OBJECT(new_item), "activate",				 GTK_SIGNAL_FUNC(menu_item_callback_function), 				 new_item);  }  gtk_widget_show(new_item);  return new_item;}static GtkWidget *create_menu_separator(const char *name){  GtkWidget *new_item;  new_item=gtk_separator_menu_item_new ();  gtk_widget_show(new_item);  return new_item;}static voidonDownloadMonitorSelectionChanged (GtkTreeSelection *sel, GtkListStore *liststore) {  update_download_monitor_button(sel);}static voidrelease_download_info(gpointer data, gpointer user_data){  download_monitor_entry_t *download_info;  dbg_out("here\n");  if (!data)    return;  download_info=data;  dbg_out("Release:%ld\n",download_info->pkt_no);  release_download_monitor_entry(download_info);  }voidupdate_download_monitor_button(GtkTreeSelection *sel) {  GtkTreeIter  selected_row;  GtkWidget    *view;  GtkWidget    *remove_btn;  view=GTK_WIDGET(gtk_tree_selection_get_tree_view(sel));  g_assert(view);  remove_btn=lookup_widget(GTK_WIDGET(view),"deleteBtn");  g_assert(remove_btn);  g_assert(gtk_tree_selection_get_mode(sel) == GTK_SELECTION_SINGLE);    if (gtk_tree_selection_get_selected(sel, NULL, &selected_row))    {      gtk_widget_set_sensitive(remove_btn, TRUE);    }  else    {      gtk_widget_set_sensitive(remove_btn, FALSE);    }}voidsetup_download_window(GtkWidget *window){  GtkWidget *view;  GtkListStore        *liststore;  GtkTreeViewColumn   *col;  GtkCellRenderer     *renderer;  GtkTreeSelection    *sel;  dbg_out("here\n");  g_assert(window);  view=lookup_widget(GTK_WIDGET(window),"treeview5");  g_assert(view);  dbg_out("Create new monitor\n");  liststore = gtk_list_store_new(4, 				 G_TYPE_STRING,				 G_TYPE_UINT,				 G_TYPE_STRING,				 G_TYPE_INT);  g_assert(liststore);  gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(liststore));    /*   * タイトル設定   */  /* --- Column #1 --- */  col = gtk_tree_view_column_new();  gtk_tree_view_column_set_title(col, _("FileNames"));  /* 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);  /* --- Column #2 --- */  col = gtk_tree_view_column_new();  gtk_tree_view_column_set_title(col, _("Remains"));  /* 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);  /* --- Column #3 --- */  col = gtk_tree_view_column_new();  gtk_tree_view_column_set_title(col, _("Receivers"));  /* 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);  sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(view));  gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);  g_signal_connect(sel, "changed", 		   G_CALLBACK(onDownloadMonitorSelectionChanged),		   liststore);}void update_download_view(GtkWidget *window) {  GList *list=NULL;  GList *node;  GtkWidget *view;  GtkTreeModel *model;  GtkTreeIter iter;  GtkTreeIter chk_iter;  gboolean valid;  download_monitor_entry_t *download_info;  dbg_out("here\n");  g_assert(window);  view=lookup_widget(GTK_WIDGET(window),"treeview5");  g_assert(view);  model = gtk_tree_view_get_model(GTK_TREE_VIEW(view));  if (gtk_tree_model_get_iter_first(model,&iter)) {    gtk_list_store_clear(GTK_LIST_STORE(model));  }  list=get_download_monitor_info();  for(node=g_list_first (list);      (node);      node=g_list_next(node)) {    if (!(list->data))      continue;        download_info=(download_monitor_entry_t *)(node->data);    gtk_list_store_append(GTK_LIST_STORE(model), &iter);    gtk_list_store_set(GTK_LIST_STORE(model),		       &iter,		       0,download_info->filenames,		       1,download_info->status,		       2,download_info->username,		       3,download_info->pkt_no,		       -1);  }   g_list_foreach(list,release_download_info,NULL);  g_list_free(list);}voidon_create_download_monitor(void) {  GtkWidget *window;  dbg_out("here\n");  g_static_mutex_lock(&monitor_win_mutex);  if (g_list_length(monitor_wins)>0) {    GList *node; /* FIXME */    node=g_list_first (monitor_wins);    g_assert(node->data);    gtk_window_present (GTK_WINDOW(node->data));    g_static_mutex_unlock(&monitor_win_mutex);    return;   }      window=create_downloadMonitor();  g_assert(window);  setup_download_window(window);  g_static_mutex_unlock(&monitor_win_mutex);  download_monitor_add_waiter_window(window);  gtk_widget_show(window);}voidon_mainmenu_download_item(gpointer menuitem){  on_create_download_monitor();}voidon_mainmenu_preferences_item(gpointer menuitem){  dbg_out("here\n");  on_preferences1_activate(menuitem,NULL);}voidon_mainmenu_about_item(gpointer menuitem){  dbg_out("here\n");  ipmsg_show_about_dialog();}voidon_mainmenu_log_item(gpointer menuitem){  dbg_out("here\n");  show_ipmsg_log();}voidon_mainmenu_absent_item(gpointer menuitem){  dbg_out("here\n");}voidon_mainmenu_attend_item(gpointer menuitem){  dbg_out("here\n");  hostinfo_set_ipmsg_absent(FALSE);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -