/*
* Geeqie
- * Copyright (C) 2008 The Geeqie Team
+ * Copyright (C) 2008 - 2012 The Geeqie Team
*
* Authors: Vladimir Nadvornik / Laurent Monin
*
#include "main.h"
#include "window.h"
+#include "misc.h"
#include "pixbuf_util.h"
#include "ui_fileops.h"
#include "ui_help.h"
-GtkWidget *window_new(GtkWindowType type, const gchar *name, const gchar *icon,
+GtkWidget *window_new(GtkWindowType type, const gchar *role, const gchar *icon,
const gchar *icon_file, const gchar *subtitle)
{
gchar *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);
+ gtk_window_set_role(GTK_WINDOW(window), role);
return window;
}
}
}
-gint window_maximized(GtkWidget *window)
+gboolean window_maximized(GtkWidget *window)
{
GdkWindowState state;
- if (!window || !window->window) return FALSE;
+ if (!window || !gtk_widget_get_window(window)) return FALSE;
- state = gdk_window_get_state(window->window);
- return (state & GDK_WINDOW_STATE_MAXIMIZED);
+ state = gdk_window_get_state(gtk_widget_get_window(window));
+ return !!(state & GDK_WINDOW_STATE_MAXIMIZED);
}
/*
f = popen(command, "r");
if (!f) return NULL;
- while ((l = fread(buf, sizeof(char), sizeof(buf), f)) > 0)
+ while ((l = fread(buf, sizeof(gchar), sizeof(buf), f)) > 0)
{
if (!result)
{
return result;
}
-static void help_browser_command(const gchar *command, const gchar *path)
+static int help_browser_command(const gchar *command, const gchar *path)
{
gchar *result;
gchar *buf;
gchar *begin;
gchar *end;
+ int retval = -1;
- if (!command || !path) return;
+ if (!command || !path) return retval;
DEBUG_1("Help command pre \"%s\", \"%s\"", command, path);
DEBUG_1("Help command post [%s]", result);
- system(result);
+ retval = runcmd(result);
+ DEBUG_1("Help command exit code: %d", retval);
g_free(result);
+ return retval;
}
/*
"mozilla", NULL,
"konqueror", NULL,
"netscape", NULL,
+ "opera", "!opera --remote 'openURL(%s,new-page)'",
NULL, NULL
};
static void help_browser_run(void)
{
- gchar *result;
+ gchar *name = options->helpers.html_browser.command_name;
+ gchar *cmd = options->helpers.html_browser.command_line;
+ gchar *path = g_build_filename(GQ_HTMLDIR, "index.html", NULL);
+ gchar *result = NULL;
gint i;
- result = command_result(options->helpers.html_browser.command_name, options->helpers.html_browser.command_line);
-
i = 0;
- while (!result && html_browsers[i])
+ while (!result)
{
- result = command_result(html_browsers[i], html_browsers[i+1]);
- i += 2;
+ if ((name && *name) || (cmd && *cmd)) {
+ DEBUG_1("Trying browser: name=%s command=%s", name, cmd);
+ result = command_result(name, cmd);
+ DEBUG_1("Result: %s", result);
+ if (result)
+ {
+ int ret = help_browser_command(result, path);
+
+ if (ret == 0) break;
+ g_free(result);
+ result = NULL;
+ }
+ }
+ if (!html_browsers[i]) break;
+ name = html_browsers[i++];
+ cmd = html_browsers[i++];
}
if (!result)
return;
}
- help_browser_command(result, GQ_HTMLDIR G_DIR_SEPARATOR_S "index.html");
-
+ g_free(path);
g_free(result);
}
void help_window_show(const gchar *key)
{
+ gchar *path;
+
if (key && strcmp(key, "html_contents") == 0)
{
help_browser_run();
return;
}
- help_window = help_window_new(_("Help"), GQ_WMCLASS, "help",
- GQ_HELPDIR G_DIR_SEPARATOR_S "README", key);
+ path = g_build_filename(GQ_HELPDIR, "README", NULL);
+ help_window = help_window_new(_("Help"), "help", path, key);
+ g_free(path);
g_signal_connect(G_OBJECT(help_window), "destroy",
G_CALLBACK(help_window_destroy_cb), NULL);
}
+/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */