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

📄 main.c

📁 -一个LINUX下的使用方&#63845 的CD-ROM刻录软件,开放源码
💻 C
字号:
/*	main.c	13.3.99 tn*/#include <stdio.h>#include <gtk/gtk.h>#include <gdk/gdk.h>#include <gdk_imlib.h>#include "xcdroast.h"#include "main.h"#include "xpms/xcdricon.xpm"GtkWidget *toplevel;GtkWidget *splitspace;GtkWidget *sidespace;GtkWidget *workspace;setup_data_t setupdata;current_set_t curset;extern gchar sharedir[MAXLINE];extern gchar xcdroast_version_loaded[MAXLINE];gint lastxsize, lastysize;gint debug;gint submenu;gint bigfonts;gint oldfontcode;gint ignorescanbus;/* exit-button handler */void menu_exit(GtkWidget *widget, gpointer data) {gint ret;	ret = show_dialog(ICO_QUEST,text(12),T_YES,T_NO,NULL,0);		if (ret == 0) {		dolog(1,"Exiting...\n");		gtk_main_quit();	}}/* set the width of the sidebar - relative to width of toplevel */void set_sidebar_width() {gint x, y;gint val;	/* check if we are already realized */	if (GTK_WIDGET(toplevel)->window == NULL) {		val = 150;	} else {		/* set relative to new size */		gdk_window_get_size(GTK_WIDGET(toplevel)->window,&x,&y);		val = (x*150)/790;	}	gtk_widget_set_usize(sidespace,val,0);}/* called everytime some window resizes - we check if the toplevel   changed and set the sidebar to the value we want. This way   we can dynamically resize and the layout does not change */void resize_handler(GtkWidget *widget, gpointer data) {gint x, y;	/* check if we are already realized */	if (GTK_WIDGET(toplevel)->window == NULL) 		return;	gdk_window_get_size(GTK_WIDGET(toplevel)->window,&x,&y);	/* size of toplevel changed? */	if (x != lastxsize || y != lastysize) {		/* remember new size */		lastxsize = x;		lastysize = y;		/* set sidebar width to new value */		set_sidebar_width();	}}/* setup-button handler */void menu_setup(GtkWidget *widget, gpointer data) {	dolog(2,"Entering setup\n");	create_setup();}/* duplicate-button handler */void menu_duplicate(GtkWidget *widget, gpointer data) {	dolog(2,"Entering duplicate cd\n");	create_duplicate();}/* create-button handler */void menu_create(GtkWidget *widget, gpointer data) {	dolog(2,"Entering create cd\n");	create_create();}/* set the pixmap icon */void set_wm_icon() {GtkStyle *style;GdkBitmap *bitmap;GdkPixmap *pixmap;GdkColormap *colormap;GdkColor wait_color={0,0,0,0};	style=gtk_widget_get_style(GTK_WIDGET(toplevel));	pixmap=gdk_pixmap_create_from_xpm_d(GTK_WIDGET(toplevel)->window,		&bitmap, &style->bg[GTK_STATE_NORMAL], xcdricon_xpm);	colormap = gtk_widget_get_colormap(GTK_WIDGET(toplevel));	gdk_color_alloc (colormap, &wait_color);	gdk_window_set_icon(GTK_WIDGET(toplevel)->window, (GdkWindow *)NULL,  pixmap, bitmap);}/* draw the main-menu */void create_main(gint confignotloaded) {GtkWidget *side_t;GtkWidget *side_t_btn1;GtkWidget *side_t_btn2;GtkWidget *side_t_btn3;GtkWidget *side_t_btn4;GtkWidget *work_t;GtkWidget *work_t_l1;GtkWidget *work_t_l2;GdkPixmap *p;GdkBitmap *m;GdkImlibImage *im;GtkWidget *xcdroast_logo, *burnproof_logo;GtkWidget *logoalign;gint w,h;gchar tmp[MAXLINE];	submenu = 0;        clear_sidespace();        clear_workspace();	side_t = gtk_table_new(10,10, TRUE);	gtk_table_set_row_spacings(GTK_TABLE(side_t),10);	gtk_box_pack_start(GTK_BOX(sidespace), side_t,TRUE,TRUE,0);	side_t_btn1 = gtk_button_new_with_label (text(4));	side_t_btn2 = gtk_button_new_with_label (text(5));	side_t_btn3 = gtk_button_new_with_label (text(6));	side_t_btn4 = gtk_button_new_with_label (text(7));	gtk_signal_connect (GTK_OBJECT (side_t_btn1), "clicked",		GTK_SIGNAL_FUNC(menu_setup),NULL);	gtk_signal_connect (GTK_OBJECT (side_t_btn2), "clicked",		GTK_SIGNAL_FUNC(menu_duplicate),NULL);	gtk_signal_connect (GTK_OBJECT (side_t_btn3), "clicked",		GTK_SIGNAL_FUNC(menu_create),NULL);	gtk_signal_connect (GTK_OBJECT (side_t_btn4), "clicked",		GTK_SIGNAL_FUNC(menu_exit),NULL);	gtk_table_attach_defaults(GTK_TABLE(side_t), side_t_btn1, 0,10,4,5);	gtk_widget_show(side_t_btn1); 	define_tooltip(side_t_btn1,help(0));	gtk_table_attach_defaults(GTK_TABLE(side_t), side_t_btn2, 0,10,5,6);	gtk_widget_show(side_t_btn2); 	define_tooltip(side_t_btn2,help(1));	gtk_table_attach_defaults(GTK_TABLE(side_t), side_t_btn3, 0,10,6,7);	gtk_widget_show(side_t_btn3); 	define_tooltip(side_t_btn3,help(2));	gtk_table_attach_defaults(GTK_TABLE(side_t), side_t_btn4, 0,10,8,9);	gtk_widget_show(side_t_btn4); 	define_tooltip(side_t_btn4,help(3));	gtk_widget_show(side_t);	gtk_widget_show(sidespace);	/* draw the workspace */	work_t = gtk_table_new(10,10, TRUE);	gtk_box_pack_start(GTK_BOX(workspace), work_t,TRUE,FALSE,0);        /* load a gif-image and put into a pixmap */	g_snprintf(tmp,MAXLINE,"%s/%s", sharedir, XCDRLOGO);        im=gdk_imlib_load_image(tmp);	if (im) {        	w=im->rgb_width;        	h=im->rgb_height;        	gdk_imlib_render(im,w,h);        	p=gdk_imlib_move_image(im);        	m=gdk_imlib_move_mask(im);        	xcdroast_logo = gtk_pixmap_new(p,m);	} else {		xcdroast_logo = gtk_label_new("[LOGO]");	}	gtk_table_attach_defaults(GTK_TABLE(work_t), xcdroast_logo, 0,10,0,4);	gtk_misc_set_alignment(GTK_MISC(xcdroast_logo),1.0f, 1.0f);	gtk_widget_show(xcdroast_logo);        /* load a gif-image and put into a pixmap */	g_snprintf(tmp,MAXLINE,"%s/%s", sharedir, BURNPROOFLOGO);        im=gdk_imlib_load_image(tmp);	if (im) {        	w=im->rgb_width;        	h=im->rgb_height;        	gdk_imlib_render(im,w,h);        	p=gdk_imlib_move_image(im);        	m=gdk_imlib_move_mask(im);        	burnproof_logo = gtk_pixmap_new(p,m);	} else {		burnproof_logo = gtk_label_new("[BURNPROOF]");	}	logoalign = gtk_alignment_new(1.0,1.0,0,0);	gtk_container_add(GTK_CONTAINER(logoalign), burnproof_logo);	gtk_table_attach_defaults(GTK_TABLE(work_t), logoalign, 0,10,9,10);	gtk_widget_show(burnproof_logo);	gtk_widget_show(logoalign);	g_snprintf(tmp,MAXLINE,text(3),XCDROAST_VERSION);	work_t_l1=gtk_label_new(tmp);	gtk_label_set_justify(GTK_LABEL(work_t_l1),GTK_JUSTIFY_CENTER);	gtk_table_attach_defaults(GTK_TABLE(work_t), work_t_l1, 0,10,4,5);	set_font_and_color(work_t_l1,BIGFONT,"red");	work_t_l2=gtk_label_new(text(1));	gtk_label_set_justify(GTK_LABEL(work_t_l2),GTK_JUSTIFY_CENTER);	gtk_table_attach_defaults(GTK_TABLE(work_t), work_t_l2, 0,10,5,6);	gtk_widget_show(work_t_l1);	gtk_widget_show(work_t_l2);	gtk_widget_show(work_t);		gtk_widget_show(workspace);	if (confignotloaded) {		gtk_widget_set_sensitive(side_t_btn2, FALSE);		gtk_widget_set_sensitive(side_t_btn3, FALSE);	}}/* main */gint main(gint argc, gchar *argv[]) {GtkWidget *w;gint confignotloaded;gchar tmp[MAXLINE];GtkStyle *style;	gtk_set_locale();	gtk_init(&argc,&argv);	gdk_imlib_init();	gtk_widget_push_colormap(gdk_imlib_get_colormap());	gtk_widget_push_visual(gdk_imlib_get_visual());	/* private init for xcdroast */	confignotloaded = init(argc, argv);	w = gtk_window_new(GTK_WINDOW_TOPLEVEL);	/* save this pointer for future reference */	toplevel = w;	lastxsize = 0;	lastysize = 0;	/* check which font size we are running */	style = gtk_widget_get_style(toplevel);	if (gdk_char_height(style->font,'|') > 12) {		/* our font is higher as 12 pixels */		bigfonts = 1;	} else {		bigfonts = 0;	}	gtk_widget_realize(toplevel);	set_wm_icon();	gtk_window_set_title(GTK_WINDOW(w),text(2));	if (bigfonts == 0) {		/* size for 75dpi fonts */		gtk_widget_set_usize(GTK_WIDGET(w),			XCDR_TOPLEVEL_X0,XCDR_TOPLEVEL_Y0);	} else {		/* size for 100dpi fonts */		gtk_widget_set_usize(GTK_WIDGET(w),			XCDR_TOPLEVEL_X1,XCDR_TOPLEVEL_Y1);	}	gtk_container_border_width(GTK_CONTAINER(w),10);	gtk_signal_connect (GTK_OBJECT(w), "destroy",		GTK_SIGNAL_FUNC (gtk_exit), NULL);	gtk_signal_connect (GTK_OBJECT(w), "delete_event",		GTK_SIGNAL_FUNC(menu_exit), NULL);	gtk_signal_connect (GTK_OBJECT(w), "size_request",		GTK_SIGNAL_FUNC(resize_handler), NULL);	splitspace = gtk_hpaned_new();	gtk_container_add(GTK_CONTAINER(w),splitspace);	gtk_paned_handle_size(GTK_PANED(splitspace),0);	gtk_paned_gutter_size(GTK_PANED(splitspace),20);	/* left side */	sidespace = gtk_vbox_new(FALSE,0);	gtk_paned_add1(GTK_PANED(splitspace), sidespace);	set_sidebar_width();	/* right side */	workspace = gtk_vbox_new(FALSE,0);	gtk_paned_add2(GTK_PANED(splitspace), workspace);        /* check if screen-size is big enough */	if (check_screensize(bigfonts)) { 		if (bigfonts == 0) {			g_snprintf(tmp,MAXLINE,text(290), 800, 600);		} else {			g_snprintf(tmp,MAXLINE,text(290), 1024, 768);		}		show_dialog(ICO_ERROR,tmp,T_OK,NULL,NULL,0);		gtk_exit(1);	}	if (confignotloaded) {		show_dialog(ICO_INFO, text(279), T_OK, NULL, NULL, 0);	} else {		/* check if the configfile is for current version of xcdroast */		if (strcmp(XCDROAST_VERSION, xcdroast_version_loaded) != 0) {			g_snprintf(tmp,MAXLINE,text(280), xcdroast_version_loaded);			show_dialog(ICO_INFO, tmp, T_OK, NULL, NULL, 0);			strcpy(xcdroast_version_loaded,"");			confignotloaded = 1;		}		/* now check if our config is matching the current hardware */		if (verify_loaded_config() == 1) {			/* scsi-bus changed */			show_dialog(ICO_WARN, text(284), T_OK, NULL, NULL, 0);			strcpy(xcdroast_version_loaded,"");			confignotloaded = 1;		}		if (verify_loaded_config2() == 1) {			/* image-dirs changed */			show_dialog(ICO_WARN, text(285), T_OK, NULL, NULL, 0);			strcpy(xcdroast_version_loaded,"");			confignotloaded = 1;		}	}	create_main(confignotloaded);	gtk_widget_show(splitspace);	gtk_widget_show(w);	/* lets see if we have special writer-options available */	scanoptions(setupdata.writer_devnr);	/* show disclaimer */	if (show_dialog(ICO_WARN, text(288), T_YES, T_NO, NULL, 1) == 1) {		gtk_exit(1);	}	gtk_main();		return 0;}

⌨️ 快捷键说明

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