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