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

📄 gvxdlg.c

📁 GSview 4.6 PostScript previewer。Ghostscript在MS-Windows, OS/2 and Unix下的图形化接口
💻 C
📖 第 1 页 / 共 4 页
字号:

    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 + -