422 lines
15 KiB
Diff
422 lines
15 KiB
Diff
diff -up xsane-0.995/src/xsane-front-gtk.c.eula-license-size xsane-0.995/src/xsane-front-gtk.c
|
|
--- xsane-0.995/src/xsane-front-gtk.c.eula-license-size 2007-05-17 15:35:06.000000000 +0200
|
|
+++ xsane-0.995/src/xsane-front-gtk.c 2007-11-29 16:57:15.000000000 +0100
|
|
@@ -1881,6 +1881,73 @@ void xsane_change_working_directory(void
|
|
|
|
/* ---------------------------------------------------------------------------------------------------------------------- */
|
|
|
|
+static GtkWidget *xsane_eula_license_textbox (gchar *text)
|
|
+{
|
|
+ GtkWidget *hbox = gtk_hbox_new(FALSE, 2);
|
|
+
|
|
+#ifdef HAVE_GTK_TEXT_VIEW_H
|
|
+ GtkWidget *scrolled_window, *text_view;
|
|
+ GtkTextBuffer *text_buffer;
|
|
+
|
|
+ /* create a scrolled window to get a vertical scrollbar */
|
|
+ scrolled_window = gtk_scrolled_window_new(NULL, NULL);
|
|
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
|
|
+ GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
|
+ gtk_container_add(GTK_CONTAINER(hbox), scrolled_window);
|
|
+ gtk_widget_show(scrolled_window);
|
|
+
|
|
+ /* create the gtk_text_view widget */
|
|
+ text_view = gtk_text_view_new();
|
|
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(text_view), FALSE);
|
|
+ gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text_view), GTK_WRAP_WORD);
|
|
+ gtk_container_add(GTK_CONTAINER(scrolled_window), text_view);
|
|
+ gtk_widget_show(text_view);
|
|
+
|
|
+ /* get the text_buffer widget and insert the text from file */
|
|
+ text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));
|
|
+
|
|
+ gtk_text_buffer_insert_at_cursor(text_buffer, text, strlen (text));
|
|
+
|
|
+#else /* we do not have gtk_text_view, so we use gtk_text */
|
|
+ GtkWidget *text, *vscrollbar;
|
|
+
|
|
+ /* Create the gtk_text widget */
|
|
+ text = gtk_text_new(NULL, NULL);
|
|
+ gtk_text_set_editable(GTK_TEXT(text), FALSE); /* text is not editable */
|
|
+ gtk_text_set_word_wrap(GTK_TEXT(text), TRUE); /* wrap complete words */
|
|
+ gtk_box_pack_start(GTK_BOX(hbox), text, TRUE, TRUE, 0);
|
|
+ gtk_widget_show(text);
|
|
+
|
|
+ /* Add a vertical scrollbar to the GtkText widget */
|
|
+ vscrollbar = gtk_vscrollbar_new(GTK_TEXT(text)->vadj);
|
|
+ gtk_box_pack_start(GTK_BOX(hbox), vscrollbar, FALSE, FALSE, 0);
|
|
+ gtk_widget_show(vscrollbar);
|
|
+
|
|
+ /* Freeze the text widget, ready for multiple updates */
|
|
+ gtk_text_freeze(GTK_TEXT(text));
|
|
+
|
|
+ gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL, text, strlen (text));
|
|
+
|
|
+ /* Thaw the text widget, allowing the updates to become visible */
|
|
+ gtk_text_thaw(GTK_TEXT(text));
|
|
+#endif
|
|
+
|
|
+ return hbox;
|
|
+}
|
|
+
|
|
+/* ---------------------------------------------------------------------------------------------------------------------- */
|
|
+
|
|
+static void center_pane_callback (GtkWidget *pane, gpointer data)
|
|
+{
|
|
+ gint max_pos;
|
|
+
|
|
+ /* Center pane handle */
|
|
+ g_object_get (G_OBJECT (pane), "max-position", &max_pos, NULL);
|
|
+ gtk_paned_set_position (GTK_PANED (pane), (gint)(max_pos / 2));
|
|
+};
|
|
+
|
|
+/* ---------------------------------------------------------------------------------------------------------------------- */
|
|
+
|
|
static int eula_accept_flag;
|
|
static GtkWidget *eula_dialog = NULL;
|
|
|
|
@@ -1911,11 +1978,13 @@ static void xsane_eula_button_callback(G
|
|
int xsane_display_eula(int ask_for_accept)
|
|
/* returns FALSE if accepted, TRUE if not accepted */
|
|
{
|
|
- GtkWidget *vbox, *hbox, *button, *label, *frame;
|
|
+ GtkWidget *vbox, *hbox, *button, *frame, *pane;
|
|
GtkAccelGroup *accelerator_group;
|
|
char buf[1024];
|
|
char filename[PATH_MAX];
|
|
FILE *infile;
|
|
+ gint width, height;
|
|
+ GString *text;
|
|
|
|
DBG(DBG_proc, "xsane_display_eula(%d)\n", ask_for_accept);
|
|
|
|
@@ -1925,7 +1994,8 @@ int xsane_display_eula(int ask_for_accep
|
|
}
|
|
|
|
eula_dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
|
- gtk_widget_set_size_request(eula_dialog, 550, 580);
|
|
+ gdk_window_get_geometry (gdk_get_default_root_window (), NULL, NULL, &width, &height, NULL);
|
|
+ gtk_widget_set_size_request(eula_dialog, MIN (550, (int)(0.9 * width)), MIN (580, (int)(0.9 * height)));
|
|
gtk_window_set_position(GTK_WINDOW(eula_dialog), GTK_WIN_POS_CENTER);
|
|
gtk_window_set_resizable(GTK_WINDOW(eula_dialog), TRUE);
|
|
g_signal_connect(GTK_OBJECT(eula_dialog), "delete_event", GTK_SIGNAL_FUNC(xsane_eula_delete_event), (void *) -1); /* -1 = cancel */
|
|
@@ -1955,6 +2025,11 @@ int xsane_display_eula(int ask_for_accep
|
|
xsane_set_window_icon(eula_dialog, 0);
|
|
#endif
|
|
|
|
+ pane = gtk_vpaned_new ();
|
|
+ g_signal_connect_after (G_OBJECT (pane), "realize", (GCallback)center_pane_callback, NULL);
|
|
+ gtk_box_pack_start(GTK_BOX(vbox), pane, TRUE, TRUE, 0);
|
|
+ gtk_widget_show (pane);
|
|
+
|
|
/* display XSane copyright message */
|
|
snprintf(buf, sizeof(buf), "XSane %s %s\n"
|
|
"%s %s\n"
|
|
@@ -1968,109 +2043,42 @@ int xsane_display_eula(int ask_for_accep
|
|
TEXT_HOMEPAGE, XSANE_HOMEPAGE,
|
|
TEXT_EMAIL_ADR, XSANE_EMAIL_ADR);
|
|
|
|
- label = gtk_label_new(buf);
|
|
- gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
|
|
- gtk_widget_show(label);
|
|
-
|
|
- /* add hbox with text and scrollbar to display the eula text */
|
|
- hbox = gtk_hbox_new(FALSE, 2);
|
|
+ hbox = xsane_eula_license_textbox (buf);
|
|
gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
|
|
- gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
|
|
+ gtk_paned_add1 (GTK_PANED (pane), hbox);
|
|
gtk_widget_show(hbox);
|
|
|
|
-#ifdef HAVE_GTK_TEXT_VIEW_H
|
|
- {
|
|
- GtkWidget *scrolled_window, *text_view;
|
|
- GtkTextBuffer *text_buffer;
|
|
-
|
|
- /* create a scrolled window to get a vertical scrollbar */
|
|
- scrolled_window = gtk_scrolled_window_new(NULL, NULL);
|
|
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
|
|
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
|
- gtk_container_add(GTK_CONTAINER(hbox), scrolled_window);
|
|
- gtk_widget_show(scrolled_window);
|
|
-
|
|
- /* create the gtk_text_view widget */
|
|
- text_view = gtk_text_view_new();
|
|
- gtk_text_view_set_editable(GTK_TEXT_VIEW(text_view), FALSE);
|
|
- gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text_view), GTK_WRAP_WORD);
|
|
- gtk_container_add(GTK_CONTAINER(scrolled_window), text_view);
|
|
- gtk_widget_show(text_view);
|
|
-
|
|
- /* get the text_buffer widget and insert the text from file */
|
|
- text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));
|
|
-
|
|
- xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", 0, "xsane-eula", 0, ".txt", XSANE_PATH_SYSTEM);
|
|
- infile = fopen(filename, "r");
|
|
-
|
|
- if (infile)
|
|
- {
|
|
- char buffer[4096];
|
|
- int nchars;
|
|
-
|
|
- while (!feof(infile))
|
|
- {
|
|
- nchars = fread(buffer, 1, 4096, infile);
|
|
- gtk_text_buffer_insert_at_cursor(text_buffer, buffer, nchars);
|
|
- }
|
|
+ /* Load the EULA text */
|
|
+ xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", 0, "xsane-eula", 0, ".txt", XSANE_PATH_SYSTEM);
|
|
+ infile = fopen(filename, "r");
|
|
|
|
- fclose(infile);
|
|
- }
|
|
- else
|
|
- {
|
|
- DBG(DBG_error0, "ERROR: eula text not found. Looks like xsane is not installed correct.\n");
|
|
- return TRUE;
|
|
- }
|
|
-
|
|
- }
|
|
-#else /* we do not have gtk_text_view, so we use gtk_text */
|
|
+ text = g_string_new (NULL);
|
|
+ if (infile)
|
|
{
|
|
- GtkWidget *text, *vscrollbar;
|
|
-
|
|
- /* Create the gtk_text widget */
|
|
- text = gtk_text_new(NULL, NULL);
|
|
- gtk_text_set_editable(GTK_TEXT(text), FALSE); /* text is not editable */
|
|
- gtk_text_set_word_wrap(GTK_TEXT(text), TRUE); /* wrap complete words */
|
|
- gtk_box_pack_start(GTK_BOX(hbox), text, TRUE, TRUE, 0);
|
|
- gtk_widget_show(text);
|
|
+ char buffer[4096];
|
|
+ int nchars;
|
|
|
|
- /* Add a vertical scrollbar to the GtkText widget */
|
|
- vscrollbar = gtk_vscrollbar_new(GTK_TEXT(text)->vadj);
|
|
- gtk_box_pack_start(GTK_BOX(hbox), vscrollbar, FALSE, FALSE, 0);
|
|
- gtk_widget_show(vscrollbar);
|
|
-
|
|
- /* Freeze the text widget, ready for multiple updates */
|
|
- gtk_text_freeze(GTK_TEXT(text));
|
|
-
|
|
- /* Load the file text.c into the text window */
|
|
- xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", 0, "xsane-eula", 0, ".txt", XSANE_PATH_SYSTEM);
|
|
- infile = fopen(filename, "r");
|
|
-
|
|
- if (infile)
|
|
+ while (!feof(infile))
|
|
{
|
|
- char buffer[4096];
|
|
- int nchars;
|
|
-
|
|
- while (!feof(infile))
|
|
- {
|
|
- nchars = fread(buffer, 1, 4096, infile);
|
|
- gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL, buffer, nchars);
|
|
- }
|
|
-
|
|
- fclose(infile);
|
|
- }
|
|
- else
|
|
- {
|
|
- DBG(DBG_error0, "ERROR: eula text not found. Looks like xsane is not installed correct.\n");
|
|
- return TRUE;
|
|
+ nchars = fread(buffer, 1, 4096, infile);
|
|
+ text = g_string_append_len (text, buffer, nchars);
|
|
}
|
|
|
|
- /* Thaw the text widget, allowing the updates to become visible */
|
|
- gtk_text_thaw(GTK_TEXT(text));
|
|
+ fclose(infile);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ DBG(DBG_error0, "ERROR: eula text not found. Looks like xsane is not installed correct.\n");
|
|
+ g_string_free (text, TRUE);
|
|
+ return TRUE;
|
|
}
|
|
-#endif
|
|
-
|
|
|
|
+ /* add hbox with text and scrollbar to display the eula text */
|
|
+ hbox = xsane_eula_license_textbox (text->str);
|
|
+ g_string_free (text, TRUE);
|
|
+ gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
|
|
+ gtk_paned_add2 (GTK_PANED (pane), hbox);
|
|
+ gtk_widget_show(hbox);
|
|
|
|
hbox = gtk_hbox_new(FALSE, 2);
|
|
gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
|
|
@@ -2157,11 +2165,13 @@ static gboolean xsane_license_dialog_del
|
|
|
|
void xsane_display_gpl(void)
|
|
{
|
|
- GtkWidget *vbox, *hbox, *button, *label, *frame;
|
|
+ GtkWidget *vbox, *hbox, *button, *frame, *pane;
|
|
GtkAccelGroup *accelerator_group;
|
|
char buf[1024];
|
|
char filename[PATH_MAX];
|
|
FILE *infile;
|
|
+ gint width, height;
|
|
+ GString *text;
|
|
|
|
if (license_dialog) /* make sure the dialog is only opend once */
|
|
{
|
|
@@ -2169,7 +2179,8 @@ void xsane_display_gpl(void)
|
|
}
|
|
|
|
license_dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
|
- gtk_widget_set_size_request(license_dialog, 550, 580);
|
|
+ gdk_window_get_geometry (gdk_get_default_root_window (), NULL, NULL, &width, &height, NULL);
|
|
+ gtk_widget_set_size_request(license_dialog, MIN (550, (int)(0.9 * width)), MIN (580, (int)(0.9 * height)));
|
|
gtk_window_set_position(GTK_WINDOW(license_dialog), GTK_WIN_POS_CENTER);
|
|
gtk_window_set_resizable(GTK_WINDOW(license_dialog), TRUE);
|
|
g_signal_connect(GTK_OBJECT(license_dialog), "delete_event", GTK_SIGNAL_FUNC(xsane_license_dialog_delete_event), NULL);
|
|
@@ -2199,6 +2210,11 @@ void xsane_display_gpl(void)
|
|
xsane_set_window_icon(license_dialog, 0);
|
|
#endif
|
|
|
|
+ pane = gtk_vpaned_new ();
|
|
+ g_signal_connect_after (G_OBJECT (pane), "realize", (GCallback)center_pane_callback, NULL);
|
|
+ gtk_box_pack_start(GTK_BOX(vbox), pane, TRUE, TRUE, 0);
|
|
+ gtk_widget_show (pane);
|
|
+
|
|
/* display XSane copyright message */
|
|
snprintf(buf, sizeof(buf), "XSane %s %s\n"
|
|
"%s %s\n"
|
|
@@ -2212,109 +2228,42 @@ void xsane_display_gpl(void)
|
|
TEXT_HOMEPAGE, XSANE_HOMEPAGE,
|
|
TEXT_EMAIL_ADR, XSANE_EMAIL_ADR);
|
|
|
|
- label = gtk_label_new(buf);
|
|
- gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
|
|
- gtk_widget_show(label);
|
|
-
|
|
- /* add hbox with text and scrollbar to display the license text */
|
|
- hbox = gtk_hbox_new(FALSE, 2);
|
|
+ hbox = xsane_eula_license_textbox (buf);
|
|
gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
|
|
- gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
|
|
+ gtk_paned_add1 (GTK_PANED (pane), hbox);
|
|
gtk_widget_show(hbox);
|
|
|
|
-#ifdef HAVE_GTK_TEXT_VIEW_H
|
|
- {
|
|
- GtkWidget *scrolled_window, *text_view;
|
|
- GtkTextBuffer *text_buffer;
|
|
+ /* Load the license text */
|
|
+ xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", 0, "xsane-gpl", 0, ".txt", XSANE_PATH_SYSTEM);
|
|
+ infile = fopen(filename, "r");
|
|
|
|
- /* create a scrolled window to get a vertical scrollbar */
|
|
- scrolled_window = gtk_scrolled_window_new(NULL, NULL);
|
|
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
|
|
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
|
- gtk_container_add(GTK_CONTAINER(hbox), scrolled_window);
|
|
- gtk_widget_show(scrolled_window);
|
|
-
|
|
- /* create the gtk_text_view widget */
|
|
- text_view = gtk_text_view_new();
|
|
- gtk_text_view_set_editable(GTK_TEXT_VIEW(text_view), FALSE);
|
|
- gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text_view), GTK_WRAP_WORD);
|
|
- gtk_container_add(GTK_CONTAINER(scrolled_window), text_view);
|
|
- gtk_widget_show(text_view);
|
|
-
|
|
- /* get the text_buffer widget and insert the text from file */
|
|
- text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));
|
|
-
|
|
- xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", 0, "xsane-gpl", 0, ".txt", XSANE_PATH_SYSTEM);
|
|
- infile = fopen(filename, "r");
|
|
-
|
|
- if (infile)
|
|
- {
|
|
- char buffer[4096];
|
|
- int nchars;
|
|
-
|
|
- while (!feof(infile))
|
|
- {
|
|
- nchars = fread(buffer, 1, 4096, infile);
|
|
- gtk_text_buffer_insert_at_cursor(text_buffer, buffer, nchars);
|
|
- }
|
|
-
|
|
- fclose(infile);
|
|
- }
|
|
- else
|
|
- {
|
|
- DBG(DBG_error0, "ERROR: license text not found. Looks like xsane is not installed correct.\n");
|
|
- return;
|
|
- }
|
|
-
|
|
- }
|
|
-#else /* we do not have gtk_text_view, so we use gtk_text */
|
|
+ text = g_string_new (NULL);
|
|
+ if (infile)
|
|
{
|
|
- GtkWidget *text, *vscrollbar;
|
|
-
|
|
- /* Create the gtk_text widget */
|
|
- text = gtk_text_new(NULL, NULL);
|
|
- gtk_text_set_editable(GTK_TEXT(text), FALSE); /* text is not editable */
|
|
- gtk_text_set_word_wrap(GTK_TEXT(text), TRUE); /* wrap complete words */
|
|
- gtk_box_pack_start(GTK_BOX(hbox), text, TRUE, TRUE, 0);
|
|
- gtk_widget_show(text);
|
|
-
|
|
- /* Add a vertical scrollbar to the GtkText widget */
|
|
- vscrollbar = gtk_vscrollbar_new(GTK_TEXT(text)->vadj);
|
|
- gtk_box_pack_start(GTK_BOX(hbox), vscrollbar, FALSE, FALSE, 0);
|
|
- gtk_widget_show(vscrollbar);
|
|
-
|
|
- /* Freeze the text widget, ready for multiple updates */
|
|
- gtk_text_freeze(GTK_TEXT(text));
|
|
-
|
|
- /* Load the file text.c into the text window */
|
|
- xsane_back_gtk_make_path(sizeof(filename), filename, "xsane", 0, "xsane-gpl", 0, ".txt", XSANE_PATH_SYSTEM);
|
|
- infile = fopen(filename, "r");
|
|
+ char buffer[4096];
|
|
+ int nchars;
|
|
|
|
- if (infile)
|
|
+ while (!feof(infile))
|
|
{
|
|
- char buffer[4096];
|
|
- int nchars;
|
|
-
|
|
- while (!feof(infile))
|
|
- {
|
|
- nchars = fread(buffer, 1, 4096, infile);
|
|
- gtk_text_insert(GTK_TEXT(text), NULL, NULL, NULL, buffer, nchars);
|
|
- }
|
|
-
|
|
- fclose(infile);
|
|
- }
|
|
- else
|
|
- {
|
|
- DBG(DBG_error0, "ERROR: license text not found. Looks like xsane is not installed correct.\n");
|
|
- return;
|
|
+ nchars = fread(buffer, 1, 4096, infile);
|
|
+ text = g_string_append_len (text, buffer, nchars);
|
|
}
|
|
|
|
- /* Thaw the text widget, allowing the updates to become visible */
|
|
- gtk_text_thaw(GTK_TEXT(text));
|
|
+ fclose(infile);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ DBG(DBG_error0, "ERROR: license text not found. Looks like xsane is not installed correct.\n");
|
|
+ g_string_free (text, TRUE);
|
|
+ return;
|
|
}
|
|
-#endif
|
|
-
|
|
|
|
+ /* add hbox with text and scrollbar to display the license text */
|
|
+ hbox = xsane_eula_license_textbox (text->str);
|
|
+ g_string_free (text, TRUE);
|
|
+ gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
|
|
+ gtk_paned_add2 (GTK_PANED (pane), hbox);
|
|
+ gtk_widget_show(hbox);
|
|
|
|
hbox = gtk_hbox_new(FALSE, 2);
|
|
gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
|