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

📄 gvxprn.c

📁 GSview 4.6 PostScript previewer。Ghostscript在MS-Windows, OS/2 and Unix下的图形化接口
💻 C
📖 第 1 页 / 共 5 页
字号:
    
    vbox = gtk_vbox_new(FALSE, 4);
    gtk_widget_show(vbox);
    gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 4);

    check_ctrld_before = gtk_check_button_new_with_label(
	get_string(IDS_AASENDCTRLDBEFORE));
    gtk_widget_show(check_ctrld_before);
    gtk_box_pack_start(GTK_BOX(vbox), check_ctrld_before, FALSE, FALSE, 4);

    check_ctrld_after = gtk_check_button_new_with_label(
	get_string(IDS_AASENDCTRLDAFTER));
    gtk_widget_show(check_ctrld_after);
    gtk_box_pack_start(GTK_BOX(vbox), check_ctrld_after, FALSE, FALSE, 4);

    label = gtk_label_new(get_string(IDS_AAPROLOGFILE));
    gtk_widget_show(label);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_widget_show(con);
    gtk_container_add(GTK_CONTAINER(con), label);
    gtk_box_pack_start(GTK_BOX(vbox), con, FALSE, FALSE, 0);

    entry_prolog = gtk_entry_new();
    gtk_entry_set_max_length(GTK_ENTRY(entry_prolog), MAXSTR-1);
    gtk_box_pack_start(GTK_BOX(vbox), entry_prolog, FALSE, FALSE, 0);
    gtk_widget_show(entry_prolog);

    label = gtk_label_new(get_string(IDS_AAEPILOGFILE));
    gtk_widget_show(label);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_widget_show(con);
    gtk_container_add(GTK_CONTAINER(con), label);
    gtk_box_pack_start(GTK_BOX(vbox), con, FALSE, FALSE, 0);

    entry_epilog = gtk_entry_new();
    gtk_entry_set_max_length(GTK_ENTRY(entry_epilog), MAXSTR-1);
    gtk_box_pack_start(GTK_BOX(vbox), entry_epilog, FALSE, FALSE, 0);
    gtk_widget_show(entry_epilog);


    /* Create and place the buttons in a hbox at the bottom */
    hbox_buttons = gtk_hbox_new(TRUE, 4);
    gtk_box_pack_start(GTK_BOX(vbox), hbox_buttons, FALSE, FALSE, 8);
    gtk_widget_show(hbox_buttons);

    button_ok = gtk_button_new_with_label(get_string(IDS_AAOK));
    button_cancel = gtk_button_new_with_label(get_string(IDS_AACANCEL));
    button_help = gtk_button_new_with_label(get_string(IDS_AAHELP));

    gtk_box_pack_start(GTK_BOX(hbox_buttons), button_ok, TRUE, TRUE, 5);
    gtk_box_pack_start(GTK_BOX(hbox_buttons), button_cancel, TRUE, TRUE, 5);
    gtk_box_pack_start(GTK_BOX(hbox_buttons), button_help, TRUE, TRUE, 5);

    /* Connect our callbacks to the buttons */
    gtk_signal_connect(GTK_OBJECT(button_ok), "clicked",
                              GTK_SIGNAL_FUNC(modal_ok), &rc);
    gtk_signal_connect(GTK_OBJECT(button_cancel), "clicked",
                              GTK_SIGNAL_FUNC(modal_cancel), &rc);
    gtk_signal_connect(GTK_OBJECT(button_help), "clicked",
                              GTK_SIGNAL_FUNC(modal_help), &rc);

    gtk_widget_show(button_ok);
    gtk_widget_show(button_cancel);
    gtk_widget_show(button_help);

    /* initialise fields */
strcpy(section, "Options");
/* section should be printer name ?? */
/* maybe get this from parent widget/data */

    if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
	profile_read_string(prf, section, "PreCtrlD", "0", buf, 
	    sizeof(buf)-2);
	if (sscanf(buf, "%d", &prectrld) != 1)
	    prectrld = 0;
	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_ctrld_before), 
	    prectrld);
	profile_read_string(prf, section, "PostCtrlD", "0", buf, 
	    sizeof(buf)-2);
	if (sscanf(buf, "%d", &postctrld) != 1)
	    postctrld = 0;
	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_ctrld_after), 
	    postctrld);
	profile_read_string(prf, section, "Prolog", "", buf, 
	   sizeof(buf)-2);
        gtk_entry_set_text(GTK_ENTRY(entry_prolog), buf);
	profile_read_string(prf, section, "Epilog", "", buf, 
	   sizeof(buf)-2);
        gtk_entry_set_text(GTK_ENTRY(entry_epilog), buf);
	profile_close(prf);
    }

    /* show dialog and wait for OK, Cancel or close */
    gtk_window_set_modal(GTK_WINDOW(window), TRUE);
    gtk_widget_show(window);
    gtk_main();

    if ( (rc == IDOK) && 
         ((prf = profile_open(szIniFile)) != (PROFILE *)NULL) ) {
	int prectrld;
	int postctrld;
	/* save settings */
	prectrld = gtk_toggle_button_get_active(
		GTK_TOGGLE_BUTTON(check_ctrld_before));
	profile_write_string(prf, section, "PreCtrlD", prectrld ? "1" : "0");
	postctrld = gtk_toggle_button_get_active(
		GTK_TOGGLE_BUTTON(check_ctrld_after));
	profile_write_string(prf, section, "PostCtrlD", postctrld ? "1" : "0");
	profile_write_string(prf, section, "Prolog", 
	    gtk_entry_get_text(GTK_ENTRY(entry_prolog)));
	profile_write_string(prf, section, "Epilog", 
	    gtk_entry_get_text(GTK_ENTRY(entry_epilog)));
	profile_close(prf);
    }
    gtk_widget_destroy(window);
}

int print_dialog_box(BOOL convert)
{
    GtkWidget *window;		/* main dialog window */
    GtkWidget *hbox;		/* hbox for list on left, buttons on right */
    GtkWidget *vbox;		/* vbox on right for buttons */
    GtkWidget *vbox_dev;
    GtkWidget *device;
    GtkWidget *dev_label;
    GtkWidget *vbox_res;
    GtkWidget *resolution;
    GtkWidget *res_label;
    GtkWidget *hbox_devres;
    GtkWidget *button_reverse=NULL;
    GtkWidget *options_label;
    GtkWidget *options;
    GtkWidget *vbox_left;
    GtkWidget *combo_fixed_media=NULL;
    GtkWidget *hbox_ps=NULL;
    GtkWidget *button_psprint=NULL;
    GtkWidget *button_psadv=NULL;
    GtkWidget *button_printfile=NULL;
    GtkWidget *printer_label;
    GtkWidget *printer=NULL;
    GtkWidget *scrolled_window, *clist=NULL;	/* page list */
    GtkWidget *button_ok, *button_cancel, *button_prop, *button_help;
    GtkWidget *button_all=NULL, *button_odd=NULL, *button_even=NULL;    
    GtkWidget *con;
    guint res_signal, options_signal;
    int rc = 0;
    int i;
    char *devs, *dev;
    GList *list, *l;
    DEVRES dr;
    PROFILE *prf;

    if (psfile.dsc != (CDSC *)NULL) {
	psfile.page_list.current = psfile.pagenum-1;
	psfile.page_list.multiple = TRUE;
	if (psfile.page_list.select != (BOOL *)NULL)
	    for (i=0; i< (int)(psfile.dsc->page_count); i++)
		psfile.page_list.select[i] = TRUE;
    }

    window=gtk_window_new(GTK_WINDOW_DIALOG);
    /* Should we set a a default size? */

    gtk_window_set_title(GTK_WINDOW(window), 
	convert ? get_string(IDS_AACONVERT) : get_string(IDS_AAPRINTERSETUP));

    gtk_signal_connect(GTK_OBJECT(window),
                       "delete-event",
                       GTK_SIGNAL_FUNC(modal_delete),
                       &rc);
    
    hbox = gtk_hbox_new(FALSE, 5);
    gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);
    gtk_container_add(GTK_CONTAINER(window), hbox);
    gtk_widget_show(hbox);


    vbox_left = gtk_vbox_new(FALSE, 2);
    gtk_widget_show(vbox_left);
    gtk_box_pack_start(GTK_BOX(hbox), vbox_left, TRUE, TRUE, 4);

    hbox_devres = gtk_hbox_new(FALSE, 0);
    gtk_widget_show(hbox_devres);
    gtk_box_pack_start(GTK_BOX(vbox_left), hbox_devres, FALSE, FALSE, 4);

    /* Device */
    vbox_dev = gtk_vbox_new(FALSE, 2);
    gtk_widget_show(vbox_dev);
    dev_label = gtk_label_new(get_string(IDS_AADEVICEC));
    gtk_widget_show(dev_label);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_widget_show(con);
    gtk_container_add(GTK_CONTAINER(con), dev_label);
    gtk_box_pack_start(GTK_BOX(vbox_dev), con, FALSE, FALSE, 0);
    device = gtk_label_new("DEVICE COMBO BOX");

    list = NULL;
    dev = devs = get_devices(convert);
    while ( dev!=(char *)NULL && strlen(dev)!=0) {
	list = g_list_append(list, dev);
	dev += strlen(dev) + 1;
    }
    device = gtk_combo_new();
    if (list != NULL) {
	gtk_combo_set_popdown_strings(GTK_COMBO(device), list);
	g_list_free(list);
	list = NULL;
    }
    free(devs);
    gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(device)->entry), TRUE);
    gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(device)->entry), 
	convert ? option.convert_device : option.printer_device);
    gtk_widget_show(device);
    gtk_box_pack_start(GTK_BOX(vbox_dev), device, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_devres), vbox_dev, TRUE, TRUE, 0);
    gtk_signal_connect(GTK_OBJECT(GTK_COMBO(device)->entry), 
	"size-request", GTK_SIGNAL_FUNC(width_percent), (gpointer)70);

    /* Resolution */
    vbox_res = gtk_vbox_new(FALSE, 2);
    gtk_widget_show(vbox_res);
    res_label = gtk_label_new(get_string(IDS_AARESOLUTIONC));
    gtk_widget_show(res_label);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_widget_show(con);
    gtk_container_add(GTK_CONTAINER(con), res_label);
    gtk_box_pack_start(GTK_BOX(vbox_res), con, FALSE, FALSE, 0);
    resolution = gtk_combo_new();
    gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(resolution)->entry), TRUE);
    gtk_widget_show(resolution);
    gtk_box_pack_start(GTK_BOX(vbox_res), resolution, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_devres), vbox_res, TRUE, TRUE, 0);
    gtk_signal_connect(GTK_OBJECT(GTK_COMBO(resolution)->entry), 
	"size-request", GTK_SIGNAL_FUNC(width_percent), (gpointer)70);

    /* Fixed media */
    combo_fixed_media = gtk_combo_new();
    {	const char *s;
	char *p;
	GList *list = NULL;

 	for (i=0; i<3; i++) {
	    s = get_string(IDS_PAGESIZE_VARIABLE+i);
	    p = (char *)malloc(strlen(s)+1);
	    if (p) {
		strcpy(p, s);
		list = g_list_append(list, p);
	    }
	}

	gtk_combo_set_popdown_strings(GTK_COMBO(combo_fixed_media), list);
	l = list;
	while (l) {
	    free(l->data);
	    l = g_list_next(l);
	}
	g_list_free(list);
	list = NULL;
    }
    gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(combo_fixed_media)->entry), FALSE);
    gtk_widget_show(combo_fixed_media);
    gtk_box_pack_start(GTK_BOX(vbox_left), combo_fixed_media, FALSE, FALSE, 4);

    i = convert ? option.convert_fixed_media : option.print_fixed_media;
    if (i < 0)
	i = 0;
    if (i >=3)
	i = 2;
    gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(combo_fixed_media)->entry),
	 get_string(IDS_PAGESIZE_VARIABLE+i));


    /* Reverse */
    button_reverse = gtk_check_button_new_with_label(get_string(IDS_AAREVERSE));
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button_reverse), 
	option.print_reverse);
    gtk_widget_show(button_reverse);
    gtk_box_pack_start(GTK_BOX(vbox_left), button_reverse, FALSE, FALSE, 4);

    if (!convert) {
	/* Print */
	button_printfile = gtk_check_button_new_with_label(get_string(IDS_AAPRINTTOFILE));
	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button_printfile), 
	    option.print_to_file);
	gtk_widget_show(button_printfile);
	gtk_box_pack_start(GTK_BOX(vbox_left), button_printfile, FALSE, 
	    FALSE, 4);

	hbox_ps = gtk_hbox_new(FALSE, 5);
	gtk_container_set_border_width(GTK_CONTAINER(hbox_ps), 0);
	gtk_container_add(GTK_CONTAINER(vbox_left), hbox_ps);
	gtk_widget_show(hbox_ps);
	button_psprint = gtk_check_button_new_with_label(
	    get_string(IDS_AAPSPRINTER));
	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button_psprint), 
	    (option.print_method == PRINT_PS));
	gtk_widget_show(button_psprint);
	gtk_box_pack_start(GTK_BOX(hbox_ps), button_psprint, FALSE, FALSE, 0);
        button_psadv = gtk_button_new_with_label(get_string(IDS_AAADVANCED));
	gtk_widget_show(button_psadv);
	gtk_box_pack_end(GTK_BOX(hbox_ps), button_psadv, FALSE, FALSE, 0);
	gtk_signal_connect(GTK_OBJECT(button_psadv), "clicked",
			  GTK_SIGNAL_FUNC(advanced_ps_dialog), NULL);

	printer_label = gtk_label_new(get_string(IDS_AAQUEUEC));
	gtk_widget_show(printer_label);
	con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
	gtk_widget_show(con);
	gtk_container_add(GTK_CONTAINER(con), printer_label);
	gtk_box_pack_start(GTK_BOX(vbox_left), con, FALSE, FALSE, 0);
	printer = gtk_entry_new();
	gtk_entry_set_max_length(GTK_ENTRY(printer), 255);
	gtk_entry_set_text(GTK_ENTRY(printer), option.printer_queue);
	gtk_box_pack_start(GTK_BOX(vbox_left), printer, FALSE, FALSE, 4);
	gtk_widget_show(printer);
    }

    /* Options */
    options_label = gtk_label_new(get_string(IDS_AAOPTIONSC));
    gtk_widget_show(options_label);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_widget_show(con);
    gtk_container_add(GTK_CONTAINER(con), options_label);
    gtk_box_pack_start(GTK_BOX(vbox_left), con, FALSE, FALSE, 0);
    options = gtk_entry_new();
    gtk_entry_set_max_length(GTK_ENTRY(options), 255);
    gtk_entry_set_text(GTK_ENTRY(options), "");
    gtk_box_pack_start(GTK_BOX(vbox_left), options, FALSE, FALSE, 4);
    gtk_widget_show(options);

    /* update resolutions and options when device changed */
    dr.device = device;
    dr.resolution = resolution;
    dr.options = options;
    dr.bConvert = convert;
    res_signal = gtk_signal_connect(GTK_OBJECT(GTK_COMBO(device)->list), 
	"selection-changed", GTK_SIGNAL_FUNC(resolution_update), &dr);
    resolution_update(GTK_COMBO(device)->list, &dr);
    gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(resolution)->entry), 
	convert ? option.convert_resolution : option.printer_resolution);
    options_signal = gtk_signal_connect(GTK_OBJECT(GTK_COMBO(device)->list), 
	"selection-changed", GTK_SIGNAL_FUNC(options_update), &dr);
    options_update(GTK_COMBO(device)->list, &dr);

    if (psfile.dsc != (CDSC *)NULL) {
        char buf[MAXSTR];
	char *title;
	/* Create a scrolled window to pack the CList widget into */
	scrolled_window = gtk_scrolled_window_new (NULL, NULL);
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
				GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
	gtk_signal_connect(GTK_OBJECT(scrolled_window), "size-request",
			  GTK_SIGNAL_FUNC(width_percent), (gpointer)180);

	gtk_box_pack_start(GTK_BOX(hbox), scrolled_window, TRUE, TRUE, 0);
	gtk_widget_show (scrolled_window);

	strncpy(buf, get_string(IDS_AAPAGES), sizeof(buf)-1);
	title = buf;
	/* Create the CList for the pages */
	clist = gtk_clist_new_with_titles(1, (gchar **)&title);

	gtk_clist_set_shadow_type (GTK_CLIST(clist), GTK_SHADOW_OUT);

	/* We must set the default columnn width, in pixels */
	gtk_clist_set_column_width (GTK_CLIST(clist), 0, 64);

	/* Add the CList widget to the horizontal box and show it. */

⌨️ 快捷键说明

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