📄 menus.c
字号:
/* error while reading */ return 1; } loop = loop->next; } /* save the toc file (not for read single tracks) */ if (strcmp(trackreadset.tocfile,"") != 0) { write_copy_cd_toc_file(trackreadset.tocfile); } /* unset current active toc-file */ g_free(curset.tocfile); curset.tocfile = g_strdup(""); /* no error reading tracks */ gtk_label_set_text(GTK_LABEL(readtrack_info_label), text(161)); gtk_label_set_text(GTK_LABEL(readtrack_small_info), text(165)); /* now set progressbars to 100% - elsewhere we may end up with 99% due rounding errors */ gtk_progress_set_percentage(GTK_PROGRESS(readtrack_pbar1),1.0); gtk_progress_set_percentage(GTK_PROGRESS(readtrack_pbar2),1.0); return 0;}/* called from cancel or ok button */ void show_readtrack_btn_press(GtkWidget *widget, gpointer data) { /* read-process running? */ if (read_done == 999) { read_abort_mark = 1; /* abort our read-process */ kill_readcdda(); return; } /* cancel event */ if (GPOINTER_TO_INT(data) == -1) { dialog_done = -1; return; }}void show_readtrack_save_press(GtkWidget *widget, gpointer data) {char tmp[MAXLINE]; /* show fileselector */ show_file_selector(SAVEREADTRACKS,tmp); /* not cancel pressed? */ if (strcmp(tmp,"") != 0) { if (save_text2file(tmp, readtrack_textview) == 0) { show_dialog(ICO_INFO,text(270), T_OK, NULL, NULL, 0); } }}gint readtrack_dialog_delete_event(GtkWidget *widget, GdkEvent *event, gpointer data) { /* read-process running? */ if (read_done == 999) { read_abort_mark = 1; /* abort our read-process */ kill_readcdda(); return(TRUE); } dialog_done = -1; return(TRUE);}/* change the read-tracks menu according to view-setting */void viewmode_selected(GtkWidget *item, gpointer val) { curset.proc_view = GPOINTER_TO_INT(val); gtk_window_set_policy(GTK_WINDOW(viewmode_dialog), FALSE, TRUE, TRUE ); if (GPOINTER_TO_INT(val) == 2) { /* extended view */ gtk_widget_show(readtrack_info_frame); gtk_widget_show(readtrack_info_tbl); gtk_widget_show(viewmode_scrolled); gtk_widget_show(readtrack_savebutton); gtk_widget_hide(readtrack_small_info); gtk_widget_hide(readtrack_small_info2); } else if (GPOINTER_TO_INT(val) == 1) { /* normal view */ gtk_widget_show(readtrack_info_frame); gtk_widget_show(readtrack_info_tbl); gtk_widget_hide(viewmode_scrolled); gtk_widget_hide(readtrack_savebutton); gtk_widget_hide(readtrack_small_info); gtk_widget_hide(readtrack_small_info2); } else { /* small view */ gtk_widget_hide(readtrack_info_frame); gtk_widget_hide(readtrack_info_tbl); gtk_widget_hide(viewmode_scrolled); gtk_widget_hide(readtrack_savebutton); gtk_widget_show(readtrack_small_info); gtk_widget_show(readtrack_small_info2); } while (gtk_events_pending()) gtk_main_iteration(); gtk_window_set_policy(GTK_WINDOW(viewmode_dialog), FALSE, TRUE, FALSE);}/* popup a modal window, set cursor to watch, trigger read tracks and return 0 if all ok, -1 if not or when cancel or delete_event found. Centers automatically above the toplevel-widow */gint show_and_do_read_tracks(gint devnr, gint bulk) {GtkWidget *omenu;GtkWidget *menu;GtkWidget *menu_item;GtkWidget *dialog;GtkWidget *l1;GtkWidget *button1, *button2;GtkWidget *box1,*box2,*txt;GtkWidget *f1, *tbl;GtkWidget *b1_sep, *lbl;GtkWidget *scrolled_win;gint xpos, ypos;gint xsize, ysize;GdkCursor *cursor,*normal_cursor;GtkRequisition rq;GdkWindowAttr *win_attr;GtkAdjustment *adj1, *adj2;GtkWidget *pbar1, *pbar2;gint i, menuidx, menuhistory; /* if another dialog is running, ignore */ if (dialog_done == 999) { return -1; } dodebug(8, "displaying show_and_do_read_tracks\n"); /* mark our dialog as running */ dialog_done = 999; /* create new window and position it relative to the main window */ dialog = gtk_window_new(GTK_WINDOW_DIALOG); viewmode_dialog = dialog; gtk_window_set_title(GTK_WINDOW(dialog),text(2)); gtk_widget_set_usize(dialog,tbf(340),0); /* make sure our window is always on top */ gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(toplevel)); gtk_signal_connect (GTK_OBJECT (dialog), "delete_event", GTK_SIGNAL_FUNC (readtrack_dialog_delete_event), (gpointer) dialog); /* create layout for dialog */ box1 = gtk_vbox_new(FALSE,5); gtk_container_set_border_width (GTK_CONTAINER (box1), 5); gtk_container_add(GTK_CONTAINER(dialog),box1); f1 = gtk_frame_new(NULL); readtrack_info_frame = f1; gtk_frame_set_shadow_type(GTK_FRAME(f1),GTK_SHADOW_IN); gtk_widget_set_usize(f1,0,36); gtk_box_pack_start(GTK_BOX(box1),f1,FALSE,TRUE,5); if (curset.proc_view > 0) gtk_widget_show(f1); lbl = gtk_label_new(""); readtrack_info_label = lbl; gtk_container_add(GTK_CONTAINER(f1), lbl); gtk_misc_set_alignment(GTK_MISC(lbl),0.5,0.5); gtk_misc_set_padding(GTK_MISC(lbl),10,0); gtk_widget_show(lbl); tbl = gtk_table_new(2, 10, TRUE); readtrack_info_tbl = tbl; gtk_table_set_col_spacing(GTK_TABLE(tbl),1,10); gtk_table_set_row_spacings(GTK_TABLE(tbl),5); gtk_box_pack_start(GTK_BOX(box1),tbl,FALSE,TRUE,5); if (curset.proc_view > 0) gtk_widget_show(tbl); l1 = rightjust_gtk_label_new(text(150)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,2,0,1); gtk_widget_show(l1); adj1 = (GtkAdjustment *)gtk_adjustment_new(0, 0, 100, 0, 0, 0); pbar1 = gtk_progress_bar_new_with_adjustment(adj1); readtrack_pbar1 = pbar1; gtk_progress_set_format_string(GTK_PROGRESS(pbar1),"%p%%"); gtk_progress_set_show_text(GTK_PROGRESS(pbar1),TRUE); gtk_table_attach_defaults(GTK_TABLE(tbl),pbar1,2,10,0,1); gtk_widget_show(pbar1); l1 = rightjust_gtk_label_new(text(151)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,2,1,2); gtk_widget_show(l1); adj2 = (GtkAdjustment *)gtk_adjustment_new(0, 0, 100, 0, 0, 0); pbar2 = gtk_progress_bar_new_with_adjustment(adj2); readtrack_pbar2 = pbar2; gtk_progress_set_format_string(GTK_PROGRESS(pbar2),"%p%%"); gtk_progress_set_show_text(GTK_PROGRESS(pbar2),TRUE); gtk_table_attach_defaults(GTK_TABLE(tbl),pbar2,2,10,1,2); gtk_widget_show(pbar2); tbl = gtk_table_new(1, 10, TRUE); gtk_table_set_col_spacing(GTK_TABLE(tbl),6,10); gtk_table_set_row_spacings(GTK_TABLE(tbl),5); gtk_box_pack_start(GTK_BOX(box1),tbl,FALSE,TRUE,0); gtk_widget_show(tbl); lbl = gtk_label_new(""); readtrack_small_info = lbl; gtk_table_attach_defaults(GTK_TABLE(tbl),lbl,0,3,0,1); if (curset.proc_view == 0) gtk_widget_show(lbl); lbl = gtk_label_new(""); readtrack_small_info2 = lbl; gtk_table_attach_defaults(GTK_TABLE(tbl),lbl,3,5,0,1); if (curset.proc_view == 0) gtk_widget_show(lbl); l1 = rightjust_gtk_label_new(text(152)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,5,7,0,1); gtk_widget_show(l1); omenu = gtk_option_menu_new(); menu = gtk_menu_new(); menuidx = 0; menuhistory = -1; for (i=0; i<3; i++) { menu_item = gtk_menu_item_new_with_label(text(153+i)); gtk_signal_connect(GTK_OBJECT(menu_item), "activate", GTK_SIGNAL_FUNC(viewmode_selected), GINT_TO_POINTER(i)); gtk_menu_append (GTK_MENU (menu), menu_item); if (curset.proc_view == i) { menuhistory = menuidx; } menuidx++; gtk_widget_show (menu_item); } gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); if (menuhistory != -1) { gtk_option_menu_set_history(GTK_OPTION_MENU (omenu),menuhistory); } else { curset.proc_view = 1; gtk_option_menu_set_history(GTK_OPTION_MENU (omenu),1); } gtk_table_attach_defaults(GTK_TABLE(tbl),omenu,7,10,0,1); gtk_widget_show(omenu); scrolled_win = gtk_scrolled_window_new (NULL, NULL); viewmode_scrolled = scrolled_win; gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(box1),scrolled_win,TRUE,TRUE,0); /* show only in extended view */ if (curset.proc_view == 2) gtk_widget_show(scrolled_win); txt = gtk_text_new(NULL,NULL); readtrack_textview = txt; gtk_text_set_editable(GTK_TEXT(txt),FALSE); gtk_text_set_word_wrap(GTK_TEXT(txt),TRUE); gtk_container_add(GTK_CONTAINER(scrolled_win), txt); gtk_widget_show(txt); gtk_widget_show(box1); b1_sep = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(box1),b1_sep,FALSE,TRUE,0); gtk_widget_show(b1_sep); box2 = gtk_hbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(box1),box2,FALSE,TRUE,10); gtk_widget_show(box2); button1 = gtk_button_new_with_label(T_CANCEL); readtrack_button = button1; gtk_box_pack_start(GTK_BOX(box2),button1,TRUE,TRUE,10); gtk_widget_show(button1); GTK_WIDGET_SET_FLAGS (button1, GTK_CAN_DEFAULT); gtk_widget_grab_default (button1); gtk_signal_connect(GTK_OBJECT(button1),"clicked", GTK_SIGNAL_FUNC(show_readtrack_btn_press), GINT_TO_POINTER(-1)); button2 = gtk_button_new_with_label(text(162)); readtrack_savebutton = button2; gtk_box_pack_start(GTK_BOX(box2),button2,TRUE,TRUE,10); GTK_WIDGET_SET_FLAGS (button2, GTK_CAN_DEFAULT); gtk_signal_connect(GTK_OBJECT(button2),"clicked", GTK_SIGNAL_FUNC(show_readtrack_save_press), GINT_TO_POINTER(-1)); /* show only in extended view */ if (curset.proc_view == 2) gtk_widget_show(button2); /* grab cursor and change to watch */ gtk_grab_add(dialog); gdk_window_get_user_data(GTK_WIDGET(toplevel)->window, (gpointer) &win_attr); normal_cursor = win_attr->cursor; cursor = gdk_cursor_new(GDK_WATCH); gdk_window_set_cursor(GTK_WIDGET(toplevel)->window,cursor); /* only center window when toplevel visible */ if ( GTK_WIDGET_VISIBLE(toplevel)) { gtk_window_position(GTK_WINDOW(dialog),GTK_WIN_POS_NONE); gdk_window_get_origin(GTK_WIDGET(toplevel)->window,&xpos,&ypos); gdk_window_get_size(GTK_WIDGET(toplevel)->window,&xsize,&ysize); gtk_widget_size_request(dialog,&rq); gtk_widget_set_uposition(GTK_WIDGET(dialog),xpos+xsize/2-rq.width/2,ypos+ysize/2-rq.height/2); } gtk_widget_show(dialog); /* here is the action */ if (bulk == 0) { /* read all selected tracks one at a time */ start_read_action(devnr); } else { /* use bulk mode of cdda2wav */ start_read_action_bulk(devnr); } /* update image-dir-lists */ scan_imagedirs(); /* when done with reading rename button to OK */ gtk_label_set_text(GTK_LABEL(GTK_BIN(readtrack_button)->child),T_OK); dobeep(1); /* now wait until button is pressed */ while (dialog_done == 999) { wait_and_process_events(); } gtk_grab_remove(GTK_WIDGET(dialog)); normal_cursor = gdk_cursor_new (GDK_TOP_LEFT_ARROW); gdk_window_set_cursor(GTK_WIDGET(toplevel)->window,normal_cursor); /* remove dialog window */ gtk_widget_destroy(dialog); return dialog_done;}/* popup a modal window, set cursor to watch, return path or NULL-string when cancel or delete_event found. Centers automatically above the toplevel-widow */void show_device_detail(gint devnr) {GtkWidget *dialog;GtkWidget *button1;GtkWidget *box1,*box2,*txt;GtkWidget *f1;GtkWidget *scrolled_win;gint xpos, ypos;gint xsize, ysize;GdkCursor *cursor,*normal_cursor;GtkRequisition rq;GdkWindowAttr *win_attr; /* if another dialog is running, ignore */ if (dialog_done == 999) { return; } dodebug(8, "displaying show_device_detail\n"); /* mark our dialog as running */ dialog_done = 999; /* create new window and position it relative to the main window */ dialog = gtk_window_new(GTK_WINDOW_DIALOG); gtk_window_set_title(GTK_WINDOW(dialog),text(2)); gtk_widget_set_usize(dialog,tbf(500),tbf(300)); /* make sure our window is always on top */ gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(toplevel)); gtk_signal_connect (GTK_OBJECT (dialog), "delete_event", GTK_SIGNAL_FUNC (dialog_delete_event), (gpointer) dialog); /* create layout for dialog */ box1 = gtk_vbox_new(FALSE,0); gtk_container_set_border_width (GTK_CONTAINER (box1), 5); gtk_container_add(GTK_CONTAINER(dialog),box1); f1 = gtk_frame_new(text(166)); set_font_and_color(f1,BOLDFONT,NULL); gtk_box_pack_start(GTK_BOX(box1),f1,TRUE,TRUE,0); gtk_widget_show(f1); scrolled_win = gtk_scrolled_window_new (NULL, NULL); gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(f1),scrolled_win); gtk_widget_show(scrolled_win); txt = gtk_text_new(NULL,NULL); gtk_text_set_editable(GTK_TEXT(txt),FALSE); gtk_text_set_word_wrap(GTK_TEXT(txt),TRUE); gtk_container_add(GTK_CONTAINER(scrolled_win), txt); gtk_widget_show(txt); gtk_widget_show(box1); box2 = gtk_hbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(box1),box2,FALSE,TRUE,5); gtk_widget_show(box2); button1 = gtk_button_new_with_label(T_OK); gtk_box_pack_start(GTK_BOX(box2),button1,TRUE,TRUE,10); gtk_widget_show(button1); GTK_WIDGET_SET_FLAGS (button1, GTK_CAN_DEFAULT); gtk_signal_connect(GTK_OBJECT(button1),"clicked", GTK_SIGNAL_FUNC(dialog_btn_press), GINT_TO_POINTER(0)); /* grab cursor and change to watch */ gtk_grab_add(dialog); gdk_window_get_user_data(GTK_WIDGET(toplevel)->window, (gpointer) &win_attr); normal_cursor = win_attr->cursor; cursor = gdk_cursor_new(GDK_WATCH); gdk_window_set_cursor(GTK_WIDGET(toplevel)->window,cursor); /* only center window when toplevel visible */ if ( GTK_WIDGET_VISIBLE(toplevel)) { gtk_window_position(GTK_WINDOW(dialog),GTK_WIN_POS_NONE); gdk_window_get_origin(GTK_WIDGET(toplevel)->window,&xpos,&ypos); gdk_window_get_size(GTK_WIDGET(toplevel)->window,&xsize,&ysize); gtk_widget_size_request(dialog,&rq); gtk_widget_set_uposition(GTK_WIDGET(dialog),xpos+xsize/2-rq.width/2,ypos+ysize/2-rq.height/2); } /* now fill text-widget with infos */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -