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

📄 gvxprn.c

📁 GSview 4.6 PostScript previewer。Ghostscript在MS-Windows, OS/2 and Unix下的图形化接口
💻 C
📖 第 1 页 / 共 5 页
字号:
    gtk_widget_show(prop_entry);
    gtk_entry_set_text(GTK_ENTRY(prop_entry), editpropname+1);

    /* Value */
    value_label = gtk_label_new(get_string(IDS_AAVALUESC));
    gtk_widget_show(value_label);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_widget_show(con);
    gtk_container_add(GTK_CONTAINER(con), value_label);
    gtk_box_pack_start(GTK_BOX(vbox), con, FALSE, FALSE, 0);
    value_entry = gtk_entry_new();
    gtk_entry_set_max_length(GTK_ENTRY(value_entry), MAXSTR-1);
    gtk_box_pack_start(GTK_BOX(vbox), value_entry, FALSE, FALSE, 0);
    gtk_widget_show(value_entry);

    if (*editpropname) {
	char section[MAXSTR];
	char buf[MAXSTR];
	strcpy(section, pv->device);
	strcat(section, " values");
	if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
	    profile_read_string(prf, section, editpropname, "", 
		    buf, sizeof(buf)-2);
	    profile_close(prf);
	    prf = NULL;
	}
	gtk_entry_set_text(GTK_ENTRY(value_entry), buf);
    }

    /* Buttons */
    /* Create and place the buttons in a vbox at the right */
    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));
    button_delete = gtk_button_new_with_label(get_string(IDS_AADELETE));

    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);
    gtk_box_pack_start(GTK_BOX(hbox_buttons), button_delete, 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_signal_connect(GTK_OBJECT(button_delete), "clicked",
                              GTK_SIGNAL_FUNC(edit_prop_delete), &rc);

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

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

    if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button_string)))
	strcpy(name, "s");
    else
	strcpy(name, "d");
    strncpy(name+1, gtk_entry_get_text(GTK_ENTRY(prop_entry)), sizeof(name)-2);
    strncpy(value, gtk_entry_get_text(GTK_ENTRY(value_entry)), sizeof(name)-1);
    strip_spaces(name);
    strip_spaces(value);
    strcpy(section, pv->device);
    strcat(section, " values");

    if (rc == IDOK) {
	/* save new setting */
	if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
	    if ((strlen(name)>1) && strlen(value)) {
		profile_write_string(prf, section, name, value);
		strtok(value, ",");
		profile_write_string(prf, pv->device, name, value);
	    }
	    profile_close(prf);
	}
    }
    else if (rc == EDITPROP_DEL) {
	/* delete entry */
	if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
	    if (strlen(name)>1) {
		profile_write_string(prf, section, name, NULL);
		profile_write_string(prf, pv->device, name, NULL);
	    }
	    profile_close(prf);
	}
    }

    gtk_widget_destroy(window);
    update_properties(pv);
    update_values(w, data);
}


void
new_prop_dialog(GtkWidget *w, gpointer data)
{
    PROPVALUES *pv = (PROPVALUES *)data;
    pv->new_property = TRUE;
    edit_prop_dialog(w, data);
}

