📄 duplicate.c
字号:
void draw_read_menu() {GtkWidget *hbox, *vbox;GtkWidget *f1,*f2, *f3;GtkWidget *b1;GtkWidget *e1;GtkWidget *l1;GtkWidget *tbl, *check; /* prepare draw area */ clear_actionspace(); f1 = gtk_frame_new(text(107)); set_font_and_color(f1,BOLDFONT,NULL); gtk_box_pack_start(GTK_BOX(actionspace),f1,FALSE,FALSE,0); gtk_widget_show(f1); tbl = gtk_table_new(2,16,TRUE); gtk_table_set_col_spacing(GTK_TABLE(tbl),3,10); gtk_table_set_col_spacing(GTK_TABLE(tbl),14,5); gtk_container_set_border_width(GTK_CONTAINER (tbl),5); gtk_container_add(GTK_CONTAINER(f1),tbl); gtk_widget_show(tbl); devices_setup_read(0, tbl, 1); devices_setup_image(1, tbl); /* devices_setup_write(2, tbl); */ /* left and right info-frames */ tbl = gtk_table_new(1,2,TRUE); gtk_table_set_col_spacings(GTK_TABLE(tbl),10); gtk_box_pack_start(GTK_BOX(actionspace),tbl,TRUE,TRUE,10); gtk_widget_show(tbl); vbox = gtk_vbox_new(FALSE,10); gtk_table_attach_defaults(GTK_TABLE(tbl),vbox,0,1,0,1); f1 = gtk_frame_new(text(96)); set_font_and_color(f1,BOLDFONT,NULL); gtk_box_pack_start(GTK_BOX(vbox),f1,TRUE,TRUE,0); gtk_widget_show(f1); f3 = gtk_frame_new(text(296)); set_font_and_color(f3,BOLDFONT,NULL); gtk_box_pack_start(GTK_BOX(vbox),f3,FALSE,FALSE,0); gtk_widget_show(f3); f2 = gtk_frame_new(text(97)); set_font_and_color(f2,BOLDFONT,NULL); gtk_table_attach_defaults(GTK_TABLE(tbl),f2,1,2,0,1); gtk_widget_show(f2); gtk_widget_show(vbox); /* button bar at the bottom */ hbox = gtk_hbox_new(TRUE,10); gtk_box_pack_start(GTK_BOX(actionspace),hbox,FALSE,TRUE,10); gtk_widget_show(hbox); b1 = gtk_button_new_with_label(text(148)); gtk_box_pack_start(GTK_BOX(hbox),b1,TRUE,TRUE,10); gtk_widget_show(b1); gtk_signal_connect(GTK_OBJECT(b1), "clicked", GTK_SIGNAL_FUNC(readalltracks_clicked), NULL); define_tooltip(b1, help(50)); /* b1 = gtk_button_new_with_label(text(149)); gtk_box_pack_start(GTK_BOX(hbox),b1,TRUE,TRUE,10); gtk_widget_show(b1); gtk_signal_connect(GTK_OBJECT(b1), "clicked", GTK_SIGNAL_FUNC(eject_clicked), NULL); */ /* left info frame */ vbox = gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(f1),vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 10); gtk_widget_show(vbox); tbl = gtk_table_new(4,8,TRUE); gtk_table_set_row_spacings(GTK_TABLE(tbl),10); gtk_table_set_col_spacings(GTK_TABLE(tbl),10); gtk_box_pack_start(GTK_BOX(vbox),tbl,FALSE,FALSE,10); gtk_widget_show(tbl); l1 = rightjust_gtk_label_new(text(103)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,2,0,1); gtk_widget_show(l1); e1 = gtk_entry_new(); cdlist_l1 = e1; gtk_entry_set_editable(GTK_ENTRY(e1),FALSE); gtk_table_attach_defaults(GTK_TABLE(tbl),e1,2,8,0,1); gtk_widget_show(e1); l1 = rightjust_gtk_label_new(text(104)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,2,1,2); gtk_widget_show(l1); e1 = gtk_entry_new(); cdlist_l2 = e1; gtk_entry_set_editable(GTK_ENTRY(e1),FALSE); gtk_table_attach_defaults(GTK_TABLE(tbl),e1,2,8,1,2); gtk_widget_show(e1); l1 = rightjust_gtk_label_new(text(105)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,2,2,3); gtk_widget_show(l1); e1 = gtk_entry_new(); cdlist_l3 = e1; gtk_entry_set_editable(GTK_ENTRY(e1),FALSE); gtk_table_attach_defaults(GTK_TABLE(tbl),e1,2,8,2,3); gtk_widget_show(e1); l1 = rightjust_gtk_label_new(text(145)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,2,3,4); gtk_widget_show(l1); e1 = gtk_entry_new(); cdlist_l4 = e1; gtk_entry_set_editable(GTK_ENTRY(e1),FALSE); gtk_table_attach_defaults(GTK_TABLE(tbl),e1,2,8,3,4); gtk_widget_show(e1); /* options frame */ vbox = gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(f3),vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); gtk_widget_show(vbox); tbl = gtk_table_new(1,8,TRUE); gtk_table_set_col_spacings(GTK_TABLE(tbl),10); gtk_box_pack_start(GTK_BOX(vbox),tbl,FALSE,FALSE,10); gtk_widget_show(tbl); check = gtk_check_button_new_with_label(text(297)); gtk_signal_connect(GTK_OBJECT(check),"clicked", GTK_SIGNAL_FUNC(readoptions_selected),GINT_TO_POINTER(0)); gtk_table_attach_defaults(GTK_TABLE(tbl),check,1,8,0,1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), curset.indexscan); define_tooltip(check, help(80)); gtk_widget_show(check); /* right info frame */ vbox = gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(f2),vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 10); gtk_widget_show(vbox); tbl = gtk_table_new(4,8,TRUE); gtk_table_set_row_spacings(GTK_TABLE(tbl),10); gtk_table_set_col_spacings(GTK_TABLE(tbl),10); gtk_box_pack_start(GTK_BOX(vbox),tbl,FALSE,FALSE,10); gtk_widget_show(tbl); l1 = rightjust_gtk_label_new(text(146)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,3,0,1); gtk_widget_show(l1); e1 = gtk_entry_new(); imglist_l1 = e1; gtk_signal_connect(GTK_OBJECT(e1), "activate", GTK_SIGNAL_FUNC(set_image_prefix_callback),NULL); gtk_table_attach_defaults(GTK_TABLE(tbl),e1,3,8,0,1); gtk_widget_show(e1); define_tooltip(e1, help(51)); l1 = rightjust_gtk_label_new(text(147)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,3,1,2); gtk_widget_show(l1); e1 = gtk_entry_new(); imglist_l2 = e1; gtk_entry_set_editable(GTK_ENTRY(e1),FALSE); gtk_table_attach_defaults(GTK_TABLE(tbl),e1,3,8,1,2); gtk_widget_show(e1); l1 = leftjust_gtk_label_new(text(272)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,1,8,2,3); gtk_widget_show(l1); e1 = gtk_entry_new(); imglist_l3 = e1; gtk_entry_set_editable(GTK_ENTRY(e1),FALSE); gtk_table_attach_defaults(GTK_TABLE(tbl),e1,3,8,3,4); gtk_widget_show(e1); gtk_widget_show(actionspace); /* fill entries */ fill_read_menu();}/* fill the entries in the verify_cd_menu */void fill_verify_menu() {gchar tmp[MAXLINE];GList *loop;GtkWidget *menu;GtkWidget *menu_item, *menuselitem;gint menuidx, menuhistory;gint i,len; /* get list of toc-files (save in tocfiles var) */ scan_for_toc_files(); /* clear out the old menu first (if any) */ gtk_option_menu_remove_menu(GTK_OPTION_MENU (write_toc_menu)); menu = gtk_menu_new(); menuselitem = NULL; menuidx = 0; menuhistory = 0; i = 0; loop = g_list_first(tocfiles); while (loop) { /* a bug in gtk wont allow longer option-menus... well, then strip the strings down (not nice, but so far the only way I can think of */ len = strlen((gchar *)loop->data); if (len > 24) { strcpy(tmp, ".. "); strcat(tmp, (gchar *)loop->data + len - 24); } else { strcpy(tmp, (gchar *)loop->data); } menu_item = gtk_menu_item_new_with_label(tmp); if (menuselitem == NULL) { /* default first element */ menuselitem = menu_item; } gtk_signal_connect(GTK_OBJECT(menu_item), "activate", GTK_SIGNAL_FUNC(tocwrite_selected), GINT_TO_POINTER(i)); if (strcmp(curset.tocfile, (gchar *)loop->data) == 0) { menuhistory = menuidx; menuselitem = menu_item; } gtk_menu_append (GTK_MENU (menu), menu_item); gtk_widget_show (menu_item); loop = loop->next; menuidx++; i++; } /* no toc file found? */ if (i == 0) { menu_item = gtk_menu_item_new_with_label(text(235)); gtk_signal_connect(GTK_OBJECT(menu_item), "activate", GTK_SIGNAL_FUNC(tocwrite_selected), GINT_TO_POINTER(-2)); if (strcmp(curset.tocfile, "-") == 0) { menuhistory = menuidx; menuselitem = menu_item; } gtk_menu_append (GTK_MENU (menu), menu_item); gtk_widget_show (menu_item); } gtk_option_menu_set_menu (GTK_OPTION_MENU (write_toc_menu), menu); gtk_option_menu_set_history(GTK_OPTION_MENU (write_toc_menu),menuhistory); /* toggle currently active menu */ if (menuselitem != NULL) { gtk_menu_item_activate(GTK_MENU_ITEM (menuselitem)); } else { /* if no active menu, activate the last set */ /* (one the fly in this case) */ gtk_menu_item_activate(GTK_MENU_ITEM (menu_item)); } /* ---------------- */ /* cd loaded? */ if (cdinfo.nr_tracks == -1) { gtk_entry_set_text(GTK_ENTRY(vrylist_l1), text(156)); gtk_entry_set_text(GTK_ENTRY(vrylist_l2),""); gtk_entry_set_text(GTK_ENTRY(vrylist_l3),""); gtk_entry_set_text(GTK_ENTRY(vrylist_l4),""); return; } if (cdinfo.nr_tracks == -2) { gtk_entry_set_text(GTK_ENTRY(vrylist_l1), text(196)); gtk_entry_set_text(GTK_ENTRY(vrylist_l2),""); gtk_entry_set_text(GTK_ENTRY(vrylist_l3),""); gtk_entry_set_text(GTK_ENTRY(vrylist_l4),""); return; } /* cd-type */ determine_cd_type(tmp,0); gtk_entry_set_text(GTK_ENTRY(vrylist_l1), tmp); /* cd-label */ if (cdinfo.title && cdinfo.artist && cdinfo.title[0] != '\0' && setupdata.option_displaycdtext) { g_snprintf(tmp,MAXLINE,"%s / %s", cdinfo.title, cdinfo.artist); gtk_entry_set_text(GTK_ENTRY(vrylist_l2), tmp); gtk_entry_set_position(GTK_ENTRY(vrylist_l2),0); } else if (cdinfo.cddb_dtitle != NULL) { gtk_entry_set_text(GTK_ENTRY(vrylist_l2), cdinfo.cddb_dtitle); gtk_entry_set_position(GTK_ENTRY(vrylist_l2),0); } else { gtk_entry_set_text(GTK_ENTRY(vrylist_l2),""); } /* cd-size */ convert_frames2mbminstring(cdinfo.total_size, tmp); gtk_entry_set_text(GTK_ENTRY(vrylist_l3), tmp); /* nr tracks */ g_snprintf(tmp,MAXLINE,"%d",cdinfo.nr_tracks); gtk_entry_set_text(GTK_ENTRY(vrylist_l4), tmp);}/* callbacks for verify-screen */void verify_clicked(GtkWidget *widget, gpointer data) {gint stat;gint ret;track_read_param_t *trackparam;GList *loop;gint i;gint datat,audio;gint datasize; /* no cd-reader defined */ if (curset.reader_devnr == -1) { show_dialog(ICO_ERROR,text(203), T_OK, NULL, NULL, 0); return; } /* now check if our cd-information is still valid */ get_cd_toc_and_volid(curset.reader_devnr); /* cd loaded? */ if (cdinfo.nr_tracks < 0) { fill_verify_menu(); show_dialog(ICO_WARN,text(266),T_OK,NULL,NULL,0); return; } /* no tocfile selected */ if (strcmp(curset.tocfile,"-") == 0) { show_dialog(ICO_WARN,text(237),T_OK,NULL,NULL,0); return; } /* first check if all tracks we need are available on hd */ stat = check_write_files(0); switch(stat) { /* files with wrong size */ case 1: ret = show_dialog(ICO_QUEST,text(198),T_ANYWAY,T_CANCEL, NULL, 1); if (ret == 1) { /* aborted */ return; } break; /* files missing */ case 2: show_dialog(ICO_ERROR,text(200),T_OK,NULL,NULL,0); return; /* no permission/invalid */ case 3: show_dialog(ICO_ERROR,text(201),T_OK,NULL,NULL,0); return; } /* now check if we have the correct cd to verify in the drive */ if (trackreadset.nrtracks != cdinfo.nr_tracks || trackreadset.cdsize != cdinfo.total_size) { show_dialog(ICO_WARN,text(238),T_OK,NULL,NULL,0); return; } datat = 0; audio = 0; datasize = 0; /* fill some additional data in the trackreadset-structure */ loop = g_list_first(trackreadset.trackparams); for(i=0; i<cdinfo.nr_tracks; i++) { if (loop == NULL) { /* should never happen */ show_dialog(ICO_WARN,text(238),T_OK,NULL,NULL,0); return; } trackparam = loop->data; trackparam->trackinfo_index = i; /* does the tracktypes match? */ if (trackparam->tracktype != trackinfo[i]->type) { show_dialog(ICO_WARN,text(238),T_OK,NULL,NULL,0); return; } if (trackparam->tracktype == 0) { /* data track */ trackparam->kbyte = trackinfo[i]->size * (DATASECTORSIZE/1024); trackparam->startoffset = trackinfo[i]->start_sec; if (i == cdinfo.nr_tracks-1) { /* last track - leadout is track-end */ trackparam->endoffset = cdinfo.leadout - 2; } else { /* sub 150 (2 sec leadout), sub 2 (2 run out sectors) */ trackparam->endoffset = trackinfo[i+1]->start_sec -150-2; } datat++; datasize += trackparam->frames; } else { /* audio */ trackparam->kbyte = trackinfo[i]->size * CDDAFRAME/1024; audio++; } loop = loop->next; } /* OK...now we know we have the correct CD in the drive and a fully functional set of image-files on the HD. All set for verifying */ /* check if are allowed to verify audio */ if (curset.noaudioverify == 1 && datat == 0 && audio > 0) { show_dialog(ICO_WARN,text(248), T_OK, NULL, NULL, 0); return; } /* do we have to recalc the percentages because we dont want to verify audio? */ if (curset.noaudioverify == 1 && audio > 0 && datat > 0) { loop = g_list_first(trackreadset.trackparams); while(loop) { trackparam = loop->data; /* only take data-tracks in account */ trackparam->percent = (gfloat)trackparam->frames / datasize; loop = loop->next; } } show_and_do_verify_tracks(curset.reader_devnr);}void verifyoptions_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.noaudioverify = sel;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -