📄 gvxprn.c
字号:
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 + -