⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 create.c

📁 -一个LINUX下的使用方&#63845 的CD-ROM刻录软件,开放源码
💻 C
📖 第 1 页 / 共 5 页
字号:
                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 + -