📄 create.c
字号:
if (entry->readable == 0) { /* dont display not readable files */ loop = loop->next; continue; } if (entry->type == 0 || entry->type == 3 || entry->type == 1) { /* matching row found */ if (count == row) { strcpy(tname, entry->path); return 0; } count++; } loop = loop->next; } /* no match */ return 1;}/* update currently selected track-sizes */void update_verify_size(gint clickrow) {GList *sel;gint row;gint sizecount;gchar tmp[MAXLINE]; sizecount = 0; /* loop through all selected tracks */ sel = imglist->selection; while (sel) { row = GPOINTER_TO_INT(sel->data); if (get_trackname_from_row(row, tmp) == 0) { /* we get now the full track-filename in tmp */ /* now get its size (in bytes) */ sizecount+=(gint) (get_size_from_imagelist(tmp)/1024); } sel = sel->next; } convert_kbytes2mbminstring(sizecount, tmp); gtk_entry_set_text(GTK_ENTRY(imglist_l1), tmp);}/* callbacks for verify menu */void verifysometracks_clicked(GtkWidget *widget, gpointer data) {track_read_param_t *trackparam;GList *sellist;gfloat per;gint tcount, sizecount,nrtracks;gint tracknr, size, type;GList *sel;gint row, stat, stat2, abort;gchar tmp[MAXLINE];gchar *cell; /* 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); /* update screen ... */ fill_verify_tracks(1); /* cd loaded? */ if (cdinfo.nr_tracks < 0) { show_dialog(ICO_WARN,text(266),T_OK,NULL,NULL,0); return; } sizecount = 0; nrtracks = 0; /* loop through all selected tracks to get number */ sel = imglist->selection; while (sel) { row = GPOINTER_TO_INT(sel->data); nrtracks++; sel = sel->next; } /* no tracks selected */ if (nrtracks == 0) { show_dialog(ICO_WARN,text(302),T_OK,NULL,NULL,0); return; } /* check if all the tracks selected match the current cd */ abort = 0; sellist = NULL; sel = imglist->selection; while (sel) { row = GPOINTER_TO_INT(sel->data); if (get_trackname_from_row(row, tmp) == 0) { /* we get now the full track-filename in tmp */ /* check if track can be verified */ stat = check_vrfy_track(tmp); stat2 = 0; /* get image-title from list */ gtk_clist_get_text(imglist,row,1,&cell); if (stat == 0) { /* all ok */ sel = sel->next; continue; } if (stat == 1) { /* no info file */ g_snprintf(tmp,MAXLINE,text(304),cell); stat2 = show_dialog(ICO_WARN,tmp,T_OK,T_CANCEL,text(412),0); } if (stat == 2) { /* track does not match to cd */ g_snprintf(tmp,MAXLINE,text(303),cell); stat2 = show_dialog(ICO_WARN,tmp,T_OK,T_CANCEL,NULL,0); } if (stat == 3) { /* dont verify audio */ g_snprintf(tmp,MAXLINE,text(305),cell); stat2 = show_dialog(ICO_WARN,tmp,T_OK,T_CANCEL,NULL,0); } /* aborting selected */ if (stat2 == 1) { abort = 1; break; } /* no info file, but verify anyway */ if (stat2 == 2) { sel = sel->next; continue; } /* save track nr - we are not allowed to unselect tracks while we parsing the selection itself */ sellist = g_list_append(sellist, GINT_TO_POINTER(row)); } sel = sel->next; } /* unselect all not fitting tracks */ sel = g_list_first(sellist); while (sel) { row = (gint) sel->data; gtk_clist_unselect_row(imglist, row, 0); sel = sel->next; } g_list_free(sellist); /* user aborted? */ if (abort) return; /* now check if any tracks are still selected */ /* and calculate sum of size */ sizecount = 0; nrtracks = 0; /* loop through all selected tracks to get number */ sel = imglist->selection; while (sel) { row = GPOINTER_TO_INT(sel->data); if (get_trackname_from_row(row, tmp) == 0) { /* we get now the full track-filename in tmp */ /* now get its size (in bytes) */ sizecount+=(gint) (get_size_from_imagelist(tmp)/1024); } nrtracks++; sel = sel->next; } /* no tracks selected */ if (nrtracks == 0) { show_dialog(ICO_WARN,text(302),T_OK,NULL,NULL,0); return; } /* so...if we are here, we have at least one selected track that matches our CD */ /* free structure first */ clear_trackreadset(); /* fill structure */ trackreadset.nrtracks = nrtracks; tcount = 0; sel = imglist->selection; while (sel) { row = GPOINTER_TO_INT(sel->data); if (get_trackname_from_row(row, tmp) != 0) { sel = sel->next; continue; } /* we get now the full track-filename in tmp */ tracknr = get_tracknr_from_imagelist(tmp); if (get_type_from_imagelist(tmp) == 1) { /* audio */ type = 1; } else { /* data */ type = 0; } size = (gint) get_size_from_imagelist(tmp)/1024; /* no info-file, therefore tracknr 0 */ if (tracknr == 0) { /* we can only guess what the track could be - track 1 seems to be the most sensible choice */ tracknr = 1; } /* allocate memory */ trackparam = g_new0(track_read_param_t,1); trackparam->trackinfo_index = tracknr-1; trackparam->starttrack = tracknr; trackparam->endtrack = 0; trackparam->tracktype = type; per = (gfloat)size / sizecount; trackparam->percent = per; g_free(trackparam->trackfile); trackparam->trackfile = g_strdup(tmp); if (type == 0) { /* data track */ trackparam->kbyte = trackinfo[tracknr-1]->size * (DATASECTORSIZE/1024); trackparam->frames = trackinfo[tracknr-1]->size; trackparam->startoffset = trackinfo[tracknr-1]->start_sec; if (tracknr-1 == 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[tracknr]->start_sec -150-2; } } else { /* audio */ trackparam->kbyte = trackinfo[tracknr-1]->size * CDDAFRAME/1024; trackparam->frames = trackinfo[tracknr-1]->size; } trackreadset.trackparams = g_list_append( trackreadset.trackparams, trackparam); sel = sel->next; } /* assign an empty toc-filename */ g_free(trackreadset.tocfile); trackreadset.tocfile = g_strdup(""); /* now all parameters for verifying are set - lets begin */ show_and_do_verify_tracks(curset.reader_devnr);}void verify_select_all(GtkWidget *widget, gpointer data) { gtk_clist_select_all(imglist);}void verify_select_none(GtkWidget *widget, gpointer data) { gtk_clist_unselect_all(imglist);}void verify_select_row(GtkWidget *clist, gint row, gint col, GdkEventButton *event, gpointer data) { update_verify_size(row);}/* draw verify-tracks menu */void draw_verify_tracks() {GtkWidget *hbox, *vbox;GtkWidget *f1, *f2, *f3;GtkWidget *b1;GtkWidget *e1;GtkWidget *l1;GtkWidget *tbl, *check;gchar *titles[2];GtkWidget *scrolled_win, *img_list; /* 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); /* 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(233)); 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(232)); 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(221)); gtk_box_pack_start(GTK_BOX(hbox),b1,TRUE,TRUE,10); gtk_signal_connect(GTK_OBJECT(b1),"clicked", GTK_SIGNAL_FUNC(verify_select_all), NULL); define_tooltip(b1,help(89)); gtk_widget_show(b1); b1 = gtk_button_new_with_label(text(222)); gtk_box_pack_start(GTK_BOX(hbox),b1,TRUE,TRUE,10); gtk_signal_connect(GTK_OBJECT(b1),"clicked", GTK_SIGNAL_FUNC(verify_select_none), NULL); define_tooltip(b1,help(90)); gtk_widget_show(b1); b1 = gtk_button_new_with_label(text(301)); 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(verifysometracks_clicked), NULL); define_tooltip(b1,help(91)); /* 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(); vrylist_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(); vrylist_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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -