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

📄 duplicate.c

📁 -一个LINUX下的使用方&#63845 的CD-ROM刻录软件,开放源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	f1 = gtk_frame_new(text(96));	set_font_and_color(f1,BOLDFONT,NULL);	gtk_table_attach_defaults(GTK_TABLE(tbl),f1,0,1,0,1);	gtk_widget_show(f1);	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);	/* 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(98));	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(cddb_clicked), NULL);	define_tooltip(b1,help(47));/*	b1 = gtk_button_new_with_label(text(99));	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);	define_tooltip(b1,help(48));*/	b_update = gtk_button_new_with_label(text(100));	gtk_box_pack_start(GTK_BOX(hbox),b_update,TRUE,TRUE,10);	gtk_widget_show(b_update);	gtk_signal_connect(GTK_OBJECT(b_update), "clicked",		GTK_SIGNAL_FUNC(update_clicked), NULL);	define_tooltip(b_update,help(49));	/* 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);	scrolled_win = gtk_scrolled_window_new (NULL, NULL);	gtk_box_pack_start(GTK_BOX(vbox),scrolled_win,TRUE,TRUE,0);	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),		GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);	gtk_widget_show(scrolled_win);		titles[0] = g_strdup("");	titles[1] = text(101);	cd_list = gtk_clist_new_with_titles(2,titles);	gtk_signal_connect(GTK_OBJECT(cd_list), "select_row",		GTK_SIGNAL_FUNC(undo_selections), NULL);	gtk_container_add (GTK_CONTAINER (scrolled_win), cd_list);	cdlist = GTK_CLIST(cd_list);	gtk_clist_set_column_width(cdlist, 0, 16);	gtk_clist_set_column_auto_resize(cdlist, 1, TRUE);	gtk_widget_show(cd_list);	tbl = gtk_table_new(3,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);	/* 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);	scrolled_win = gtk_scrolled_window_new (NULL, NULL);	gtk_box_pack_start(GTK_BOX(vbox),scrolled_win,TRUE,TRUE,0);	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),		GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);	gtk_widget_show(scrolled_win);		titles[0] = g_strdup("");	titles[1] = text(102);	img_list = gtk_clist_new_with_titles(2,titles);	gtk_signal_connect(GTK_OBJECT(img_list), "select_row",		GTK_SIGNAL_FUNC(undo_selections), NULL);	gtk_container_add (GTK_CONTAINER (scrolled_win), img_list);	imglist = GTK_CLIST(img_list);	gtk_clist_set_column_width(imglist, 0, 16);	gtk_clist_set_column_auto_resize(imglist, 1, TRUE);	gtk_widget_show(img_list);	tbl = gtk_table_new(1,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(106));	gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,3,0,1);	gtk_widget_show(l1);	e1 = gtk_entry_new();	imglist_l1 = e1;	gtk_entry_set_editable(GTK_ENTRY(e1),FALSE);	gtk_table_attach_defaults(GTK_TABLE(tbl),e1,3,8,0,1);	gtk_widget_show(e1);	gtk_widget_show(actionspace);	while (gtk_events_pending())		gtk_main_iteration();	/* now update screen */	gtk_button_clicked(GTK_BUTTON(b_update));}/* calculate the space that would be recycled on the harddrive   when reading tracks and overwriting the ones with same names.   This is used to show the user what space really is free    dependant of the name he chooses for his files */gint get_free_space_by_overwriting_trackfiles(gint *biggest) {track_read_param_t *trackparam;gfloat per;gint i;gint overwrite;gint overwritebiggest;	/* cd loaded? */	if (cdinfo.nr_tracks < 0) {		/* no cd in drive - no files to read */		*biggest = 0;		return 0;	}	/* free structure first */	clear_trackreadset();	/* fill structure */	trackreadset.nrtracks = cdinfo.nr_tracks;	for(i=0; i<cdinfo.nr_tracks; i++) {		/* allocate memory */		trackparam = g_new0(track_read_param_t,1);		trackparam->trackinfo_index = i;		trackparam->starttrack = trackinfo[i]->track_nr;		trackparam->endtrack = 0;		trackparam->tracktype = trackinfo[i]->type;		per = (gfloat)trackinfo[i]->size * 100.0  / cdinfo.total_size;		trackparam->percent = per;				if (trackparam->tracktype == 0) {			/* data track */			trackparam->kbyte = trackinfo[i]->size *				(DATASECTORSIZE/1024);			trackparam->frames = trackinfo[i]->size;			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; 				}		} else {			/* audio */			trackparam->kbyte = trackinfo[i]->size *				CDDAFRAME/1024;			trackparam->frames = trackinfo[i]->size;		}		trackreadset.trackparams = g_list_append(			trackreadset.trackparams, trackparam);	}	/* assign diskspace */	allocate_track_filenames(&overwrite, &overwritebiggest); 	*biggest = overwritebiggest;	return overwrite;}/* callbacks for button in read-screen */void readalltracks_clicked(GtkWidget *widget, gpointer data) {gchar path[MAXLINE];gchar tmp[MAXLINE];track_read_param_t *trackparam;gfloat per;gint i, ret, tocindex;gint overwrite, overwritebiggest;	/* 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) {		/* update screen ... */		fill_read_menu();		show_dialog(ICO_WARN,text(266),T_OK,NULL,NULL,0);		return;	}	/* now check for cd-extra because we dont handle this 	   currently */	if (determine_cd_type(tmp,0) == 3) {		show_dialog(ICO_INFO,text(286),T_OK,NULL,NULL,0);		return;	}		/* ok, the user wants to read all tracks */	/* lets check if the file-prefix-entry is up to date */	set_image_prefix_callback(imglist_l1, NULL); 	/* free structure first */	clear_trackreadset();	/* fill structure */	trackreadset.nrtracks = cdinfo.nr_tracks;	for(i=0; i<cdinfo.nr_tracks; i++) {		/* allocate memory */		trackparam = g_new0(track_read_param_t,1);		trackparam->trackinfo_index = i;		trackparam->starttrack = trackinfo[i]->track_nr;		trackparam->endtrack = 0;		trackparam->tracktype = trackinfo[i]->type;		per = (gfloat)trackinfo[i]->size * 100.0  / cdinfo.total_size;		trackparam->percent = per;				if (trackparam->tracktype == 0) {			/* data track */			trackparam->kbyte = trackinfo[i]->size *				(DATASECTORSIZE/1024);			trackparam->frames = trackinfo[i]->size;			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; 				}		} else {			/* audio */			trackparam->kbyte = trackinfo[i]->size *				CDDAFRAME/1024;			trackparam->frames = trackinfo[i]->size;		}		trackreadset.trackparams = g_list_append(			trackreadset.trackparams, trackparam);	}	/* assign diskspace */	if (allocate_track_filenames(&overwrite, &overwritebiggest) != 0) {		/* not enough space */		ret = show_dialog(ICO_WARN,text(299), T_ANYWAY, T_CANCEL, NULL, 1);		if (ret == 1) {			/* abort */			return;		}	}		/* assign now a toc-file name */	if (curset.image_index == -1) {		tocindex = 0;	} else {		tocindex = curset.image_index;	}	strncpy(path,(gchar *)g_list_nth_data(setupdata.image_dirs,		tocindex), MAXLINE);	g_snprintf(tmp,MAXLINE,"%s/%s.toc",path,curset.file_prefix);	g_free(trackreadset.tocfile);	trackreadset.tocfile = g_strdup(tmp);	/* now all parameters for reading are set - lets begin */	show_and_do_read_tracks(curset.reader_devnr, 1);}/* fill the entries in the read_cd_menu */void fill_read_menu() {gchar tmp[MAXLINE];gchar tmp2[MAXLINE];gchar tmp3[MAXLINE];gint overwritefree, normalfree, biggestfree, overwritefreebiggest;	/* file prefix */	if (strcmp(curset.file_prefix,"") == 0) {		g_free(curset.file_prefix);		curset.file_prefix = g_strdup(IMGFILEPREFIX);	}	gtk_entry_set_text(GTK_ENTRY(imglist_l1), curset.file_prefix);	gtk_entry_select_region(GTK_ENTRY(imglist_l1), 0, 		GTK_ENTRY(imglist_l1)->text_length);	/* now check if the current filename has any influence on	   the available space */	overwritefree = 		get_free_space_by_overwriting_trackfiles(&overwritefreebiggest);	/* free size */	normalfree = determine_free_space(&biggestfree);	convert_kbytes2mbminstring(normalfree,tmp3);	/* additional free space when overwriting files? */	if (cdinfo.nr_tracks > 0 && overwritefree > 0) {		convert_kbytes2mbstring(normalfree+overwritefree, tmp2);		g_snprintf(tmp,MAXLINE,"%s (%s)", tmp3, tmp2);	} else {		strcpy(tmp,tmp3);	}	gtk_entry_set_text(GTK_ENTRY(imglist_l2), tmp);	/* biggest free block */	convert_kbytes2mbminstring(biggestfree,tmp3);	if (cdinfo.nr_tracks > 0 && overwritefreebiggest > 0) {		convert_kbytes2mbstring(biggestfree+overwritefreebiggest, tmp2);		g_snprintf(tmp,MAXLINE,"%s (%s)", tmp3, tmp2);	} else {		strcpy(tmp,tmp3);	}	gtk_entry_set_text(GTK_ENTRY(imglist_l3), tmp);	/* cd loaded? */	if (cdinfo.nr_tracks == -1) {		gtk_entry_set_text(GTK_ENTRY(cdlist_l1), text(156));    		gtk_entry_set_text(GTK_ENTRY(cdlist_l2),"");			gtk_entry_set_text(GTK_ENTRY(cdlist_l3),"");			gtk_entry_set_text(GTK_ENTRY(cdlist_l4),"");			return;        }	if (cdinfo.nr_tracks == -2) {		gtk_entry_set_text(GTK_ENTRY(cdlist_l1), text(196));    		gtk_entry_set_text(GTK_ENTRY(cdlist_l2),"");			gtk_entry_set_text(GTK_ENTRY(cdlist_l3),"");			gtk_entry_set_text(GTK_ENTRY(cdlist_l4),"");			return;        }	/* cd-type */	determine_cd_type(tmp,0);	gtk_entry_set_text(GTK_ENTRY(cdlist_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(cdlist_l2), tmp);		gtk_entry_set_position(GTK_ENTRY(cdlist_l2),0);	} else 	if (cdinfo.cddb_dtitle != NULL) {		gtk_entry_set_text(GTK_ENTRY(cdlist_l2), cdinfo.cddb_dtitle);   		gtk_entry_set_position(GTK_ENTRY(cdlist_l2),0);	} else {		gtk_entry_set_text(GTK_ENTRY(cdlist_l2),"");    	}	/* cd-size */	convert_frames2mbminstring(cdinfo.total_size, tmp);	gtk_entry_set_text(GTK_ENTRY(cdlist_l3), tmp);	/* nr tracks */		g_snprintf(tmp,MAXLINE,"%d",cdinfo.nr_tracks);	gtk_entry_set_text(GTK_ENTRY(cdlist_l4), tmp);}void set_image_prefix_callback(GtkWidget *widget, gpointer data) {gchar tmp[MAXLINE];	g_free(curset.file_prefix);	strcpy(tmp,gtk_entry_get_text(GTK_ENTRY(widget)));	/* now check for illegal chars */	if (remove_illegal_chars(tmp) == 1) {		gtk_entry_set_text(GTK_ENTRY(widget), tmp);		show_dialog(ICO_WARN,text(265),T_OK,NULL,NULL, 0);	}	curset.file_prefix = g_strdup(tmp);	/* empty-file? */	if (strcmp(curset.file_prefix,"") == 0) {		g_free(curset.file_prefix);		curset.file_prefix = g_strdup(IMGFILEPREFIX);		gtk_entry_set_text(GTK_ENTRY(widget), curset.file_prefix);	}	gtk_entry_select_region(GTK_ENTRY(widget), 0,		GTK_ENTRY(widget)->text_length);	/* update free overwrite size */	if (submenu == 1) {		fill_read_menu();	}	if (submenu == 2 && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(side_widgets2[1])) == 1) {		fill_read_tracks(1);	}	if (submenu == 2 && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(side_widgets2[4])) == 1) {		fill_master_write_menu();	}}void readoptions_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.indexscan = sel;			break;	}}/* draw the read-menu */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -