📄 list.cc
字号:
switch(act-100){ case MM_QUEUE_NQ: D4X_QVT->create_init(); break; case MM_QUEUE_NSQ: D4X_QVT->create_init(1); break; case MM_QUEUE_REMOVE: D4X_QVT->delete_queue(); break; case MM_QUEUE_PROP: D4X_QVT->prefs_init(); break; };};void init_main_menu() {#include "pixmaps/logmini.xpm"#include "pixmaps/stopmini.xpm"#include "pixmaps/delmini.xpm"#include "pixmaps/runmini.xpm" d4x_load_accelerators(); GtkItemFactoryEntry menu_items[] = { {_(main_menu_inames[MM_FILE]), (gchar *)NULL, (GtkItemFactoryCallback)NULL, 0, "<Branch>"}, {_(main_menu_inames[MM_FILE_SAVE]), main_menu_kb[MM_FILE_SAVE], (GtkItemFactoryCallback)init_save_list, 0, (gchar *)NULL}, {_(main_menu_inames[MM_FILE_LOAD]), main_menu_kb[MM_FILE_LOAD], (GtkItemFactoryCallback)init_load_list, 0, (gchar *)NULL}, {_(main_menu_inames[MM_FILE_TXT]), main_menu_kb[MM_FILE_TXT], (GtkItemFactoryCallback)init_load_txt_list, 0, (gchar *)NULL}, {_(main_menu_inames[MM_FILE_SEP]), (gchar *)NULL, (GtkItemFactoryCallback)NULL, 0, "<Separator>"}, {_(main_menu_inames[MM_FILE_NEW]), main_menu_kb[MM_FILE_NEW], (GtkItemFactoryCallback)init_add_window, 0, (gchar *)NULL}, {_(main_menu_inames[MM_FILE_PASTE]), main_menu_kb[MM_FILE_PASTE], (GtkItemFactoryCallback)init_add_clipboard_window, 0, (gchar *)NULL}, {_(main_menu_inames[MM_FILE_AUTO]), main_menu_kb[MM_FILE_AUTO], (GtkItemFactoryCallback)d4x_automated_add, 0, (gchar *)NULL}, {_(main_menu_inames[MM_FILE_SEP]), (gchar *)NULL, (GtkItemFactoryCallback)NULL, 0, "<Separator>"}, {_(main_menu_inames[MM_FILE_EXIT]), main_menu_kb[MM_FILE_EXIT], (GtkItemFactoryCallback)ask_exit, 0, (gchar *)NULL}, {_(main_menu_inames[MM_DOWNLOAD]), (gchar *)NULL, (GtkItemFactoryCallback)NULL, 0, "<Branch>"}, {_(main_menu_inames[MM_DOWNLOAD_LOG]), main_menu_kb[MM_DOWNLOAD_LOG], (GtkItemFactoryCallback)mmenu_open_logs, 100+MM_DOWNLOAD_LOG, "<ImageItem>",logmini_xpm}, {_(main_menu_inames[MM_DOWNLOAD_STOP]), main_menu_kb[MM_DOWNLOAD_STOP], (GtkItemFactoryCallback)stop_downloads, 100+MM_DOWNLOAD_STOP,"<ImageItem>",stopmini_xpm}, {_(main_menu_inames[MM_DOWNLOAD_EDIT]), main_menu_kb[MM_DOWNLOAD_EDIT], (GtkItemFactoryCallback)open_edit_for_selected, 100+MM_DOWNLOAD_EDIT, (gchar *)NULL}, {_(main_menu_inames[MM_DOWNLOAD_DEL]), main_menu_kb[MM_DOWNLOAD_DEL], (GtkItemFactoryCallback)ask_delete_download, 100+MM_DOWNLOAD_DEL, "<ImageItem>",delmini_xpm}, {_(main_menu_inames[MM_DOWNLOAD_RUN]), main_menu_kb[MM_DOWNLOAD_RUN], (GtkItemFactoryCallback)continue_downloads, 100+MM_DOWNLOAD_RUN, "<ImageItem>",runmini_xpm}, {_(main_menu_inames[MM_DOWNLOAD_SEP]),(gchar *)NULL, (GtkItemFactoryCallback)NULL, 0, "<Separator>"}, {_(main_menu_inames[MM_DOWNLOAD_DEL_C]),main_menu_kb[MM_DOWNLOAD_DEL_C], (GtkItemFactoryCallback)ask_delete_completed_downloads, 0, (gchar *)NULL}, {_(main_menu_inames[MM_DOWNLOAD_DEL_F]),main_menu_kb[MM_DOWNLOAD_DEL_F], (GtkItemFactoryCallback)ask_delete_fataled_downloads, 0, (gchar *)NULL}, {_(main_menu_inames[MM_DOWNLOAD_RERUN]),main_menu_kb[MM_DOWNLOAD_RERUN], (GtkItemFactoryCallback)_rerun_failed_downloads, 0, (gchar *)NULL}, {_(main_menu_inames[MM_DOWNLOAD_SEP]),(gchar *)NULL, (GtkItemFactoryCallback)NULL, 0, "<Separator>"}, {_(main_menu_inames[MM_DOWNLOAD_PROTECT]),main_menu_kb[MM_DOWNLOAD_PROTECT], (GtkItemFactoryCallback)lm_inv_protect_flag, 100+MM_DOWNLOAD_PROTECT, (gchar *)NULL}, {_(main_menu_inames[MM_DOWNLOAD_SEP]),(gchar *)NULL, (GtkItemFactoryCallback)NULL, 0, "<Separator>"}, {_(main_menu_inames[MM_DOWNLOAD_UNSELECT_ALL]),main_menu_kb[MM_DOWNLOAD_UNSELECT_ALL], (GtkItemFactoryCallback)mmenu_unselect_all, 100+MM_DOWNLOAD_UNSELECT_ALL, (gchar *)NULL}, {_(main_menu_inames[MM_DOWNLOAD_SELECT_ALL]),main_menu_kb[MM_DOWNLOAD_SELECT_ALL], (GtkItemFactoryCallback)mmenu_select_all, 100+MM_DOWNLOAD_SELECT_ALL, (gchar *)NULL}, {_(main_menu_inames[MM_DOWNLOAD_INVERT]),main_menu_kb[MM_DOWNLOAD_INVERT], (GtkItemFactoryCallback)mmenu_invert_selection, 100+MM_DOWNLOAD_INVERT, (gchar *)NULL}, {_(main_menu_inames[MM_QUEUE]), (gchar *)NULL, (GtkItemFactoryCallback)NULL, 0, "<Branch>"}, {_(main_menu_inames[MM_QUEUE_NQ]),main_menu_kb[MM_QUEUE_NQ], (GtkItemFactoryCallback)_mm_queue_menu_, 100+MM_QUEUE_NQ, (gchar *)NULL}, {_(main_menu_inames[MM_QUEUE_NSQ]),main_menu_kb[MM_QUEUE_NSQ], (GtkItemFactoryCallback)_mm_queue_menu_, 100+MM_QUEUE_NSQ, (gchar *)NULL}, {_(main_menu_inames[MM_QUEUE_REMOVE]),main_menu_kb[MM_QUEUE_REMOVE], (GtkItemFactoryCallback)_mm_queue_menu_, 100+MM_QUEUE_REMOVE, (gchar *)NULL}, {_(main_menu_inames[MM_QUEUE_PROP]),main_menu_kb[MM_QUEUE_PROP], (GtkItemFactoryCallback)_mm_queue_menu_, 100+MM_QUEUE_PROP, (gchar *)NULL}, {_(main_menu_inames[MM_OPTIONS]), (gchar *)NULL, (GtkItemFactoryCallback)NULL, 0, "<Branch>"}, {_(main_menu_inames[MM_OPTIONS_SCHEDULER]),main_menu_kb[MM_OPTIONS_SCHEDULER], (GtkItemFactoryCallback)d4x_scheduler_init, 0, (gchar *)NULL}, {_(main_menu_inames[MM_OPTIONS_PASSWORDS]),main_menu_kb[MM_OPTIONS_PASSWORDS], (GtkItemFactoryCallback)open_passwords_window, 0, (gchar *)NULL}, {_(main_menu_inames[MM_OPTIONS_COMMON]),main_menu_kb[MM_OPTIONS_COMMON], (GtkItemFactoryCallback)d4x_prefs_init, 0, (gchar *)NULL}, {_(main_menu_inames[MM_OPTIONS_FILTERS]),main_menu_kb[MM_OPTIONS_FILTERS], (GtkItemFactoryCallback)d4x_filters_window_init, 0, (gchar *)NULL}, {_(main_menu_inames[MM_OPTIONS_SPEED]), (gchar*)NULL, (GtkItemFactoryCallback)NULL, 0, "<Branch>"}, {_(main_menu_inames[MM_OPTIONS_SPEED_1]),main_menu_kb[MM_OPTIONS_SPEED_1], (GtkItemFactoryCallback)main_menu_speed_calback, 1, "<RadioItem>"}, {_(main_menu_inames[MM_OPTIONS_SPEED_2]),main_menu_kb[MM_OPTIONS_SPEED_2], (GtkItemFactoryCallback)main_menu_speed_calback, 2, _(main_menu_inames[MM_OPTIONS_SPEED_1])}, {_(main_menu_inames[MM_OPTIONS_SPEED_3]),main_menu_kb[MM_OPTIONS_SPEED_3], (GtkItemFactoryCallback)main_menu_speed_calback, 3, _(main_menu_inames[MM_OPTIONS_SPEED_2])}, {_(main_menu_inames[MM_OPTIONS_BUTTONS]),main_menu_kb[MM_OPTIONS_BUTTONS], (GtkItemFactoryCallback)buttons_configure, 0, (gchar *)NULL}, {_(main_menu_inames[MM_HELP]), (gchar *)NULL, (GtkItemFactoryCallback)NULL, 0, "<LastBranch>"}, {_(main_menu_inames[MM_HELP_ABOUT]), main_menu_kb[MM_HELP_ABOUT], (GtkItemFactoryCallback)init_about_window, 0, (gchar *)NULL}, }; int nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); GtkAccelGroup *accel_group = gtk_accel_group_new(); main_menu_item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>",accel_group); gtk_item_factory_create_items(main_menu_item_factory, nmenu_items, menu_items, NULL); init_load_accelerators(); MainMenu= gtk_item_factory_get_widget(main_menu_item_factory, "<main>"); _gtk_accel_group_attach(accel_group,G_OBJECT(MainWindow)); g_signal_connect(G_OBJECT (MainMenu), "button_press_event", G_CALLBACK (main_menu_prepare), NULL); /* to avoid losing accelerators key */ g_signal_connect(G_OBJECT (MainMenu), "deactivate", G_CALLBACK (main_menu_enable_all), NULL); main_menu_speed_prepare(); for (int i=0;i<=MM_HELP_ABOUT;i++) if (main_menu_kb[i]){ delete[] main_menu_kb[i]; main_menu_kb[i]=NULL; };};void main_menu_completed_empty(){ GtkWidget *menu_item; menu_item=gtk_item_factory_get_widget(main_menu_item_factory,_(main_menu_inames[MM_DOWNLOAD_DEL_C])); if (menu_item) gtk_widget_set_sensitive(menu_item,FALSE); gtk_widget_set_sensitive(ListMenuArray[LM_DELC],FALSE); gtk_widget_set_sensitive(buttons_array[BUTTON_DEL_COMPLETED],FALSE); dnd_trash_set_del_completed(FALSE);};void main_menu_completed_nonempty(){ GtkWidget *menu_item; menu_item=gtk_item_factory_get_widget(main_menu_item_factory,_(main_menu_inames[MM_DOWNLOAD_DEL_C])); if (menu_item) gtk_widget_set_sensitive(menu_item,TRUE); gtk_widget_set_sensitive(ListMenuArray[LM_DELC],TRUE); gtk_widget_set_sensitive(buttons_array[BUTTON_DEL_COMPLETED],TRUE); dnd_trash_set_del_completed(TRUE);};void main_menu_failed_empty(){ GtkWidget *menu_item; menu_item=gtk_item_factory_get_widget(main_menu_item_factory,_(main_menu_inames[MM_DOWNLOAD_DEL_F])); if (menu_item) gtk_widget_set_sensitive(menu_item,FALSE); menu_item=gtk_item_factory_get_widget(main_menu_item_factory,_(main_menu_inames[MM_DOWNLOAD_RERUN])); if (menu_item) gtk_widget_set_sensitive(menu_item,FALSE); gtk_widget_set_sensitive(ListMenuArray[LM_DELF],FALSE);};void main_menu_failed_nonempty(){ GtkWidget *menu_item; menu_item=gtk_item_factory_get_widget(main_menu_item_factory,_(main_menu_inames[MM_DOWNLOAD_DEL_F])); if (menu_item) gtk_widget_set_sensitive(menu_item,TRUE); menu_item=gtk_item_factory_get_widget(main_menu_item_factory,_(main_menu_inames[MM_DOWNLOAD_RERUN])); if (menu_item) gtk_widget_set_sensitive(menu_item,TRUE); gtk_widget_set_sensitive(ListMenuArray[LM_DELF],TRUE);};gint main_menu_prepare(){ GtkWidget *menu_item; if (D4X_QUEUE->qv.last_selected){ for (int i=MM_DOWNLOAD_LOG;i<=MM_DOWNLOAD_RUN;i++){ menu_item=gtk_item_factory_get_item_by_action(main_menu_item_factory, i+100); if (menu_item) gtk_widget_set_sensitive(menu_item,TRUE); }; menu_item=gtk_item_factory_get_item_by_action(main_menu_item_factory, MM_DOWNLOAD_PROTECT+100); if (menu_item) gtk_widget_set_sensitive(menu_item,TRUE); }else{ for (int i=MM_DOWNLOAD_LOG;i<=MM_DOWNLOAD_RUN;i++){ menu_item=gtk_item_factory_get_item_by_action(main_menu_item_factory, i+100); if (menu_item) gtk_widget_set_sensitive(menu_item,FALSE); }; menu_item=gtk_item_factory_get_item_by_action(main_menu_item_factory, MM_DOWNLOAD_PROTECT+100); if (menu_item) gtk_widget_set_sensitive(menu_item,FALSE); }; if (D4X_QUEUE->qv.rows()==0){ for (int i=MM_DOWNLOAD_UNSELECT_ALL;i<=MM_DOWNLOAD_INVERT;i++){ menu_item=gtk_item_factory_get_item_by_action(main_menu_item_factory, i+100); if (menu_item) gtk_widget_set_sensitive(menu_item,FALSE); }; }else{ for (int i=MM_DOWNLOAD_UNSELECT_ALL;i<=MM_DOWNLOAD_INVERT;i++){ menu_item=gtk_item_factory_get_item_by_action(main_menu_item_factory, i+100); if (menu_item) gtk_widget_set_sensitive(menu_item,TRUE); }; }; return FALSE;};static int _fd_kb_=-1;static void d4x_menuitem_foreach(GtkWidget *widget,gpointer data){ if (GTK_IS_ACCEL_LABEL (widget) && (GTK_ACCEL_LABEL (widget))->accel_string){ char *s=unparse_percents(skip_spaces((GTK_ACCEL_LABEL (widget))->accel_string)); f_wstr(_fd_kb_,s); delete[] s; };};static void d4x_save_kb(int menu){ char *name=copy_without_underscore(_(main_menu_inames[menu])); GtkWidget *menu_item=gtk_item_factory_get_widget(main_menu_item_factory,name); delete[] name; if (menu_item){ f_wstr(_fd_kb_,"\t<"); f_wstr(_fd_kb_,main_menu_kbnames[menu]); f_wchar(_fd_kb_,'>'); gtk_container_foreach(GTK_CONTAINER (menu_item),d4x_menuitem_foreach,NULL); f_wstr(_fd_kb_,"</"); f_wstr(_fd_kb_,main_menu_kbnames[menu]); f_wstr(_fd_kb_,">\n"); };};static void d4x_lap(tQueue *q,char *menu,int name){ char *s=sum_strings(menu," ",main_menu_kbnames[name],NULL); d4xXmlObject *xml=d4x_xml_find_obj(q,s); delete[] s; if (xml){ s=xml->value.get(); if (s && strlen(s)){ int alt=0,ctrl=0,shift=0; if (strstr(s,"Ctrl+")) ctrl=1; if (strstr(s,"Alt+")) alt=1; if (strstr(s,"Shft+")) shift=1; char c[2]={0,0}; c[0]=s[strlen(s)-1]; main_menu_kb[name]=sum_strings(alt?"<alt>":"",ctrl?"<control>":"",shift?"<shift>":"",c,NULL); }; };};void d4x_load_accelerators(){ for (int i=0;i<=MM_HELP_ABOUT;i++) main_menu_kb[i]=NULL; char *path=sum_strings(HOME_VARIABLE,"/",CFG_DIR,"/keybinds.xml",NULL); tQueue *q=d4x_xml_parse_file(path); delete[] path; if (q==NULL){ main_menu_kb[MM_FILE_SAVE]=copy_string("<control>S"); main_menu_kb[MM_FILE_LOAD]=copy_string("<control>L"); main_menu_kb[MM_FILE_TXT]=copy_string("<control><alt>L"); main_menu_kb[MM_FILE_NEW]=copy_string("<control>N"); main_menu_kb[MM_FILE_PASTE]=copy_string("<control>P"); main_menu_kb[MM_FILE_AUTO]=copy_string("<control><alt>A"); main_menu_kb[MM_FILE_EXIT]=copy_string("<alt>X"); main_menu_kb[MM_DOWNLOAD_STOP]=copy_string("<alt>S"); main_menu_kb[MM_DOWNLOAD_EDIT]=copy_string("<alt>E"); main_menu_kb[MM_DOWNLOAD_DEL]=copy_string("<alt>C"); main_menu_kb[MM_DOWNLOAD_RUN]=copy_string("<alt>A"); main_menu_kb[MM_DOWNLOAD_PROTECT]=copy_string("<alt><control>P"); main_menu_kb[MM_OPTIONS_COMMON]=copy_string("<control>C"); main_menu_kb[MM_OPTIONS_FILTERS]=copy_string("<control>F"); }else{ d4x_lap(q,"file",MM_FILE_SAVE); d4x_lap(q,"file",MM_FILE_LOAD); d4x_lap(q,"file",MM_FILE_TXT); d4x_lap(q,"file",MM_FILE_NEW); d4x_lap(q,"file",MM_FILE_PASTE); d4x_lap(q,"file",MM_FILE_AUTO); d4x_lap(q,"file",MM_FILE_EXIT); d4x_lap(q,"download",MM_DOWNLOAD_LOG); d4x_lap(q,"download",MM_DOWNLOAD_STOP); d4x_lap(q,"download",MM_DOWNLOAD_EDIT); d4x_lap(q,"download",MM_DOWNLOAD_DEL); d4x_lap(q,"download",MM_DOWNLOAD_RUN); d4x_lap(q,"download",MM_DOWNLOAD_DEL_C); d4x_lap(q,"download",MM_DOWNLOAD_DEL_F); d4x_lap(q,"download",MM_DOWNLOAD_RERUN); d4x_lap(q,"download",MM_DOWNLOAD_PROTECT); d4x_lap(q,"download",MM_DOWNLOAD_UNSELECT_ALL); d4x_lap(q,"download",MM_DOWNLOAD_SELECT_ALL); d4x_lap(q,"download",MM_DOWNLOAD_INVERT); d4x_lap(q,"options",MM_OPTIONS_SCHEDULER); d4x_lap(q,"options",MM_OPTIONS_PASSWORDS); d4x_lap(q,"options",MM_OPTIONS_COMMON); d4x_lap(q,"options",MM_OPTIONS_FILTERS); d4x_lap(q,"options",MM_OPTIONS_SPEED_1); d4x_lap(q,"options",MM_OPTIONS_SPEED_2); d4x_lap(q,"options",MM_OPTIONS_SPEED_3); d4x_lap(q,"options",MM_OPTIONS_BUTTONS); d4x_lap(q,"options",MM_HELP_ABOUT); delete(q); };};void d4x_save_accelerators(){ char *path=sum_strings(HOME_VARIABLE,"/",CFG_DIR,"/keybinds.xml",NULL); int fd=_fd_kb_=open(path,O_TRUNC | O_CREAT |O_RDWR,S_IRUSR | S_IWUSR); delete[] path; if (fd<0) return; f_wstr(fd,"<file>\n"); d4x_save_kb(MM_FILE_SAVE); d4x_save_kb(MM_FILE_LOAD); d4x_save_kb(MM_FILE_TXT); d4x_save_kb(MM_FILE_NEW); d4x_save_kb(MM_FILE_PASTE); d4x_save_kb(MM_FILE_AUTO); d4x_save_kb(MM_FILE_EXIT); f_wstr(fd,"</file>\n<download>\n"); d4x_save_kb(MM_DOWNLOAD_LOG); d4x_save_kb(MM_DOWNLOAD_STOP); d4x_save_kb(MM_DOWNLOAD_EDIT); d4x_save_kb(MM_DOWNLOAD_DEL); d4x_save_kb(MM_DOWNLOAD_RUN); d4x_save_kb(MM_DOWNLOAD_DEL_C); d4x_save_kb(MM_DOWNLOAD_DEL_F); d4x_save_kb(MM_DOWNLOAD_RERUN); d4x_save_kb(MM_DOWNLOAD_PROTECT); d4x_save_kb(MM_DOWNLOAD_UNSELECT_ALL); d4x_save_kb(MM_DOWNLOAD_SELECT_ALL); d4x_save_kb(MM_DOWNLOAD_INVERT); f_wstr(fd,"</download>\n<options>\n"); d4x_save_kb(MM_OPTIONS_SCHEDULER); d4x_save_kb(MM_OPTIONS_PASSWORDS); d4x_save_kb(MM_OPTIONS_COMMON); d4x_save_kb(MM_OPTIONS_FILTERS); d4x_save_kb(MM_OPTIONS_SPEED_1); d4x_save_kb(MM_OPTIONS_SPEED_2); d4x_save_kb(MM_OPTIONS_SPEED_3); d4x_save_kb(MM_OPTIONS_BUTTONS); f_wstr(fd,"</options>\n<help>\n"); d4x_save_kb(MM_HELP_ABOUT); f_wstr(fd,"</help>\n"); close(fd);};void my_main_quit(...) { if (CFG.WITHOUT_FACE==0){ CFG.HIDE_MAIN_WINDOW=!gdk_window_is_visible(MainWindow->window); gtk_timeout_remove(ListTimer); gtk_timeout_remove(LogsTimer); gtk_timeout_remove(GraphTimer); D4X_QUEUE->qv.get_adj(); CFG.CLIST_SHIFT=D4X_QUEUE->qv.current_shift; d4x_save_accelerators(); }; save_list(); save_config(); aa.done(); if (CFG.WITHOUT_FACE==0){ dnd_trash_real_destroy(); if (list_for_adding){ /* free list item by item to avoid searching downloads in global tDB sructure */ tDownload *tmp=list_for_adding->last(); while (tmp){ list_for_adding->del(tmp); delete(tmp); tmp=list_for_adding->last(); }; delete(list_for_adding); }; d4x_prefs_cancel(); destroy_about_window(); gtk_widget_destroy(MainWindow); buttons_configure_close(); d4x_scheduler_close(); d4x_filters_window_destroy(); if (AskDelete) delete(AskDelete); if (AskDeleteCompleted) delete(AskDeleteCompleted); if (AskDeleteFataled) delete(AskDeleteFataled); if (AskExit) delete(AskExit); load_save_list_cancel(); }; for (int i=0;i<LAST_HISTORY;i++) delete(ALL_HISTORIES[i]); if (CFG.WITHOUT_FACE==0){ gtk_main_quit(); }else{ aa.run_after_quit(); var_free(&CFG); exit(0); };};static void _open_edit_foreach_(GtkTreeModel *model,GtkTreePath *path, GtkTreeIter *iter,gpointer data){ GValue val={0,}; gtk_tree_model_get_value(model,iter,NOTHING_COL,&val); tDownload *tmp=(tDownload *)g_value_peek_pointer(&val); g_value_unset(&val); init_edit_window(tmp);};void open_edit_for_selected(...) { GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(D4X_QUEUE->qv.ListOfDownloads)); gtk_tree_selection_selected_foreach(sel,_open_edit_foreach_,NULL);};void del_completed_downloads(...) { aa.del_completed(); if (AskDeleteCompleted) AskDeleteCompleted->done();};void del_fataled_downloads(...) { aa.del_fataled(); if (AskDeleteFataled) AskDeleteFataled->done();};void stop_downloads(...) { D4X_QUEUE->qv.stop_downloads(); prepare_buttons(); aa.try_to_run_wait(D4X_QUEUE);};static void _my_main_quit_ask_exit_(GtkWidget *widget,tConfirmedDialog *parent){ CFG.CONFIRM_EXIT=!(GTK_TOGGLE_BUTTON(parent->check)->active); my_main_quit();};void ask_exit(...) { if (CFG.CONFIRM_EXIT) { if (!AskExit) AskExit=new tConfirmedDialog; if (AskExit->init(_("Do you really want to quit?"),_("Quit?"))) g_signal_connect(G_OBJECT(AskExit->ok_button),"clicked", G_CALLBACK(_my_main_quit_ask_exit_), AskExit); AskExit->set_modal(MainWindow); } else my_main_quit();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -