📄 menu.c
字号:
ipmsg_send_br_absence(udp_con,0);}voidon_mainmenu_foreground_win_item(gpointer menuitem){ dbg_out("here\n"); present_all_displayed_windows();}voidon_mainmenu_remove_win_item(gpointer menuitem){ dbg_out("here\n"); destroy_all_opened_windows();}voidon_mainmenu_quit_item (gpointer menuitem){ dbg_out("here\n"); on_initialWindow_destroy(GTK_OBJECT(menuitem),NULL);}voidon_fuzai_item_activate (gpointer user_data){ int max_index; int index; index=(int)user_data - 1; dbg_out("here:%x\n",index); if (hostinfo_refer_absent_length(&max_index)) { g_assert_not_reached(); } dbg_out("Max index:%d\n",max_index); if ( (index >= max_index) || (index < 0) ) return; hostinfo_set_absent_id(index); hostinfo_set_ipmsg_absent(TRUE); ipmsg_send_br_absence(udp_con,0); return;}voidon_fuzai_config_activate (gpointer menuitem){ GtkWidget *window; dbg_out("here:%x\n",(unsigned int)menuitem); window=internal_create_fuzai_editor(); gtk_widget_show(window);}static GtkWidget *create_fuzai_menu(void){ GtkWidget *menu; GtkWidget *new_item; GtkWidget *separator4_item; GtkWidget *config_item; gchar name[16]; gchar *title; int i,max_index=0; menu=gtk_menu_new(); if (hostinfo_refer_absent_length(&max_index)) { g_assert_not_reached(); } dbg_out("Max index:%d\n",max_index); for(i=0;i<max_index;++i) { snprintf(name,15,"fuzai%d",i); name[15]='\0'; title=NULL; hostinfo_get_absent_title(i,(const char **)&title); /* 埋め込みのindexは, NULLと区別するため, +1する */ if (title) { new_item=create_menu_item(name,title,(gpointer)(i+1),on_fuzai_item_activate); g_free(title); }else new_item=create_menu_item(name,name,(gpointer)(i+1),on_fuzai_item_activate); gtk_menu_append( GTK_MENU(menu), new_item); GLADE_HOOKUP_OBJECT(menu,new_item,name); } separator4_item=create_menu_separator("separator4"); config_item=create_stock_menu_item("fuzai_config_item",GTK_STOCK_PREFERENCES,NULL,on_fuzai_config_activate); gtk_menu_append( GTK_MENU(menu), separator4_item); gtk_menu_append( GTK_MENU(menu), config_item); GLADE_HOOKUP_OBJECT(menu,separator4_item,"separator4_item"); GLADE_HOOKUP_OBJECT(menu,config_item,"fuzai_config_item"); return menu;}GtkWidget *create_main_menu(void){ GtkWidget *menu; GtkWidget *download_item; GtkWidget *separator1_item; GtkWidget *remove_win_item; GtkWidget *foreground_win_item; GtkWidget *separator2_item; GtkWidget *preferences_item; GtkWidget *about_item; GtkWidget *log_item; GtkWidget *separator3_item; GtkWidget *absent_item; GtkWidget *attend_item; GtkWidget *separator4_item; GtkWidget *quit_item; menu=gtk_menu_new(); download_item=create_menu_item("download_item",_("DownLoadMonitor"),NULL,on_mainmenu_download_item); separator1_item=create_menu_separator("separator1"); foreground_win_item=create_menu_item("foreground_win_item",_("Foreground all message windows"),NULL,on_mainmenu_foreground_win_item); remove_win_item=create_menu_item("remove_win_item",_("Remove opend windows"),NULL,on_mainmenu_remove_win_item); separator2_item=create_menu_separator("separator2"); preferences_item=create_stock_menu_item("preferences_item",GTK_STOCK_PREFERENCES,NULL,on_mainmenu_preferences_item); about_item=create_stock_menu_item("about_item",GTK_STOCK_ABOUT,NULL,on_mainmenu_about_item); log_item=create_menu_item("log_item",_("Show Log"),NULL,on_mainmenu_log_item); separator3_item=create_menu_separator("separator3"); absent_item=create_menu_item("absent_item",_("Absence"),NULL,on_mainmenu_absent_item); gtk_menu_item_set_submenu (GTK_MENU_ITEM (absent_item), create_fuzai_menu()); if (hostinfo_is_ipmsg_absent()) attend_item=create_menu_item("attend_item",_("Attend"),NULL,on_mainmenu_attend_item); separator4_item=create_menu_separator("separator4"); quit_item=create_stock_menu_item("quit_item",GTK_STOCK_QUIT,NULL,on_mainmenu_quit_item); gtk_menu_append( GTK_MENU(menu), download_item); gtk_menu_append( GTK_MENU(menu), separator1_item); gtk_menu_append( GTK_MENU(menu), remove_win_item); gtk_menu_append( GTK_MENU(menu), foreground_win_item); gtk_menu_append( GTK_MENU(menu), separator2_item); gtk_menu_append( GTK_MENU(menu), preferences_item); gtk_menu_append( GTK_MENU(menu), about_item); gtk_menu_append( GTK_MENU(menu), log_item); gtk_menu_append( GTK_MENU(menu), separator3_item); gtk_menu_append( GTK_MENU(menu), absent_item); if (hostinfo_is_ipmsg_absent()) gtk_menu_append( GTK_MENU(menu), attend_item); gtk_menu_append( GTK_MENU(menu), separator4_item); gtk_menu_append( GTK_MENU(menu), quit_item); GLADE_HOOKUP_OBJECT(menu,download_item,"download_item"); GLADE_HOOKUP_OBJECT(menu,separator1_item,"separator1_item"); GLADE_HOOKUP_OBJECT(menu,remove_win_item,"remove_win_item"); GLADE_HOOKUP_OBJECT(menu,foreground_win_item,"foreground_win_item"); GLADE_HOOKUP_OBJECT(menu,separator1_item,"separator2_item"); GLADE_HOOKUP_OBJECT(menu,preferences_item,"preferences_item"); GLADE_HOOKUP_OBJECT(menu,about_item,"about_item"); GLADE_HOOKUP_OBJECT(menu,log_item,"log_item"); GLADE_HOOKUP_OBJECT(menu,separator3_item,"separator3_item"); GLADE_HOOKUP_OBJECT(menu,absent_item,"absent_item"); if (hostinfo_is_ipmsg_absent()) GLADE_HOOKUP_OBJECT(menu,attend_item,"attend_item"); GLADE_HOOKUP_OBJECT(menu, separator4_item," separator4_item"); GLADE_HOOKUP_OBJECT(menu,quit_item,"quit_item"); return menu;}gbooleanon_init_win_event_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data){ GtkWidget *fuzaiMenu; dbg_out("buttonWin: button press: %d\n", event->button); switch (event->button) { case 3: gtk_menu_popup(GTK_MENU(create_main_menu()), NULL, NULL, NULL, NULL, event->button, event->time); default: /* main menu */ return FALSE; break; } return TRUE;}voidipmsg_show_about_dialog(void){ GdkPixbuf *aboutDialog_icon_pixbuf; GtkWidget *aboutDialog; const gchar *authors[]={ G2IPMSG_AUTHOR, NULL }; dbg_out("here\n"); aboutDialog=create_aboutdialog (); g_assert(aboutDialog); gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(aboutDialog),(const gchar **)authors); gtk_about_dialog_set_translator_credits (GTK_ABOUT_DIALOG(aboutDialog),G2IPMSG_TRANSLATOR); gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG(aboutDialog),_("Takeharu KATO")); aboutDialog_icon_pixbuf = create_pixbuf ("g2ipmsg/ipmsg.xpm"); if (aboutDialog_icon_pixbuf) { gtk_window_set_icon (GTK_WINDOW (aboutDialog), aboutDialog_icon_pixbuf); gdk_pixbuf_unref (aboutDialog_icon_pixbuf); } gtk_widget_show (aboutDialog);}static voiddo_update_monitor_win(gpointer data,gpointer user_data) { GtkWidget *window; if (!data) return; window=GTK_WIDGET(data); update_download_view(window); return;}int download_monitor_update_state(void){#if 0 g_static_mutex_lock(&monitor_win_mutex); g_list_foreach(monitor_wins, do_update_monitor_win, NULL); g_static_mutex_unlock(&monitor_win_mutex);#endif}intdownload_monitor_add_waiter_window(GtkWidget *window){ if (!window) return -EINVAL; dbg_out("here %x\n",(unsigned int)window); g_static_mutex_lock(&monitor_win_mutex); monitor_wins=g_list_append(monitor_wins,(gpointer)window); g_static_mutex_unlock(&monitor_win_mutex); return 0;}intdownload_monitor_remove_waiter_window(GtkWidget *window){ if (!window) return -EINVAL; dbg_out("here %x\n",(unsigned int)window); g_static_mutex_lock(&monitor_win_mutex); monitor_wins=g_list_remove(monitor_wins,(gpointer)window); g_static_mutex_unlock(&monitor_win_mutex); return 0;}int show_ipmsg_log(void){ int rc; gchar *logfile; GnomeVFSMimeApplication *app; GList params; gchar *url; dbg_out("here\n"); rc=0; if (!hostinfo_refer_ipmsg_enable_log()) goto error_out; rc=-ENOMEM; if (g_path_is_absolute ((gchar *)hostinfo_refer_ipmsg_logfile())) logfile=strdup((gchar *)hostinfo_refer_ipmsg_logfile()); else { gchar *current_dir; current_dir=g_get_current_dir(); if (!current_dir) goto error_out; logfile=g_build_filename (current_dir,hostinfo_refer_ipmsg_logfile(),NULL); g_free(current_dir); dbg_out("Absolute path:%s\n",logfile); } if (!logfile) goto error_out; url=gnome_vfs_get_uri_from_local_path(logfile); if (!url) goto free_log_file; params.data = (char *) url; params.prev = NULL; params.next = NULL; rc=-ENOENT; app=gnome_vfs_mime_get_default_application("text/plain"); if (!app) goto free_url; gnome_vfs_mime_application_launch(app, ¶ms); gnome_vfs_mime_application_free (app); rc=0; free_url: g_free(url); free_log_file: g_free(logfile); error_out: return rc;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -