📄 menus.c
字号:
fill_device_info(devnr, txt); gtk_text_set_point(GTK_TEXT(txt),0); gtk_widget_show(dialog); /* 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);}/* 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 display_atip_info(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 display_atip_info\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(400),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(176)); 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 */ get_atip_info(devnr, txt); gtk_text_set_point(GTK_TEXT(txt),0); gtk_widget_show(dialog); /* 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);}/* callbacks for blank-menu */void blankmode_selected(GtkWidget *item, gpointer mode) { curset.blankmode = GPOINTER_TO_INT(mode);}void blankoptions_selected(GtkWidget *item, gpointer nr) {gint sel; sel = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(item)); switch(GPOINTER_TO_INT(nr)) { case 0: curset.blank_force = sel; break; case 1: curset.blank_eject = sel; break; }}/* timer function for blanking */gint blank_timer(gpointer data) {time_t start_time;time_t curtime;gint secs;char tmp[MAXLINE]; /* how many seconds have passed since first start? */ start_time = (time_t)data; curtime = time((time_t *) 0); secs = (gint) curtime - start_time; /* set new label */ g_snprintf(tmp,MAXLINE,text(189),secs/60,secs%60); gtk_label_set_text(GTK_LABEL(blank_infolabel),tmp); return(TRUE);}/* called by ok-button in blank-window */void blank_start(GtkWidget *widget, gpointer data) {time_t start_time;time_t curtime;gint secs;gint stat;char tmp[MAXLINE]; /* get current time */ start_time = time((time_t *) 0); misc_timer = gtk_timeout_add(1000, blank_timer, GINT_TO_POINTER(start_time)); /* disable ok button */ gtk_widget_set_sensitive(widget, FALSE); gtk_label_set_text(GTK_LABEL(GTK_BIN(readtrack_button)->child),T_CANCEL); /* clear text-window */ gtk_text_set_point(GTK_TEXT(blank_text_window), gtk_text_get_length(GTK_TEXT(blank_text_window))); gtk_text_backward_delete(GTK_TEXT(blank_text_window), gtk_text_get_length(GTK_TEXT(blank_text_window))); /* now this waits here until blanking is done */ stat = start_blanking_process(curset.writer_devnr, blank_text_window); if (stat == 1) { /* error? */ gtk_label_set_text(GTK_LABEL(blank_infolabel),text(191)); } else if (stat == 0) { /* ok */ curtime = time((time_t *) 0); secs = (gint) curtime - start_time; g_snprintf(tmp,MAXLINE,text(192),secs/60,secs%60); gtk_label_set_text(GTK_LABEL(blank_infolabel),tmp); } else { /* aborted */ curtime = time((time_t *) 0); secs = (gint) curtime - start_time; g_snprintf(tmp,MAXLINE,text(193),secs/60,secs%60); gtk_label_set_text(GTK_LABEL(blank_infolabel),tmp); } if (misc_timer != 0) gtk_timeout_remove(misc_timer); misc_timer = 0; /* enable ok button */ gtk_widget_set_sensitive(widget, TRUE); /* restore close button */ gtk_label_set_text(GTK_LABEL(GTK_BIN(readtrack_button)->child),T_CLOSE); dobeep(1);}/* called by cancel-button in blank-window */void blank_cancel(GtkWidget *widget, gpointer data) { /* nothing more to here, because actual killing is handled in start_blanking_process() */ dialog_done2 = -1; }gint blank_delete_event(GtkWidget *widget, GdkEvent *event, gpointer data) { blank_cancel(widget,data); return(TRUE);}/* 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 display_blank_cdrw(gint devnr) {GtkWidget *dialog, *tbl;GtkWidget *button1, *button2;GtkWidget *box1,*box2,*box3,*txt;GtkWidget *f1, *l1, *check, *sep;GtkWidget *omenu;GtkWidget *menu;GtkWidget *menu_item;GtkWidget *scrolled_win;gint xpos, ypos;gint xsize, ysize;GdkCursor *cursor,*normal_cursor;GtkRequisition rq;GdkWindowAttr *win_attr;gint i, menuhistory, menuidx; /* if another dialog is running, ignore */ if (dialog_done2 == 999) { return; } dodebug(8, "displaying display_blank_cdrw\n"); /* mark our dialog as running */ dialog_done2 = 999; misc_timer = 0; /* 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(450),tbf(250)); /* 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 (blank_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(171)); set_font_and_color(f1,BOLDFONT,NULL); gtk_box_pack_start(GTK_BOX(box1),f1,TRUE,TRUE,0); gtk_widget_show(f1); box2 = gtk_vbox_new(FALSE,0); gtk_container_set_border_width (GTK_CONTAINER (box2), 5); gtk_container_add(GTK_CONTAINER(f1),box2); gtk_widget_show(box2); tbl = gtk_table_new(5, 8, FALSE); gtk_table_set_col_spacings(GTK_TABLE(tbl),10); gtk_box_pack_start(GTK_BOX(box2),tbl,FALSE,TRUE,0); gtk_widget_show(tbl); l1 = rightjust_gtk_label_new(text(185)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,3,0,1); gtk_widget_show(l1); omenu = gtk_option_menu_new(); menu = gtk_menu_new(); menuidx = 0; menuhistory = 0; i = 0; while (blankmodes[i] != NULL) { menu_item = gtk_menu_item_new_with_label(blankmodes[i]->desc); gtk_signal_connect(GTK_OBJECT(menu_item), "activate", GTK_SIGNAL_FUNC(blankmode_selected), GINT_TO_POINTER(i)); gtk_menu_append (GTK_MENU (menu), menu_item); if (curset.blankmode == i) { menuhistory = menuidx; } menuidx++; gtk_widget_show (menu_item); i++; } gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); gtk_option_menu_set_history(GTK_OPTION_MENU (omenu),menuhistory); gtk_table_attach_defaults(GTK_TABLE(tbl),omenu,3,8,0,1); gtk_widget_show(omenu); check = gtk_check_button_new_with_label(text(186)); gtk_signal_connect(GTK_OBJECT(check),"clicked", GTK_SIGNAL_FUNC(blankoptions_selected),GINT_TO_POINTER(0)); gtk_table_attach_defaults(GTK_TABLE(tbl),check,3,8,1,2); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), curset.blank_force); gtk_widget_show(check); check = gtk_check_button_new_with_label(text(187)); gtk_signal_connect(GTK_OBJECT(check),"clicked", GTK_SIGNAL_FUNC(blankoptions_selected),GINT_TO_POINTER(1)); gtk_table_attach_defaults(GTK_TABLE(tbl),check,3,8,2,3); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), curset.blank_eject); gtk_widget_show(check); sep = gtk_hseparator_new(); gtk_table_attach_defaults(GTK_TABLE(tbl),sep,0,8,3,4); gtk_widget_show(sep); f1 = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(f1),GTK_SHADOW_IN); gtk_container_set_border_width (GTK_CONTAINER (f1), 5); gtk_table_attach_defaults(GTK_TABLE(tbl),f1,0,8,4,5); gtk_widget_show(f1); l1 = gtk_label_new(""); blank_infolabel = l1; gtk_container_add(GTK_CONTAINER(f1),l1); gtk_widget_show(l1); 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(box2),scrolled_win); gtk_widget_show(scrolled_win); txt = gtk_text_new(NULL,NULL); blank_text_window = 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); box3 = gtk_hbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(box1),box3,FALSE,TRUE,5); gtk_widget_show(box3); button1 = gtk_button_new_with_label(text(171)); gtk_box_pack_start(GTK_BOX(box3),button1,TRUE,TRUE,10); gtk_widget_show(button1); gtk_signal_connect(GTK_OBJECT(button1),"clicked", GTK_SIGNAL_FUNC(blank_start), NULL); button2 = gtk_button_new_with_label(T_CLOSE); readtrack_button = button2; gtk_box_pack_start(GTK_BOX(box3),button2,TRUE,TRUE,10); gtk_widget_show(button2); gtk_signal_connect(GTK_OBJECT(button2),"clicked", GTK_SIGNAL_FUNC(blank_cancel), GINT_TO_POINTER(-1)); /* 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 */ gtk_text_insert(GTK_TEXT(txt),NULL,NULL,NULL, text(188), strlen(text(188))); gtk_widget_show(dialog); /* now wait until button is pressed */ while (dialog_done2 == 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);}/* save output of write process */void show_writetrack_save_press(GtkWidget *widget, gpointer data) {char tmp[MAXLINE]; /* show fileselector */ show_file_selector(SAVEOUTCDRECORD,tmp); /* not cancel pressed? */ if (strcmp(tmp,"") != 0) { if (save_text2file(tmp, readtrack_textview) ==
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -