📄 gvxdlg.c
字号:
nHelpTopic = IDS_TOPICPSTOEPS;
window=gtk_window_new(GTK_WINDOW_DIALOG);
gtk_window_set_title(GTK_WINDOW(window), get_string(IDS_AAPSTOEPS));
gtk_signal_connect(GTK_OBJECT(window), "delete-event",
GTK_SIGNAL_FUNC(modal_delete), &rc);
vbox = gtk_vbox_new(FALSE, 5);
gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_widget_show(vbox);
/* Create a label */
label = gtk_label_new(get_string(IDS_AAPSTOEPSREAD));
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5);
gtk_widget_show(label);
/* Create checkbox */
check = gtk_check_button_new_with_label(get_string(IDS_AAPSTOEPSAUTO));
gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 5);
gtk_widget_show(check);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), option.auto_bbox);
/* Create and place the buttons across the bottom */
hbox = gtk_hbox_new(TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
gtk_widget_show(hbox);
button_yes = gtk_button_new_with_label(get_string(IDS_AAYES));
gtk_box_pack_start(GTK_BOX(hbox), button_yes, TRUE, TRUE, 10);
gtk_signal_connect(GTK_OBJECT(button_yes), "clicked",
GTK_SIGNAL_FUNC(modal_yes), &rc);
gtk_widget_show(button_yes);
button_no = gtk_button_new_with_label(get_string(IDS_AANO));
gtk_box_pack_start(GTK_BOX(hbox), button_no, TRUE, TRUE, 10);
gtk_signal_connect(GTK_OBJECT(button_no), "clicked",
GTK_SIGNAL_FUNC(modal_no), &rc);
gtk_widget_show(button_no);
button_help = gtk_button_new_with_label(get_string(IDS_AAHELP));
gtk_box_pack_start(GTK_BOX(hbox), button_help, TRUE, TRUE, 10);
gtk_signal_connect(GTK_OBJECT(button_help), "clicked",
GTK_SIGNAL_FUNC(modal_help), &rc);
gtk_widget_show(button_help);
/* show dialog and wait for Yes, No, or close */
gtk_window_set_focus(GTK_WINDOW(window), button_no);
gtk_window_set_modal(GTK_WINDOW(window), TRUE);
gtk_widget_show(window);
gtk_main();
if (rc == IDYES)
option.auto_bbox =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check));
gtk_widget_destroy(window);
return (rc == IDYES);
}
void change_sounds(void)
{
gs_addmess("change_sounds: not implemented\n");
}
void setting_add(GtkWidget *table, const char *str1, GtkWidget *w, const char *str3, int *y)
{
GtkWidget *label1 = gtk_label_new(str1);
GtkWidget *label3 = gtk_label_new(str3);
GtkWidget *con1, *con2, *con3;
con1 = gtk_alignment_new(1, 0, 0, 0);
gtk_container_add(GTK_CONTAINER(con1), label1);
con2 = gtk_alignment_new(0, 0, 0, 0);
gtk_container_add(GTK_CONTAINER(con2), w);
con3 = gtk_alignment_new(0, 0, 0, 0);
gtk_container_add(GTK_CONTAINER(con3), label3);
gtk_widget_show(label1);
gtk_widget_show(w);
gtk_widget_show(label3);
gtk_widget_show(con1);
gtk_widget_show(con2);
gtk_widget_show(con3);
gtk_table_attach(GTK_TABLE(table), con1, 0, 1, *y, (*y)+1,
GTK_FILL, GTK_FILL, 5, 0);
gtk_table_attach(GTK_TABLE(table), con2, 1, 2, *y, (*y)+1,
GTK_FILL, GTK_FILL, 5, 0);
gtk_table_attach(GTK_TABLE(table), con3, 2, 3, *y, (*y)+1,
GTK_FILL, GTK_FILL, 5, 0);
(*y)++;
}
const char *depthlist[] = {"Default", "8", "24"};
int index_to_depth[] = { 0, 8, 24};
int depth_to_index(int depth)
{
int i;
for (i=0; i<(int)(sizeof(index_to_depth)/sizeof(int)); i++)
if (index_to_depth[i] == depth)
return i;
return 0;
}
const char *alphalist[] = {"1", "2", "4"};
int index_to_alpha[] = { 1, 2, 4};
int alpha_to_index(int alpha)
{
int i;
for (i=0; i<(int)(sizeof(index_to_alpha)/sizeof(int)); i++)
if (index_to_alpha[i] == alpha)
return i;
return 0;
}
const char *drawlist[] = {"Pixmap", "Backing pixmap", "Backing storage"};
int index_to_draw[] = { IDM_DRAWPIXMAP, IDM_DRAWBACKING, IDM_DRAWSTORAGE };
int draw_to_index(int draw)
{
unsigned int i;
for (i=0; i<sizeof(index_to_draw)/sizeof(int); i++)
if (index_to_draw[i] == draw)
return i;
return 0;
}
void display_settings(void)
{
GtkWidget *window; /* main dialog window */
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *table;
GtkWidget *button_ok, *button_cancel, *button_help;
GtkWidget *wres, *wzres, *wdepth, *wtext, *wgraphics;
GList *list, *l;
char buf[MAXSTR];
int i;
int y = 0;
int rc;
const char *s;
nHelpTopic = IDS_TOPICDSET;
window=gtk_window_new(GTK_WINDOW_DIALOG);
gtk_signal_connect(GTK_OBJECT(window), "delete-event",
GTK_SIGNAL_FUNC(modal_delete), &rc);
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
gtk_window_set_title(GTK_WINDOW(window), get_string(IDS_AADISPLAYSETTINGS));
vbox = gtk_vbox_new(FALSE, 5);
gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
gtk_container_add(GTK_CONTAINER(window), vbox);
table = gtk_table_new(6, 3, FALSE);
gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 5);
if (option.xdpi == option.ydpi)
sprintf(buf,"%g", option.xdpi);
else
sprintf(buf,"%g %g", option.xdpi, option.ydpi);
wres = gtk_entry_new();
gtk_entry_set_max_length(GTK_ENTRY(wres), 32);
gtk_entry_set_text(GTK_ENTRY(wres), buf);
setting_add(table, get_string(IDS_AARESOLUTION), wres, get_string(IDS_AADPI), &y);
gtk_signal_connect(GTK_OBJECT(wres), "activate",
GTK_SIGNAL_FUNC(modal_ok), &rc);
if (option.zoom_xdpi == option.zoom_ydpi)
sprintf(buf,"%g", option.zoom_xdpi);
else
sprintf(buf,"%g %g", option.zoom_xdpi, option.zoom_ydpi);
wzres = gtk_entry_new();
gtk_entry_set_max_length(GTK_ENTRY(wzres), 32);
gtk_entry_set_text(GTK_ENTRY(wzres), buf);
setting_add(table, get_string(IDS_AAZOOMRESOLUTION), wzres, get_string(IDS_AADPI), &y);
gtk_signal_connect(GTK_OBJECT(wres), "activate",
GTK_SIGNAL_FUNC(modal_ok), &rc);
wdepth = gtk_combo_new();
list = NULL;
for (i=0; i<(int)(sizeof(depthlist)/sizeof(char *)); i++) {
char *p;
strcpy(buf, depthlist[i]);
if (strcmp(buf, "Default")==0)
load_string(IDS_DEFAULT, buf, sizeof(buf)-1);
p = (char *)malloc(strlen(buf)+1);
strcpy(p, buf);
list = g_list_append(list, p);
}
gtk_combo_set_popdown_strings(GTK_COMBO(wdepth), 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(wdepth)->entry), FALSE);
setting_add(table, get_string(IDS_AADEPTH), wdepth, get_string(IDS_AABPP), &y);
gtk_signal_connect(GTK_OBJECT(GTK_COMBO(wdepth)->entry), "activate",
GTK_SIGNAL_FUNC(modal_ok), &rc);
s = depthlist[depth_to_index(option.depth)];
if (strcmp(s, "Default")==0)
s = get_string(IDS_DEFAULT);
gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(wdepth)->entry), s);
wtext = gtk_combo_new();
list = NULL;
for (i=0; i<(int)(sizeof(alphalist)/sizeof(char *)); i++) {
char *p;
strcpy(buf, alphalist[i]);
if (strcmp(buf, "Default")==0)
load_string(IDS_DEFAULT, buf, sizeof(buf)-1);
p = (char *)malloc(strlen(buf)+1);
strcpy(p, buf);
list = g_list_append(list, p);
}
gtk_combo_set_popdown_strings(GTK_COMBO(wtext), 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(wtext)->entry), FALSE);
s = alphalist[alpha_to_index(option.alpha_text)];
if (strcmp(s, "Default")==0)
s = get_string(IDS_DEFAULT);
gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(wtext)->entry), s);
setting_add(table, get_string(IDS_AATEXTALPHA), wtext, get_string(IDS_AABITS), &y);
gtk_signal_connect(GTK_OBJECT(GTK_COMBO(wtext)->entry), "activate",
GTK_SIGNAL_FUNC(modal_ok), &rc);
wgraphics = gtk_combo_new();
list = NULL;
for (i=0; i<(int)(sizeof(alphalist)/sizeof(char *)); i++) {
char *p;
strcpy(buf, alphalist[i]);
if (strcmp(buf, "Default")==0)
load_string(IDS_DEFAULT, buf, sizeof(buf)-1);
p = (char *)malloc(strlen(buf)+1);
strcpy(p, buf);
list = g_list_append(list, p);
}
gtk_combo_set_popdown_strings(GTK_COMBO(wgraphics), 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(wgraphics)->entry), FALSE);
s = alphalist[alpha_to_index(option.alpha_graphics)];
if (strcmp(s, "Default")==0)
s = get_string(IDS_DEFAULT);
gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(wgraphics)->entry), s);
setting_add(table, get_string(IDS_AAGRAPHICSALPHA), wgraphics, get_string(IDS_AABITS), &y);
gtk_signal_connect(GTK_OBJECT(GTK_COMBO(wgraphics)->entry), "activate",
GTK_SIGNAL_FUNC(modal_ok), &rc);
/* buttons across bottom */
hbox = gtk_hbox_new(TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
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), button_ok, TRUE, TRUE, 20);
gtk_box_pack_start(GTK_BOX(hbox), button_cancel, TRUE, TRUE, 20);
gtk_box_pack_start(GTK_BOX(hbox), button_help, TRUE, TRUE, 20);
/* Connect our callbacks to the three 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);
gtk_widget_show(hbox);
/* show dialog and wait for OK, Cancel or close */
gtk_widget_show(vbox);
gtk_widget_show(table);
gtk_window_set_focus(GTK_WINDOW(window), wres);
gtk_window_set_modal(GTK_WINDOW(window), TRUE);
gtk_widget_show(window);
gtk_main();
if (rc == IDOK) {
BOOL unzoom = FALSE;
BOOL resize = FALSE;
BOOL restart = FALSE;
float x, y;
strncpy(buf, gtk_entry_get_text(GTK_ENTRY(wres)), 255);
switch (sscanf(buf,"%f %f", &x, &y)) {
case EOF:
case 0:
break;
case 1:
y = x;
case 2:
if (x==0.0)
x= DEFAULT_RESOLUTION;
if (y==0.0)
y= DEFAULT_RESOLUTION;
if ( (x != option.xdpi) || (y != option.ydpi) ) {
option.xdpi = x;
option.ydpi = y;
resize = TRUE;
unzoom = TRUE;
}
}
strncpy(buf, gtk_entry_get_text(GTK_ENTRY(wzres)), 255);
switch (sscanf(buf,"%f %f", &x, &y)) {
case EOF:
case 0:
break;
case 1:
y = x;
case 2:
if (x==0.0)
x= DEFAULT_RESOLUTION;
if (y==0.0)
y= DEFAULT_RESOLUTION;
if ( (x != option.zoom_xdpi) || (y != option.zoom_ydpi) ) {
option.zoom_xdpi = x;
option.zoom_ydpi = y;
resize = TRUE;
unzoom = TRUE;
}
}
strncpy(buf, gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(wdepth)->entry)),
sizeof(buf)-1);
if (strcmp(buf, get_string(IDS_DEFAULT))==0)
strcpy(buf, "Default");
for (i=0; i<(int)(sizeof(depthlist)/sizeof(char *)); i++) {
if (strcmp(buf, depthlist[i]) == 0)
break;
}
if (i >= (int)(sizeof(depthlist)/sizeof(char *)))
i = 0;
i = index_to_depth[i];
if (i != option.depth) {
option.depth = i;
restart = TRUE;
resize = TRUE;
unzoom = TRUE;
}
strncpy(buf, gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(wtext)->entry)),
sizeof(buf)-1);
if (strcmp(buf, get_string(IDS_DEFAULT))==0)
strcpy(buf, "Default");
for (i=0; i<(int)(sizeof(alphalist)/sizeof(char *)); i++) {
if (strcmp(buf, alphalist[i]) == 0)
break;
}
i = index_to_alpha[i];
if (i != option.alpha_text) {
option.alpha_text = i;
restart = TRUE;
resize = TRUE;
unzoom = TRUE;
}
strncpy(buf, gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(wgraphics)->entry)),
sizeof(buf)-1);
if (strcmp(buf, get_string(IDS_DEFAULT))==0)
strcpy(buf, "Default");
for (i=0; i<(int)(sizeof(alphalist)/sizeof(char *)); i++) {
if (strcmp(buf, alphalist[i]) == 0)
break;
}
i = index_to_alpha[i];
if (i != option.alpha_graphics) {
option.alpha_graphics = i;
restart = TRUE;
resize = TRUE;
unzoom = TRUE;
}
if (resize) {
if (unzoom)
gsview_unzoom();
if (gsdll.state != GS_UNINIT) {
/* gs_resize has this check
if (option.redisplay && (gsdll.state == GS_PAGE) && (psfile.dsc != (CDSC *)NULL))
*/
gs_resize();
/* for those that can't be changed with a */
/* postscript command so must close gs */
if (restart)
pending.restart = TRUE;
}
}
}
gtk_widget_destroy(window);
}
gint
showmess_realize(GtkWidget *widget, gpointer user_data)
{
(GTK_TEXT(widget)->vadj)->value = (GTK_TEXT(widget)->vadj)->upper
- (GTK_TEXT(widget)->vadj)->page_size;
gtk_signal_emit_by_name(GTK_OBJECT(GTK_TEXT(widget)->vadj), "changed");
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -