Move some functions from main.[ch] to new window.[ch].
authorLaurent Monin <geeqie@norz.org>
Tue, 13 May 2008 08:02:46 +0000 (08:02 +0000)
committerLaurent Monin <geeqie@norz.org>
Tue, 13 May 2008 08:02:46 +0000 (08:02 +0000)
18 files changed:
po/POTFILES.in
src/Makefile.am
src/collect.c
src/dupe.c
src/fullscreen.c
src/img-view.c
src/info.c
src/layout.c
src/layout_util.c
src/main.c
src/main.h
src/pan-view.c
src/preferences.c
src/search.c
src/ui_help.c
src/ui_utildlg.c
src/window.c [new file with mode: 0644]
src/window.h [new file with mode: 0644]

index 906f6fa..dcdbf9b 100644 (file)
@@ -42,3 +42,4 @@
 ./src/view_dir.c
 ./src/view_file_icon.c
 ./src/view_file_list.c
+./src/window.c
index a53fac2..1ad116e 100644 (file)
@@ -198,7 +198,9 @@ geeqie_SOURCES = \
        view_file_list.c        \
        view_file_list.h        \
        view_file_icon.c        \
-       view_file_icon.h
+       view_file_icon.h        \
+       window.c        \
+       window.h
 
 geeqie_LDADD = $(GTK_LIBS) $(INTLLIBS) $(LCMS_LIBS) $(EXIV2_LIBS)
 
index 35db6fb..46b1e8a 100644 (file)
@@ -29,6 +29,7 @@
 #include "utilops.h"
 #include "ui_fileops.h"
 #include "ui_tree_edit.h"
+#include "window.h"
 
 #include <gdk/gdkkeysyms.h> /* for keyboard values */
 
index b71dcff..4942d17 100644 (file)
@@ -36,6 +36,7 @@
 #include "ui_menu.h"
 #include "ui_misc.h"
 #include "ui_tree_edit.h"
+#include "window.h"
 
 #include <gdk/gdkkeysyms.h> /* for keyboard values */
 
index 233d384..c3ef629 100644 (file)
@@ -19,7 +19,7 @@
 #include "ui_fileops.h"
 #include "ui_menu.h"
 #include "ui_misc.h"
-
+#include "window.h"
 
 enum {
        FULLSCREEN_CURSOR_HIDDEN = 1 << 0,
index efe335c..4810969 100644 (file)
@@ -34,6 +34,7 @@
 #include "ui_bookmark.h"
 #include "ui_fileops.h"
 #include "ui_menu.h"
+#include "window.h"
 
 #include <gdk/gdkkeysyms.h> /* for keyboard values */
 
index ab50de4..5e90740 100644 (file)
@@ -24,6 +24,7 @@
 #include "ui_bookmark.h"
 #include "ui_fileops.h"
 #include "ui_misc.h"
+#include "window.h"
 
 #include <pwd.h>
 #include <grp.h>
index 0b3f228..b215272 100644 (file)
@@ -33,6 +33,8 @@
 #include "ui_menu.h"
 #include "ui_misc.h"
 #include "ui_tabcomp.h"
+#include "window.h"
+
 #ifdef HAVE_LIRC
 #include "lirc.h"
 #endif
index 56b3898..fb1f387 100644 (file)
@@ -40,6 +40,7 @@
 #include "ui_misc.h"
 #include "ui_tabcomp.h"
 #include "view_dir.h"
+#include "window.h"
 
 #include <gdk/gdkkeysyms.h> /* for keyboard values */
 
index fb83e3c..887328c 100644 (file)
@@ -39,6 +39,7 @@
 #include "ui_fileops.h"
 #include "ui_tabcomp.h"
 #include "ui_utildlg.h"
+#include "window.h"
 
 #include <gdk/gdkkeysyms.h> /* for keyboard values */
 
@@ -56,64 +57,6 @@ static CollectionData *command_collection = NULL;
  *-----------------------------------------------------------------------------
  */
 
-GtkWidget *window_new(GtkWindowType type, const gchar *name, const gchar *icon,
-                     const gchar *icon_file, const gchar *subtitle)
-{
-       gchar *title;
-       GtkWidget *window;
-
-       window = gtk_window_new(type);
-       if (!window) return NULL;
-
-       if (subtitle)
-               {
-               title = g_strdup_printf("%s - %s", subtitle, GQ_APPNAME);
-               }
-       else
-               {
-               title = g_strdup_printf("%s", GQ_APPNAME);
-               }
-
-       gtk_window_set_title(GTK_WINDOW(window), title);
-       g_free(title);
-
-       window_set_icon(window, icon, icon_file);
-       gtk_window_set_role(GTK_WINDOW(window), name);
-       gtk_window_set_wmclass(GTK_WINDOW(window), name, GQ_WMCLASS);
-
-       return window;
-}
-
-void window_set_icon(GtkWidget *window, const gchar *icon, const gchar *file)
-{
-       if (!icon && !file) icon = PIXBUF_INLINE_ICON;
-
-       if (icon)
-               {
-               GdkPixbuf *pixbuf;
-
-               pixbuf = pixbuf_inline(icon);
-               if (pixbuf)
-                       {
-                       gtk_window_set_icon(GTK_WINDOW(window), pixbuf);
-                       g_object_unref(pixbuf);
-                       }
-               }
-       else
-               {
-               gtk_window_set_icon_from_file(GTK_WINDOW(window), file, NULL);
-               }
-}
-
-gint window_maximized(GtkWidget *window)
-{
-       GdkWindowState state;
-
-       if (!window || !window->window) return FALSE;
-
-       state = gdk_window_get_state(window->window);
-       return (state & GDK_WINDOW_STATE_MAXIMIZED);
-}
 
 gdouble get_zoom_increment(void)
 {
@@ -139,162 +82,6 @@ gchar *utf8_validate_or_convert(gchar *text)
        return text;
 }
 
-
-/*
- *-----------------------------------------------------------------------------
- * Open  browser with the help Documentation
- *-----------------------------------------------------------------------------
- */
-
-static gchar *command_result(const gchar *binary, const gchar *command)
-{
-       gchar *result = NULL;
-       FILE *f;
-       char buf[2048];
-       int l;
-
-       if (!binary) return NULL;
-       if (!file_in_path(binary)) return NULL;
-
-       if (!command) return g_strdup(binary);
-       if (command[0] == '!') return g_strdup(command + 1);
-
-       f = popen(command, "r");
-       if (!f) return NULL;
-
-       while ((l = fread(buf, sizeof(char), sizeof(buf), f)) > 0)
-               {
-               if (!result)
-                       {
-                       int n = 0;
-
-                       while (n < l && buf[n] != '\n' && buf[n] != '\r') n++;
-                       if (n > 0) result = g_strndup(buf, n);
-                       }
-               }
-
-       pclose(f);
-
-       return result;
-}
-
-static void help_browser_command(const gchar *command, const gchar *path)
-{
-       gchar *result;
-       gchar *buf;
-       gchar *begin;
-       gchar *end;
-
-       if (!command || !path) return;
-
-       DEBUG_1("Help command pre \"%s\", \"%s\"", command, path);
-
-       buf = g_strdup(command);
-       begin = strstr(buf, "%s");
-       if (begin)
-               {
-               *begin = '\0';
-               end = begin + 2;
-               begin = buf;
-
-               result = g_strdup_printf("%s%s%s &", begin, path, end);
-               }
-       else
-               {
-               result = g_strdup_printf("%s \"%s\" &", command, path);
-               }
-       g_free(buf);
-
-       DEBUG_1("Help command post [%s]", result);
-
-       system(result);
-
-       g_free(result);
-}
-
-/*
- * each set of 2 strings is one browser:
- *   the 1st is the binary to look for in the path
- *   the 2nd has 3 capabilities:
- *        NULL     exec binary with html file path as command line
- *        string   exec string and use results for command line
- *        !string  use text following ! as command line, replacing optional %s with html file path
-*/
-static gchar *html_browsers[] =
-{
-       /* Redhat has a nifty htmlview script to start the user's preferred browser */
-       "htmlview",     NULL,
-       /* GNOME 2 */
-       "gconftool-2",  "gconftool-2 -g /desktop/gnome/url-handlers/http/command",
-       /* KDE */
-       "kfmclient",    "!kfmclient exec \"%s\"",
-       /* use fallbacks */
-       "firefox",      NULL,
-       "mozilla",      NULL,
-       "konqueror",    NULL,
-       "netscape",     NULL,
-       NULL,           NULL
-};
-
-static void help_browser_run(void)
-{
-       gchar *result = NULL;
-       gint i;
-
-       i = 0;
-       while (!result && html_browsers[i])
-               {
-               result = command_result(html_browsers[i], html_browsers[i+1]);
-               i += 2;
-               }
-
-       if (!result)
-               {
-               printf("Unable to detect an installed browser.\n");
-               return;
-               }
-
-       help_browser_command(result, GQ_HTMLDIR "/index.html");
-
-       g_free(result);
-}
-
-/*
- *-----------------------------------------------------------------------------
- * help window
- *-----------------------------------------------------------------------------
- */
-
-static GtkWidget *help_window = NULL;
-
-static void help_window_destroy_cb(GtkWidget *window, gpointer data)
-{
-       help_window = NULL;
-}
-
-void help_window_show(const gchar *key)
-{
-       if (key && strcmp(key, "html_contents") == 0)
-               {
-               help_browser_run();
-               return;
-               }
-
-       if (help_window)
-               {
-               gtk_window_present(GTK_WINDOW(help_window));
-               if (key) help_window_set_key(help_window, key);
-               return;
-               }
-
-       help_window = help_window_new(_("Help"), GQ_WMCLASS, "help",
-                                     GQ_HELPDIR "/README", key);
-
-       g_signal_connect(G_OBJECT(help_window), "destroy",
-                        G_CALLBACK(help_window_destroy_cb), NULL);
-}
-
-
 /*
  *-----------------------------------------------------------------------------
  * keyboard functions
index a210236..732f09c 100644 (file)
  * This also doubles as the main.c header.
  */
 
-GtkWidget *window_new(GtkWindowType type, const gchar *name, const gchar *icon,
-                     const gchar *icon_file, const gchar *subtitle);
-void window_set_icon(GtkWidget *window, const gchar *icon, const gchar *file);
-gint window_maximized(GtkWidget *window);
-
 gdouble get_zoom_increment(void);
 gchar *utf8_validate_or_convert(gchar *text);
 
-void help_window_show(const gchar *key);
-
 void keyboard_scroll_calc(gint *x, gint *y, GdkEventKey *event);
 gint key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer data);
+
 void exit_program(void);
 
 #define CASE_SORT(a, b) ( (options->file_sort.case_sensitive) ? strcmp((a), (b)) : strcasecmp((a), (b)) )
index d28330a..0e6dc03 100644 (file)
@@ -31,6 +31,7 @@
 #include "ui_menu.h"
 #include "ui_tabcomp.h"
 #include "ui_utildlg.h"
+#include "window.h"
 
 #include <gdk/gdkkeysyms.h> /* for keyboard values */
 
index 7608c92..f39033b 100644 (file)
 #include "main.h"
 #include "preferences.h"
 
+#include "bar_exif.h"
 #include "cache_maint.h"
 #include "debug.h"
 #include "editors.h"
+#include "exif.h"
 #include "filedata.h"
 #include "filefilter.h"
 #include "fullscreen.h"
@@ -34,8 +36,7 @@
 #include "ui_misc.h"
 #include "ui_tabcomp.h"
 #include "ui_utildlg.h"
-#include "bar_exif.h"
-#include "exif.h"
+#include "window.h"
 
 #include <math.h>
 
index 66a90f1..a8c5b21 100644 (file)
@@ -37,6 +37,7 @@
 #include "ui_spinner.h"
 #include "ui_tabcomp.h"
 #include "ui_tree_edit.h"
+#include "window.h"
 
 #include <gdk/gdkkeysyms.h> /* for keyboard values */
 
index 8a33f39..bbdef1a 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "ui_fileops.h"
 #include "ui_misc.h"
+#include "window.h"
 
 
 #define HELP_WINDOW_WIDTH 650
index cd140f4..8b31771 100644 (file)
@@ -31,7 +31,7 @@
 #include "ui_misc.h"
 #include "ui_pathsel.h"
 #include "ui_tabcomp.h"
-
+#include "window.h"
 
 /*
  *-----------------------------------------------------------------------------
diff --git a/src/window.c b/src/window.c
new file mode 100644 (file)
index 0000000..b4e16c0
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ * Geeqie
+ * Copyright (C) 2008 The Geeqie Team
+ *
+ * Authors: Vladimir Nadvornik / Laurent Monin
+ * 
+ * This software is released under the GNU General Public License (GNU GPL).
+ * Please read the included file COPYING for more information.
+ * This software comes with no warranty of any kind, use at your own risk!
+ */
+
+#include "main.h"
+#include "window.h"
+
+#include "debug.h"
+#include "pixbuf_util.h"
+#include "ui_fileops.h"
+#include "ui_help.h"
+
+GtkWidget *window_new(GtkWindowType type, const gchar *name, const gchar *icon,
+                     const gchar *icon_file, const gchar *subtitle)
+{
+       gchar *title;
+       GtkWidget *window;
+
+       window = gtk_window_new(type);
+       if (!window) return NULL;
+
+       if (subtitle)
+               {
+               title = g_strdup_printf("%s - %s", subtitle, GQ_APPNAME);
+               }
+       else
+               {
+               title = g_strdup_printf("%s", GQ_APPNAME);
+               }
+
+       gtk_window_set_title(GTK_WINDOW(window), title);
+       g_free(title);
+
+       window_set_icon(window, icon, icon_file);
+       gtk_window_set_role(GTK_WINDOW(window), name);
+       gtk_window_set_wmclass(GTK_WINDOW(window), name, GQ_WMCLASS);
+
+       return window;
+}
+
+void window_set_icon(GtkWidget *window, const gchar *icon, const gchar *file)
+{
+       if (!icon && !file) icon = PIXBUF_INLINE_ICON;
+
+       if (icon)
+               {
+               GdkPixbuf *pixbuf;
+
+               pixbuf = pixbuf_inline(icon);
+               if (pixbuf)
+                       {
+                       gtk_window_set_icon(GTK_WINDOW(window), pixbuf);
+                       g_object_unref(pixbuf);
+                       }
+               }
+       else
+               {
+               gtk_window_set_icon_from_file(GTK_WINDOW(window), file, NULL);
+               }
+}
+
+gint window_maximized(GtkWidget *window)
+{
+       GdkWindowState state;
+
+       if (!window || !window->window) return FALSE;
+
+       state = gdk_window_get_state(window->window);
+       return (state & GDK_WINDOW_STATE_MAXIMIZED);
+}
+
+/*
+ *-----------------------------------------------------------------------------
+ * Open  browser with the help Documentation
+ *-----------------------------------------------------------------------------
+ */
+
+static gchar *command_result(const gchar *binary, const gchar *command)
+{
+       gchar *result = NULL;
+       FILE *f;
+       char buf[2048];
+       int l;
+
+       if (!binary) return NULL;
+       if (!file_in_path(binary)) return NULL;
+
+       if (!command) return g_strdup(binary);
+       if (command[0] == '!') return g_strdup(command + 1);
+
+       f = popen(command, "r");
+       if (!f) return NULL;
+
+       while ((l = fread(buf, sizeof(char), sizeof(buf), f)) > 0)
+               {
+               if (!result)
+                       {
+                       int n = 0;
+
+                       while (n < l && buf[n] != '\n' && buf[n] != '\r') n++;
+                       if (n > 0) result = g_strndup(buf, n);
+                       }
+               }
+
+       pclose(f);
+
+       return result;
+}
+
+static void help_browser_command(const gchar *command, const gchar *path)
+{
+       gchar *result;
+       gchar *buf;
+       gchar *begin;
+       gchar *end;
+
+       if (!command || !path) return;
+
+       DEBUG_1("Help command pre \"%s\", \"%s\"", command, path);
+
+       buf = g_strdup(command);
+       begin = strstr(buf, "%s");
+       if (begin)
+               {
+               *begin = '\0';
+               end = begin + 2;
+               begin = buf;
+
+               result = g_strdup_printf("%s%s%s &", begin, path, end);
+               }
+       else
+               {
+               result = g_strdup_printf("%s \"%s\" &", command, path);
+               }
+       g_free(buf);
+
+       DEBUG_1("Help command post [%s]", result);
+
+       system(result);
+
+       g_free(result);
+}
+
+/*
+ * each set of 2 strings is one browser:
+ *   the 1st is the binary to look for in the path
+ *   the 2nd has 3 capabilities:
+ *        NULL     exec binary with html file path as command line
+ *        string   exec string and use results for command line
+ *        !string  use text following ! as command line, replacing optional %s with html file path
+*/
+static gchar *html_browsers[] =
+{
+       /* Redhat has a nifty htmlview script to start the user's preferred browser */
+       "htmlview",     NULL,
+       /* GNOME 2 */
+       "gconftool-2",  "gconftool-2 -g /desktop/gnome/url-handlers/http/command",
+       /* KDE */
+       "kfmclient",    "!kfmclient exec \"%s\"",
+       /* use fallbacks */
+       "firefox",      NULL,
+       "mozilla",      NULL,
+       "konqueror",    NULL,
+       "netscape",     NULL,
+       NULL,           NULL
+};
+
+static void help_browser_run(void)
+{
+       gchar *result = NULL;
+       gint i;
+
+       i = 0;
+       while (!result && html_browsers[i])
+               {
+               result = command_result(html_browsers[i], html_browsers[i+1]);
+               i += 2;
+               }
+
+       if (!result)
+               {
+               printf("Unable to detect an installed browser.\n");
+               return;
+               }
+
+       help_browser_command(result, GQ_HTMLDIR "/index.html");
+
+       g_free(result);
+}
+
+/*
+ *-----------------------------------------------------------------------------
+ * help window
+ *-----------------------------------------------------------------------------
+ */
+
+static GtkWidget *help_window = NULL;
+
+static void help_window_destroy_cb(GtkWidget *window, gpointer data)
+{
+       help_window = NULL;
+}
+
+void help_window_show(const gchar *key)
+{
+       if (key && strcmp(key, "html_contents") == 0)
+               {
+               help_browser_run();
+               return;
+               }
+
+       if (help_window)
+               {
+               gtk_window_present(GTK_WINDOW(help_window));
+               if (key) help_window_set_key(help_window, key);
+               return;
+               }
+
+       help_window = help_window_new(_("Help"), GQ_WMCLASS, "help",
+                                     GQ_HELPDIR "/README", key);
+
+       g_signal_connect(G_OBJECT(help_window), "destroy",
+                        G_CALLBACK(help_window_destroy_cb), NULL);
+}
+
diff --git a/src/window.h b/src/window.h
new file mode 100644 (file)
index 0000000..e3f798c
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Geeqie
+ * Copyright (C) 2008 The Geeqie Team
+ *
+ * Authors: Vladimir Nadvornik / Laurent Monin
+ *
+ *
+ * This software is released under the GNU General Public License (GNU GPL).
+ * Please read the included file COPYING for more information.
+ * This software comes with no warranty of any kind, use at your own risk!
+ */
+
+#ifndef WINDOW_H
+#define WINDOW_H
+
+GtkWidget *window_new(GtkWindowType type, const gchar *name, const gchar *icon,
+                     const gchar *icon_file, const gchar *subtitle);
+void window_set_icon(GtkWidget *window, const gchar *icon, const gchar *file);
+gint window_maximized(GtkWidget *window);
+
+void help_window_show(const gchar *key);
+
+
+#endif /* WINDOW_H */