void prop_dialog(GtkWidget *w, gpointer data)
{
    DEVRES *devres = (DEVRES *)data;

    GtkWidget *window;	/* main dialog window */
    GtkWidget *hbox;	/* hbox for controls on left, buttons on right */
    GtkWidget *vbox;	/* vbox on right for buttons */
    GtkWidget *vbox_left;
    GtkWidget *prop;
    GtkWidget *prop_label;
    GtkWidget *value;
    GtkWidget *value_label;
    GtkWidget *con;	/* container for alignment */
    GtkWidget *hbox_offset;
    GtkWidget *offset_label;
    GtkWidget *x_label;
    GtkWidget *y_label;
    GtkWidget *x_offset;
    GtkWidget *y_offset;
    GtkWidget *button_ok, *button_cancel, *button_help;
    GtkWidget *button_edit, *button_new;
    guint prop_signal;
    guint value_signal;
    PROFILE *prf;
    PROPVALUES pv;
    int rc = 0;
    int iprop;

    memset(&pv, 0, sizeof(PROPVALUES));
    strncpy(pv.device, 
	gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(devres->device)->entry)),
	sizeof(pv.device)-1);

    window=gtk_window_new(GTK_WINDOW_DIALOG);

    gtk_window_set_title(GTK_WINDOW(window), get_string(IDS_AAPROPERTIES));

    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);

    /* properties */
    prop_label = gtk_label_new(get_string(IDS_AAPROPERTYC));
    gtk_widget_show(prop_label);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_widget_show(con);
    gtk_container_add(GTK_CONTAINER(con), prop_label);
    gtk_box_pack_start(GTK_BOX(vbox_left), con, FALSE, FALSE, 0);
    prop = gtk_combo_new();
    gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(prop)->entry), FALSE);
    gtk_widget_show(prop);
    gtk_box_pack_start(GTK_BOX(vbox_left), prop, FALSE, FALSE, 0);
    pv.prop = prop;

    /* values */
    value_label = gtk_label_new(get_string(IDS_AAVALUEC));
    gtk_widget_show(value_label);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_widget_show(con);
    gtk_container_add(GTK_CONTAINER(con), value_label);
    gtk_box_pack_start(GTK_BOX(vbox_left), con, FALSE, FALSE, 0);
    value = gtk_combo_new();
    gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(value)->entry), FALSE);
    gtk_widget_show(value);
    gtk_box_pack_start(GTK_BOX(vbox_left), value, FALSE, FALSE, 0);
    pv.value = value;

    /* page offset offset */
    hbox_offset = gtk_hbox_new(FALSE, 0);
    gtk_widget_show(hbox_offset);
    gtk_box_pack_start(GTK_BOX(vbox_left), hbox_offset, FALSE, FALSE, 4);

    offset_label = gtk_label_new(get_string(IDS_AAPAGEOFFSETPT));
    gtk_widget_show(offset_label);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_widget_show(con);
    gtk_container_add(GTK_CONTAINER(con), offset_label);
    gtk_box_pack_start(GTK_BOX(hbox_offset), con, FALSE, FALSE, 0);

    x_label = gtk_label_new(get_string(IDS_AAXC));
    gtk_widget_show(x_label);
    con = gtk_alignment_new(1, 0, 0, 0);	/* right alignment */
    gtk_container_add(GTK_CONTAINER(con), x_label);
    gtk_widget_show(con);
    gtk_box_pack_start(GTK_BOX(hbox_offset), con, FALSE, FALSE, 8);

    x_offset = gtk_entry_new();
    gtk_entry_set_max_length(GTK_ENTRY(x_offset), 32);
    gtk_widget_show(x_offset);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_container_add(GTK_CONTAINER(con), x_offset);
    gtk_widget_show(con);
    gtk_box_pack_start(GTK_BOX(hbox_offset), con, FALSE, FALSE, 8);
    pv.x_offset = x_offset;
    gtk_signal_connect(GTK_OBJECT(x_offset), "size-request",
			  GTK_SIGNAL_FUNC(width_percent), (gpointer)50);


    y_label = gtk_label_new(get_string(IDS_AAYC));
    gtk_widget_show(y_label);
    con = gtk_alignment_new(1, 0, 0, 0);	/* right alignment */
    gtk_container_add(GTK_CONTAINER(con), y_label);
    gtk_widget_show(con);
    gtk_box_pack_start(GTK_BOX(hbox_offset), con, FALSE, FALSE, 8);

    y_offset = gtk_entry_new();
    gtk_entry_set_max_length(GTK_ENTRY(y_offset), 32);
    gtk_widget_show(y_offset);
    con = gtk_alignment_new(0, 0, 0, 0);	/* left alignment */
    gtk_container_add(GTK_CONTAINER(con), y_offset);
    gtk_widget_show(con);
    gtk_box_pack_start(GTK_BOX(hbox_offset), con, FALSE, FALSE, 8);
    pv.y_offset = y_offset;
    gtk_signal_connect(GTK_OBJECT(y_offset), "size-request",
			  GTK_SIGNAL_FUNC(width_percent), (gpointer)50);

    if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
	char section[MAXSTR];
	char buf[MAXSTR];
	strcpy(section, pv.device);
	strcat(section, " Options");
	profile_read_string(prf, section, "Xoffset", "0", buf, sizeof(buf)-2);
	gtk_entry_set_text(GTK_ENTRY(x_offset), buf);
	profile_read_string(prf, section, "Yoffset", "0", buf, sizeof(buf)-2);
	gtk_entry_set_text(GTK_ENTRY(y_offset), buf);
	profile_close(prf);
    }

    /* update values when property name changed */
    update_properties(&pv);
    prop_signal = gtk_signal_connect(GTK_OBJECT(GTK_COMBO(prop)->list), 
	"selection-changed", GTK_SIGNAL_FUNC(update_values), &pv);
    update_values(GTK_COMBO(prop)->list, &pv);

    /* remember selected values */
    value_signal = gtk_signal_connect(GTK_OBJECT(GTK_COMBO(value)->list), 
	"selection-changed", GTK_SIGNAL_FUNC(select_value), &pv);

    /* Create and place the buttons in a vbox at the right */
    vbox = gtk_vbox_new(FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5);
    gtk_widget_show(vbox);

    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));
    button_edit = gtk_button_new_with_label(get_string(IDS_AAEDIT));
    button_new = gtk_button_new_with_label(get_string(IDS_AANEW));

    gtk_box_pack_start(GTK_BOX(vbox), button_ok, FALSE, FALSE, 5);
    gtk_box_pack_start(GTK_BOX(vbox), button_cancel, FALSE, FALSE, 5);
    gtk_box_pack_start(GTK_BOX(vbox), button_help, FALSE, FALSE, 5);
    gtk_box_pack_start(GTK_BOX(vbox), button_edit, FALSE, FALSE, 5);
    gtk_box_pack_start(GTK_BOX(vbox), button_new, FALSE, FALSE, 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_signal_connect(GTK_OBJECT(button_edit), "clicked",
                              GTK_SIGNAL_FUNC(edit_prop_dialog), &pv);
    gtk_signal_connect(GTK_OBJECT(button_new), "clicked",
                              GTK_SIGNAL_FUNC(new_prop_dialog), &pv);

    gtk_widget_show(button_ok);
    gtk_widget_show(button_cancel);
    gtk_widget_show(button_help);
    gtk_widget_show(button_edit);
    gtk_widget_show(button_new);

    /* 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) {
	if ( (prf = profile_open(szIniFile)) != (PROFILE *)NULL ) {
	    char section[MAXSTR];
	    for (iprop=0; pv.propitem && pv.propitem[iprop].name[0]; iprop++) {
		profile_write_string(prf, pv.device, 
		    pv.propitem[iprop].name, pv.propitem[iprop].value);
	    }
	    strcpy(section, pv.device);
	    strcat(section, " Options");
	    profile_write_string(prf, section, "Xoffset", 
	    	gtk_entry_get_text(GTK_ENTRY(x_offset)));
	    profile_write_string(prf, section, "Yoffset", 
	    	gtk_entry_get_text(GTK_ENTRY(x_offset)));
	    profile_close(prf);
	}
    }
    /* we must disconnect these signals before destroying widget,
     * otherwise they will be called after widget is destroyed.
     */
    gtk_signal_disconnect(GTK_OBJECT(GTK_COMBO(prop)->list), prop_signal);
    gtk_signal_disconnect(GTK_OBJECT(GTK_COMBO(value)->list), value_signal);

    gtk_widget_destroy(window);
    free((char *)pv.propitem);
    pv.propitem = NULL;
}

void
advanced_ps_dialog(GtkWidget *w, gpointer data)
{
    GtkWidget *window;		/* main dialog window */
    GtkWidget *hbox;
    GtkWidget *vbox;
    GtkWidget *check_ctrld_before;
    GtkWidget *check_ctrld_after;
    GtkWidget *label;
    GtkWidget *con;
    GtkWidget *entry_prolog;
    GtkWidget *entry_epilog;
    GtkWidget *hbox_buttons;		/* for buttons */
    GtkWidget *button_ok, *button_cancel, *button_help;
    int rc = 0;

    /* for PostScript printers, provide options for sending
     * Ctrl+D before and after job, and sending a prolog
     * and epilog file.
     * These are set using the Advanced button on the Printer
     * Setup dialog, only enabled for PostScript printer.
     */
/* currently enabled always */
    PROFILE *prf;
    char buf[MAXSTR];
    char section[MAXSTR];
    int prectrld=0;
    int postctrld=0;

    window=gtk_window_new(GTK_WINDOW_DIALOG);

    gtk_window_set_title(GTK_WINDOW(window), get_string(IDS_AAADVANCEDPSOPT));

    gtk_signal_connect(GTK_OBJECT(window),
                       "delete-event",
                       GTK_SIGNAL_FUNC(modal_delete),
                       &rc);

    hbox = gtk_hbox_new(TRUE, 4);
    gtk_container_add(GTK_CONTAINER(window), hbox);
    gtk_widget_show(hbox);

⌨️ 快捷键说明

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