annotate src/main.c @ 9:d907d608745f

Sync to GQview 1.5.9 release. ######## DO NOT BASE ENHANCEMENTS OR TRANSLATION UPDATES ON CODE IN THIS CVS! This CVS is never up to date with current development and is provided solely for reference purposes, please use the latest official release package when making any changes or translation updates. ########
author gqview
date Sat, 26 Feb 2005 00:13:35 +0000
parents c0e337a01cb7
children 6d50eaba8e4b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1 /*
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
2 * GQview
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
3 * (C) 2004 John Ellis
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
4 *
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
5 * Author: John Ellis
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
6 *
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
7 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
8 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
9 * This software comes with no warranty of any kind, use at your own risk!
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
10 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
11
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
12
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
13 #include "gqview.h"
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
14
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
15 #include "cache.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
16 #include "collect.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
17 #include "collect-io.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
18 #include "dnd.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
19 #include "editors.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
20 #include "filelist.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
21 #include "img-view.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
22 #include "layout.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
23 #include "layout_image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
24 #include "menu.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
25 #include "preferences.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
26 #include "rcfile.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
27 #include "remote.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
28 #include "similar.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
29 #include "slideshow.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
30 #include "utilops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
31 #include "ui_bookmark.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
32 #include "ui_help.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
33 #include "ui_fileops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
34 #include "ui_tabcomp.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
35 #include "ui_utildlg.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
36
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
37 #include <gdk/gdkkeysyms.h> /* for keyboard values */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
38
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
39 #include "icons/icon.xpm"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
40
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
41
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
42 #include <math.h>
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
43
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
44
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
45 static RemoteConnection *gqview_remote = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
46 static CollectionData *gqview_command_collection = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
47
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
48
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
49 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
50 *-----------------------------------------------------------------------------
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
51 * misc (public)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
52 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
53 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
54
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
55 typedef struct _WindowIconData WindowIconData;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
56 struct _WindowIconData
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
57 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
58 const char **icon;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
59 gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
60 };
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
61
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
62 static void window_set_icon_cb(GtkWidget *widget, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
63 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
64 WindowIconData *wid = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
65 GdkPixbuf *pb;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
66 GdkPixmap *pixmap;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
67 GdkBitmap *mask;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
68
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
69 if (wid->icon)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
70 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
71 pb = gdk_pixbuf_new_from_xpm_data(wid->icon);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
72 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
73 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
74 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
75 pb = gdk_pixbuf_new_from_file(wid->path, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
76 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
77
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
78 g_free(wid->path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
79 g_free(wid);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
80
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
81 if (!pb) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
82
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
83 gdk_pixbuf_render_pixmap_and_mask(pb, &pixmap, &mask, 128);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
84 gdk_pixbuf_unref(pb);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
85
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
86 gdk_window_set_icon(widget->window, NULL, pixmap, mask);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
87 /* apparently, gdk_window_set_icon does not ref the pixmap and mask, so don't unref it (leak?) */
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
88 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
89
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
90 void window_set_icon(GtkWidget *window, const char **icon, const gchar *file)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
91 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
92 WindowIconData *wid;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
93
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
94 if (!icon && !file) icon = (const char **)icon_xpm;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
95
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
96 wid = g_new0(WindowIconData, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
97 wid->icon = icon;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
98 wid->path = g_strdup(file);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
99
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
100 g_signal_connect(G_OBJECT(window), "realize",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
101 G_CALLBACK(window_set_icon_cb), wid);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
102 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
103
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
104 gint window_maximized(GtkWidget *window)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
105 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
106 GdkWindowState state;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
107
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
108 if (!window || !window->window) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
109
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
110 state = gdk_window_get_state(window->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
111 return (state & GDK_WINDOW_STATE_MAXIMIZED);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
112 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
113
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
114 gdouble get_zoom_increment(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
115 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
116 return ((zoom_increment != 0) ? (gdouble)zoom_increment / 10.0 : 1.0);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
117 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
118
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
119 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
120 *-----------------------------------------------------------------------------
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
121 * Open browser with the help Documentation
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
122 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
123 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
124
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
125 static gchar *command_result(const gchar *binary, const gchar *command)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
126 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
127 gchar *result = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
128 FILE *f;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
129 char buf[2048];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
130 int l;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
131
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
132 if (!binary) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
133 if (!file_in_path(binary)) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
134
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
135 if (!command) return g_strdup(binary);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
136 if (command[0] == '!') return g_strdup(command + 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
137
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
138 f = popen(command, "r");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
139 if (!f) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
140
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
141 while ((l = fread(buf, sizeof(char), sizeof(buf), f)) > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
142 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
143 if (!result)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
144 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
145 int n = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
146
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
147 while (n < l && buf[n] != '\n' && buf[n] != '\r') n++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
148 if (n > 0) result = g_strndup(buf, n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
149 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
150 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
151
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
152 pclose(f);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
153
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
154 return result;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
155 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
156
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
157 static void help_browser_command(const gchar *command, const gchar *path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
158 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
159 gchar *result;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
160 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
161 gchar *begin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
162 gchar *end;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
163
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
164 if (!command || !path) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
165
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
166 if (debug) printf("Help command pre \"%s\", \"%s\"\n", command, path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
167
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
168 buf = g_strdup(command);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
169 begin = strstr(buf, "%s");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
170 if (begin)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
171 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
172 *begin = '\0';
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
173 end = begin + 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
174 begin = buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
175
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
176 result = g_strdup_printf("%s%s%s &", begin, path, end);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
177 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
178 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
179 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
180 result = g_strdup_printf("%s \"%s\" &", command, path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
181 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
182 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
183
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
184 if (debug) printf("Help command post [%s]\n", result);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
185
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
186 system(result);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
187
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
188 g_free(result);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
189 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
190
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
191 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
192 * each set of 2 strings is one browser:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
193 * the 1st is the binary to look for in the path
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
194 * the 2nd has 3 capabilities:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
195 * NULL exec binary with html file path as command line
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
196 * string exec string and use results for command line
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
197 * !string use text following ! as command line, replacing optional %s with html file path
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
198 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
199 static gchar *html_browsers[] =
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
200 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
201 /* Redhat has a nifty htmlview script to start the user's preferred browser */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
202 "htmlview", NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
203 /* GNOME 2 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
204 "gconftool-2", "gconftool-2 -g /desktop/gnome/url-handlers/http/command",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
205 /* KDE */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
206 "kfmclient", "!kfmclient exec \"%s\"",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
207 /* use fallbacks */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
208 "firefox", NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
209 "mozilla", NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
210 "konqueror", NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
211 "netscape", NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
212 NULL, NULL
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
213 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
214
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
215 static void help_browser_run(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
216 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
217 gchar *result = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
218 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
219
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
220 i = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
221 while (!result && html_browsers[i])
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
222 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
223 result = command_result(html_browsers[i], html_browsers[i+1]);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
224 i += 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
225 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
226
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
227 if (!result)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
228 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
229 printf("Unable to detect an installed browser.\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
230 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
231 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
232
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
233 help_browser_command(result, GQVIEW_HTMLDIR "/index.html");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
234
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
235 g_free(result);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
236 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
237
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
238 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
239 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
240 * help window
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
241 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
242 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
243
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
244 static GtkWidget *help_window = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
245
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
246 static void help_window_destroy_cb(GtkWidget *window, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
247 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
248 help_window = NULL;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
249 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
250
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
251 void help_window_show(const gchar *key)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
252 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
253 if (key && strcmp(key, "html_contents") == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
254 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
255 help_browser_run();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
256 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
257 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
258
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
259 if (help_window)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
260 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
261 gtk_window_present(GTK_WINDOW(help_window));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
262 if (key) help_window_set_key(help_window, key);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
263 return;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
264 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
265
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
266 help_window = help_window_new(_("Help - GQview"), "GQview", "help",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
267 GQVIEW_HELPDIR "/README", key);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
268 g_signal_connect(G_OBJECT(help_window), "destroy",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
269 G_CALLBACK(help_window_destroy_cb), NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
270 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
271
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
272
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
273 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
274 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
275 * keyboard functions
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
276 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
277 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
278
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
279 void keyboard_scroll_calc(gint *x, gint *y, GdkEventKey *event)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
280 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
281 static gint delta = 0;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
282 static guint32 time_old = 0;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
283 static guint keyval_old = 0;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
284
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
285 if (event->state & GDK_CONTROL_MASK)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
286 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
287 if (*x < 0) *x = G_MININT / 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
288 if (*x > 0) *x = G_MAXINT / 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
289 if (*y < 0) *y = G_MININT / 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
290 if (*y > 0) *y = G_MAXINT / 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
291
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
292 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
293 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
294
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
295 if (progressive_key_scrolling)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
296 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
297 guint32 time_diff;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
298
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
299 time_diff = event->time - time_old;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
300
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
301 /* key pressed within 125ms ? (1/8 second) */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
302 if (time_diff > 125 || event->keyval != keyval_old) delta = 0;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
303
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
304 time_old = event->time;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
305 keyval_old = event->keyval;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
306
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
307 delta += 2;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
308 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
309 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
310 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
311 delta = 8;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
312 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
313
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
314 *x = *x * delta;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
315 *y = *y * delta;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
316 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
317
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
318
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
319 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
320 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
321 * remote functions
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
322 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
323 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
324
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
325 static void gr_image_next(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
326 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
327 layout_image_next(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
328 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
329
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
330 static void gr_image_prev(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
331 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
332 layout_image_prev(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
333 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
334
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
335 static void gr_image_first(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
336 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
337 layout_image_first(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
338 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
339
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
340 static void gr_image_last(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
341 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
342 layout_image_last(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
343 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
344
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
345 static void gr_fullscreen_toggle(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
346 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
347 layout_image_full_screen_toggle(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
348 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
349
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
350 static void gr_fullscreen_start(const gchar *text, gpointer data)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
351 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
352 layout_image_full_screen_start(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
353 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
354
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
355 static void gr_fullscreen_stop(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
356 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
357 layout_image_full_screen_stop(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
358 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
359
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
360 static void gr_slideshow_start_rec(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
361 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
362 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
363
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
364 list = path_list_recursive(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
365 if (!list) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
366 printf("length: %d\n", g_list_length(list));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
367 layout_image_slideshow_stop(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
368 layout_image_slideshow_start_from_list(NULL, list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
369 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
370
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
371 static void gr_slideshow_toggle(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
372 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
373 layout_image_slideshow_toggle(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
374 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
375
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
376 static void gr_slideshow_start(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
377 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
378 layout_image_slideshow_start(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
379 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
380
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
381 static void gr_slideshow_stop(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
382 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
383 layout_image_slideshow_stop(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
384 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
385
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
386 static void gr_slideshow_delay(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
387 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
388 gdouble n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
389
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
390 n = strtod(text, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
391 if (n < SLIDESHOW_MIN_SECONDS || n > SLIDESHOW_MAX_SECONDS)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
392 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
393 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
394
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
395 buf = g_strdup_printf("Remote slideshow delay out of range (%.1f to %.1f)\n",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
396 SLIDESHOW_MIN_SECONDS, SLIDESHOW_MAX_SECONDS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
397 print_term(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
398 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
399
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
400 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
401 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
402 slideshow_delay = (gint)(n * 10.0 + 0.01);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
403 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
404
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
405 static void gr_tools_show(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
406 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
407 gint popped;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
408 gint hidden;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
409
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
410 if (layout_tools_float_get(NULL, &popped, &hidden) && hidden)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
411 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
412 layout_tools_float_set(NULL, popped, FALSE);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
413 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
414 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
415
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
416 static void gr_tools_hide(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
417 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
418 gint popped;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
419 gint hidden;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
420
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
421 if (layout_tools_float_get(NULL, &popped, &hidden) && !hidden)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
422 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
423 layout_tools_float_set(NULL, popped, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
424 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
425 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
426
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
427 static gint gr_quit_idle_cb(gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
428 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
429 exit_gqview();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
430
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
431 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
432 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
433
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
434 static void gr_quit(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
435 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
436 /* schedule exit when idle, if done from within a
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
437 * remote handler remote_close will crash
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
438 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
439 g_idle_add(gr_quit_idle_cb, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
440 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
441
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
442 static void gr_file_load(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
443 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
444 if (isfile(text))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
445 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
446 if (file_extension_match(text, ".gqv"))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
447 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
448 collection_window_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
449 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
450 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
451 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
452 layout_set_path(NULL, text);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
453 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
454 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
455 else if (isdir(text))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
456 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
457 layout_set_path(NULL, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
458 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
459 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
460 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
461 printf("remote sent filename that does not exist:\"%s\"\n", text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
462 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
463 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
464
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
465 static void gr_file_view(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
466 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
467 view_window_new(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
468 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
469
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
470 static void gr_list_clear(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
471 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
472 if (gqview_command_collection) collection_unref(gqview_command_collection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
473 gqview_command_collection = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
474 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
475
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
476 static void gr_list_add(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
477 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
478 gint new = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
479
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
480 if (!gqview_command_collection)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
481 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
482 CollectionData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
483
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
484 cd = collection_new("");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
485
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
486 g_free(cd->path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
487 cd->path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
488 g_free(cd->name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
489 cd->name = g_strdup(_("Command line"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
490
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
491 gqview_command_collection = cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
492 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
493 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
494 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
495 new = (!collection_get_first(gqview_command_collection));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
496 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
497
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
498 if (collection_add(gqview_command_collection, text, FALSE) && new)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
499 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
500 layout_image_set_collection(NULL, gqview_command_collection,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
501 collection_get_first(gqview_command_collection));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
502 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
503 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
504
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
505 static void gr_raise(const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
506 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
507 LayoutWindow *lw = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
508
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
509 if (layout_valid(&lw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
510 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
511 gtk_window_present(GTK_WINDOW(lw->window));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
512 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
513 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
514
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
515 typedef struct _RemoteCommandEntry RemoteCommandEntry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
516 struct _RemoteCommandEntry {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
517 gchar *opt_s;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
518 gchar *opt_l;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
519 void (*func)(const gchar *text, gpointer data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
520 gint needs_extra;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
521 gint prefer_command_line;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
522 gchar *description;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
523 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
524
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
525 static RemoteCommandEntry remote_commands[] = {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
526 /* short, long callback, extra, prefer,description */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
527 { "-n", "--next", gr_image_next, FALSE, FALSE, N_("next image") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
528 { "-b", "--back", gr_image_prev, FALSE, FALSE, N_("previous image") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
529 { NULL, "--first", gr_image_first, FALSE, FALSE, N_("first image") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
530 { NULL, "--last", gr_image_last, FALSE, FALSE, N_("last image") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
531 { "-f", "--fullscreen", gr_fullscreen_toggle, FALSE, TRUE, N_("toggle full screen") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
532 { "-fs","--fullscreen-start", gr_fullscreen_start, FALSE, FALSE, N_("start full screen") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
533 { "-fS","--fullscreen-stop", gr_fullscreen_stop, FALSE, FALSE, N_("stop full screen") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
534 { "-s", "--slideshow", gr_slideshow_toggle, FALSE, TRUE, N_("toggle slide show") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
535 { "-ss","--slideshow-start", gr_slideshow_start, FALSE, FALSE, N_("start slide show") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
536 { "-sS","--slideshow-stop", gr_slideshow_stop, FALSE, FALSE, N_("stop slide show") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
537 { "-sr","--slideshow-recurse", gr_slideshow_start_rec, TRUE, FALSE, N_("start recursive slide show") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
538 { "-d", "--delay=", gr_slideshow_delay, TRUE, FALSE, N_("set slide show delay in seconds") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
539 { "+t", "--tools-show", gr_tools_show, FALSE, TRUE, N_("show tools") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
540 { "-t", "--tools-hide", gr_tools_hide, FALSE, TRUE, N_("hide tools") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
541 { "-q", "--quit", gr_quit, FALSE, FALSE, N_("quit") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
542 { NULL, "file:", gr_file_load, TRUE, FALSE, N_("open file") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
543 { NULL, "view:", gr_file_view, TRUE, FALSE, N_("open file in new window") },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
544 { NULL, "--list-clear", gr_list_clear, FALSE, FALSE, NULL },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
545 { NULL, "--list-add:", gr_list_add, TRUE, FALSE, NULL },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
546 { NULL, "raise", gr_raise, FALSE, FALSE, NULL },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
547 { NULL, NULL, NULL, FALSE, FALSE, NULL }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
548 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
549
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
550 static RemoteCommandEntry *gqview_remote_command_find(const gchar *text, const gchar **offset)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
551 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
552 gint match = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
553 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
554
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
555 i = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
556 while (!match && remote_commands[i].func != NULL)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
557 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
558 if (remote_commands[i].needs_extra)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
559 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
560 if (remote_commands[i].opt_s &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
561 strncmp(remote_commands[i].opt_s, text, strlen(remote_commands[i].opt_s)) == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
562 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
563 if (offset) *offset = text + strlen(remote_commands[i].opt_s);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
564 return &remote_commands[i];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
565 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
566 else if (remote_commands[i].opt_l &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
567 strncmp(remote_commands[i].opt_l, text, strlen(remote_commands[i].opt_l)) == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
568 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
569 if (offset) *offset = text + strlen(remote_commands[i].opt_l);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
570 return &remote_commands[i];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
571 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
572 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
573 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
574 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
575 if ((remote_commands[i].opt_s && strcmp(remote_commands[i].opt_s, text) == 0) ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
576 (remote_commands[i].opt_l && strcmp(remote_commands[i].opt_l, text) == 0))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
577 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
578 if (offset) *offset = text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
579 return &remote_commands[i];
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
580 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
581 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
582
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
583 i++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
584 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
585
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
586 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
587 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
588
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
589 static void gqview_remote_cb(RemoteConnection *rc, const gchar *text, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
590 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
591 RemoteCommandEntry *entry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
592 const gchar *offset;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
593
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
594 entry = gqview_remote_command_find(text, &offset);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
595 if (entry && entry->func)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
596 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
597 entry->func(offset, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
598 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
599 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
600 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
601 printf("unknown remote command:%s\n", text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
602 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
603 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
604
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
605 static void gqview_remote_help(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
606 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
607 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
608
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
609 print_term(_("Remote command list:\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
610
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
611 i = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
612 while (remote_commands[i].func != NULL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
613 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
614 if (remote_commands[i].description)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
615 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
616 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
617
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
618 buf = g_strdup_printf(" %-3s%s %-20s %s\n",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
619 (remote_commands[i].opt_s) ? remote_commands[i].opt_s : "",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
620 (remote_commands[i].opt_s && remote_commands[i].opt_l) ? "," : " ",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
621 (remote_commands[i].opt_l) ? remote_commands[i].opt_l : "",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
622 _(remote_commands[i].description));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
623
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
624 print_term(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
625 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
626 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
627 i++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
628 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
629 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
630
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
631 static GList *gqview_remote_build_list(GList *list, int argc, char *argv[])
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
632 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
633 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
634
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
635 i = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
636 while (i < argc)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
637 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
638 RemoteCommandEntry *entry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
639
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
640 entry = gqview_remote_command_find(argv[i], NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
641 if (entry)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
642 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
643 list = g_list_append(list, argv[i]);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
644 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
645 i++;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
646 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
647
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
648 return list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
649 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
650
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
651 static void gqview_remote_control(const gchar *arg_exec, GList *remote_list, const gchar *path,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
652 GList *cmd_list, GList *collection_list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
653 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
654 RemoteConnection *rc;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
655 gint started = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
656 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
657
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
658 buf = g_strconcat(homedir(), "/", GQVIEW_RC_DIR, "/.command", NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
659 rc = remote_client_open(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
660 if (!rc)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
661 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
662 GString *command;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
663 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
664 gint retry_count = 12;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
665 gint blank = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
666
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
667 print_term(_("Remote GQview not running, starting..."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
668 command = g_string_new(arg_exec);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
669
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
670 work = remote_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
671 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
672 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
673 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
674 RemoteCommandEntry *entry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
675
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
676 text = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
677 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
678
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
679 entry = gqview_remote_command_find(text, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
680 if (entry)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
681 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
682 if (entry->prefer_command_line)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
683 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
684 remote_list = g_list_remove(remote_list, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
685 g_string_append(command, " ");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
686 g_string_append(command, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
687 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
688 if (entry->opt_l && strcmp(entry->opt_l, "file:") == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
689 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
690 blank = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
691 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
692 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
693 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
694
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
695 if (blank || cmd_list || path) g_string_append(command, " --blank");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
696 if (debug) g_string_append(command, " --debug");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
697
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
698 g_string_append(command, " &");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
699 system(command->str);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
700 g_string_free(command, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
701
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
702 while (!rc && retry_count > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
703 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
704 usleep((retry_count > 10) ? 500000 : 1000000);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
705 rc = remote_client_open(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
706 if (!rc) print_term(".");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
707 retry_count--;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
708 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
709
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
710 print_term("\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
711
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
712 started = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
713 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
714 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
715
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
716 if (rc)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
717 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
718 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
719 const gchar *prefix;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
720 gint use_path = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
721 gint sent = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
722
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
723 work = remote_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
724 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
725 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
726 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
727 RemoteCommandEntry *entry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
728
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
729 text = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
730 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
731
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
732 entry = gqview_remote_command_find(text, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
733 if (entry &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
734 entry->opt_l &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
735 strcmp(entry->opt_l, "file:") == 0) use_path = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
736
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
737 remote_client_send(rc, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
738
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
739 sent = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
740 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
741
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
742 if (cmd_list && cmd_list->next)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
743 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
744 prefix = "--list-add:";
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
745 remote_client_send(rc, "--list-clear");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
746 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
747 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
748 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
749 prefix = "file:";
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
750 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
751
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
752 work = cmd_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
753 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
754 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
755 const gchar *name;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
756 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
757
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
758 name = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
759 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
760
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
761 text = g_strconcat(prefix, name, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
762 remote_client_send(rc, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
763 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
764
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
765 sent = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
766 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
767
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
768 if (path && !cmd_list && use_path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
769 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
770 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
771
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
772 text = g_strdup_printf("file:%s", path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
773 remote_client_send(rc, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
774 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
775
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
776 sent = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
777 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
778
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
779 work = collection_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
780 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
781 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
782 const gchar *name;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
783 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
784
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
785 name = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
786 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
787
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
788 text = g_strdup_printf("file:%s", name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
789 remote_client_send(rc, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
790 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
791
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
792 sent = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
793 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
794
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
795 if (!started && !sent)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
796 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
797 remote_client_send(rc, "raise");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
798 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
799 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
800 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
801 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
802 print_term(_("Remote not available\n"));
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
803 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
804
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
805 _exit(0);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
806 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
807
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
808 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
809 *-----------------------------------------------------------------------------
3
gqview
parents: 1
diff changeset
810 * command line parser (private) hehe, who needs popt anyway?
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
811 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
812 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
813
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
814 static gint startup_blank = FALSE;
3
gqview
parents: 1
diff changeset
815 static gint startup_full_screen = FALSE;
gqview
parents: 1
diff changeset
816 static gint startup_in_slideshow = FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
817 static gint startup_command_line_collection = FALSE;
3
gqview
parents: 1
diff changeset
818
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
819
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
820 static void parse_command_line_add_file(const gchar *new_path, gchar **path, gchar **file,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
821 GList **list, GList **collection_list)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
822 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
823 gchar *path_parsed;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
824
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
825 path_parsed = g_strdup(new_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
826 parse_out_relatives(path_parsed);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
827
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
828 if (file_extension_match(new_path, ".gqv"))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
829 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
830 *collection_list = g_list_append(*collection_list, path_parsed);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
831 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
832 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
833 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
834 if (!*path) *path = remove_level_from_path(path_parsed);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
835 if (!*file) *file = g_strdup(path_parsed);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
836 *list = g_list_append(*list, path_parsed);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
837 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
838 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
839
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
840 static void parse_command_line(int argc, char *argv[], gchar **path, gchar **file,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
841 GList **cmd_list, GList **collection_list)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
842 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
843 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
844 GList *remote_list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
845 gint remote_do = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
846
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
847 if (argc > 1)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
848 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
849 gint i;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
850 gchar *base_dir = get_current_dir();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
851 i = 1;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
852 while (i < argc)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
853 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
854 const gchar *cmd_line = argv[i];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
855 gchar *cmd_all = concat_dir_and_file(base_dir, cmd_line);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
856
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
857 if (!*path && cmd_line[0] == '/' && isdir(cmd_line))
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
858 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
859 *path = g_strdup(cmd_line);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
860 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
861 else if (!*path && isdir(cmd_all))
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
862 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
863 *path = g_strdup(cmd_all);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
864 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
865 else if (cmd_line[0] == '/' && isfile(cmd_line))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
866 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
867 parse_command_line_add_file(cmd_line, path, file, &list, collection_list);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
868 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
869 else if (isfile(cmd_all))
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
870 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
871 parse_command_line_add_file(cmd_all, path, file, &list, collection_list);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
872 }
3
gqview
parents: 1
diff changeset
873 else if (strcmp(cmd_line, "--debug") == 0)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
874 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
875 /* we now increment the debug state for verbosity */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
876 debug++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
877 printf("debugging output enabled (level %d)\n", debug);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
878 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
879 else if (strcmp(cmd_line, "+t") == 0 ||
3
gqview
parents: 1
diff changeset
880 strcmp(cmd_line, "--with-tools") == 0)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
881 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
882 tools_float = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
883 tools_hidden = FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
884
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
885 remote_list = g_list_append(remote_list, "+t");
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
886 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
887 else if (strcmp(cmd_line, "-t") == 0 ||
3
gqview
parents: 1
diff changeset
888 strcmp(cmd_line, "--without-tools") == 0)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
889 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
890 tools_hidden = TRUE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
891
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
892 remote_list = g_list_append(remote_list, "-t");
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
893 }
3
gqview
parents: 1
diff changeset
894 else if (strcmp(cmd_line, "-f") == 0 ||
gqview
parents: 1
diff changeset
895 strcmp(cmd_line, "--fullscreen") == 0)
gqview
parents: 1
diff changeset
896 {
gqview
parents: 1
diff changeset
897 startup_full_screen = TRUE;
gqview
parents: 1
diff changeset
898 }
gqview
parents: 1
diff changeset
899 else if (strcmp(cmd_line, "-s") == 0 ||
gqview
parents: 1
diff changeset
900 strcmp(cmd_line, "--slideshow") == 0)
gqview
parents: 1
diff changeset
901 {
gqview
parents: 1
diff changeset
902 startup_in_slideshow = TRUE;
gqview
parents: 1
diff changeset
903 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
904 else if (strcmp(cmd_line, "-l") == 0 ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
905 strcmp(cmd_line, "--list") == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
906 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
907 startup_command_line_collection = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
908 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
909 else if (strcmp(cmd_line, "-r") == 0 ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
910 strcmp(cmd_line, "--remote") == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
911 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
912 if (!remote_do)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
913 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
914 remote_do = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
915 remote_list = gqview_remote_build_list(remote_list, argc, argv);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
916 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
917 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
918 else if (strcmp(cmd_line, "-rh") == 0 ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
919 strcmp(cmd_line, "--remote-help") == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
920 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
921 gqview_remote_help();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
922 exit (0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
923 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
924 else if (strcmp(cmd_line, "--blank") == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
925 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
926 startup_blank = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
927 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
928 else if (strcmp(cmd_line, "-v") == 0 ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
929 strcmp(cmd_line, "--version") == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
930 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
931 printf("GQview %s\n", VERSION);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
932 exit (0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
933 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
934 else if (strcmp(cmd_line, "--alternate") == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
935 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
936 /* enable faster experimental algorithm */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
937 printf("Alternate similarity algorithm enabled\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
938 image_sim_alternate_set(TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
939 }
3
gqview
parents: 1
diff changeset
940 else if (strcmp(cmd_line, "-h") == 0 ||
gqview
parents: 1
diff changeset
941 strcmp(cmd_line, "--help") == 0)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
942 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
943 printf("GQview %s\n", VERSION);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
944 print_term(_("Usage: gqview [options] [path]\n\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
945 print_term(_("valid options are:\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
946 print_term(_(" +t, --with-tools force show of tools\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
947 print_term(_(" -t, --without-tools force hide of tools\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
948 print_term(_(" -f, --fullscreen start in full screen mode\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
949 print_term(_(" -s, --slideshow start in slideshow mode\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
950 print_term(_(" -l, --list open collection window for command line\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
951 print_term(_(" -r, --remote send following commands to open window\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
952 print_term(_(" -rh,--remote-help print remote command list\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
953 print_term(_(" --debug turn on debug output\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
954 print_term(_(" -v, --version print version info\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
955 print_term(_(" -h, --help show this message\n\n"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
956
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
957 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
958 /* these options are not officially supported!
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
959 * only for testing new features, no need to translate them */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
960 print_term( " --alternate use alternate similarity algorithm\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
961 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
962
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
963 exit (0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
964 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
965 else if (!remote_do)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
966 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
967 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
968
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
969 buf = g_strdup_printf(_("invalid or ignored: %s\nUse --help for options\n"), cmd_line);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
970 print_term(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
971 g_free(buf);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
972 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
973
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
974 g_free(cmd_all);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
975 i++;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
976 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
977 g_free(base_dir);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
978 parse_out_relatives(*path);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
979 parse_out_relatives(*file);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
980 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
981
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
982 if (remote_do)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
983 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
984 gqview_remote_control(argv[0], remote_list, *path, list, *collection_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
985 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
986 g_list_free(remote_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
987
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
988 if (list && list->next)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
989 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
990 *cmd_list = list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
991 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
992 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
993 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
994 path_list_free(list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
995 *cmd_list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
996 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
997 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
998
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
999 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1000 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1001 * startup, init, and exit
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1002 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1003 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1004
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1005 #define RC_HISTORY_NAME "history"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1006
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1007 static void keys_load(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1008 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1009 gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1010
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1011 path = g_strconcat(homedir(), "/", GQVIEW_RC_DIR, "/", RC_HISTORY_NAME, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1012 history_list_load(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1013 g_free(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1014 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1015
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1016 static void keys_save(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1017 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1018 gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1019
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1020 path = g_strconcat(homedir(), "/", GQVIEW_RC_DIR, "/", RC_HISTORY_NAME, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1021 history_list_save(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1022 g_free(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1023 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1024
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1025 static void check_for_home_path(gchar *path)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1026 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1027 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1028
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1029 buf = g_strconcat(homedir(), "/", path, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1030 if (!isdir(buf))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1031 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1032 gchar *tmp;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1033
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1034 tmp = g_strdup_printf(_("Creating GQview dir:%s\n"), buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1035 print_term(tmp);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1036 g_free(tmp);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1037
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1038 if (!mkdir_utf8(buf, 0755))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1039 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1040 tmp = g_strdup_printf(_("Could not create dir:%s\n"), buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1041 print_term(tmp);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1042 g_free(tmp);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1043 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1044 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1045 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1046 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1047
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1048 static void setup_default_options(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1049 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1050 gchar *path;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1051 gint i;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1052
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1053 for (i = 0; i < GQVIEW_EDITOR_SLOTS; i++)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1054 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1055 editor_name[i] = NULL;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1056 editor_command[i] = NULL;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1057 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1058
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1059 editor_reset_defaults();
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1060
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1061 bookmark_add_default(_("Home"), homedir());
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1062 path = concat_dir_and_file(homedir(), "Desktop");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1063 bookmark_add_default(_("Desktop"), path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1064 g_free(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1065 path = concat_dir_and_file(homedir(), GQVIEW_RC_DIR_COLLECTIONS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1066 bookmark_add_default(_("Collections"), path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1067 g_free(path);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1068
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1069 g_free(safe_delete_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1070 safe_delete_path = concat_dir_and_file(homedir(), GQVIEW_RC_DIR_TRASH);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1071 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1072
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1073 static void exit_gqview_final(void)
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1074 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1075 gchar *path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1076 gchar *pathl;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1077 LayoutWindow *lw = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1078
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1079 remote_close(gqview_remote);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1080
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1081 collect_manager_flush();
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1082
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1083 if (layout_valid(&lw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1084 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1085 main_window_maximized = window_maximized(lw->window);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1086 if (!main_window_maximized)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1087 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1088 layout_geometry_get(NULL, &main_window_x, &main_window_y,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1089 &main_window_w, &main_window_h);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1090 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1091 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1092
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1093 layout_geometry_get_dividers(NULL, &window_hdivider_pos, &window_vdivider_pos);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1094
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1095 layout_views_get(NULL, &layout_view_tree, &layout_view_icons);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1096
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1097 thumbnails_enabled = layout_thumb_get(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1098 layout_sort_get(NULL, &file_sort_method, &file_sort_ascending);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1099
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1100 layout_geometry_get_tools(NULL, &float_window_x, &float_window_y,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1101 &float_window_w, &float_window_h, &float_window_divider);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1102 layout_tools_float_get(NULL, &tools_float, &tools_hidden);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1103 toolbar_hidden = layout_toolbar_hidden(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1104
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1105 save_options();
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1106 keys_save();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1107
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1108 path = g_strconcat(homedir(), "/", GQVIEW_RC_DIR, "/accels", NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1109 pathl = path_from_utf8(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1110 gtk_accel_map_save(pathl);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1111 g_free(pathl);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1112 g_free(path);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1113
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1114 gtk_main_quit();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1115 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1116
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1117 static GenericDialog *exit_dialog = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1118
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1119 static void exit_confirm_cancel_cb(GenericDialog *gd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1120 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1121 exit_dialog = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1122 generic_dialog_close(gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1123 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1124
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1125 static void exit_confirm_exit_cb(GenericDialog *gd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1126 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1127 exit_dialog = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1128 generic_dialog_close(gd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1129 exit_gqview_final();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1130 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1131
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1132 static gint exit_confirm_dlg(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1133 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1134 GtkWidget *parent;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1135 LayoutWindow *lw;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1136
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1137 if (exit_dialog)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1138 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1139 gtk_window_present(GTK_WINDOW(exit_dialog->dialog));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1140 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1141 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1142
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1143 if (!collection_window_modified_exists()) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1144
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1145 parent = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1146 lw = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1147 if (layout_valid(&lw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1148 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1149 parent = lw->window;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1150 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1151
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1152 exit_dialog = generic_dialog_new(_("GQview - exit"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1153 "GQview", "exit", parent, FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1154 exit_confirm_cancel_cb, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1155 generic_dialog_add_message(exit_dialog, GTK_STOCK_DIALOG_QUESTION,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1156 _("Quit GQview"), _("Collections have been modified. Quit anyway?"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1157 generic_dialog_add_button(exit_dialog, GTK_STOCK_QUIT, NULL, exit_confirm_exit_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1158
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1159 gtk_widget_show(exit_dialog->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1160
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1161 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1162 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1163
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1164 void exit_gqview(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1165 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1166 layout_image_full_screen_stop(NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1167
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1168 if (exit_confirm_dlg()) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1169
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1170 exit_gqview_final();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1171 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1172
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1173 int main (int argc, char *argv[])
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1174 {
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1175 LayoutWindow *lw;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1176 gchar *path = NULL;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1177 gchar *cmd_path = NULL;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1178 gchar *cmd_file = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1179 GList *cmd_list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1180 GList *collection_list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1181 CollectionData *first_collection = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1182 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1183 gchar *bufl;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1184
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1185 /* setup locale, i18n */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1186 gtk_set_locale();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1187 bindtextdomain (PACKAGE, LOCALEDIR);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1188 bind_textdomain_codeset (PACKAGE, "UTF-8");
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1189 textdomain (PACKAGE);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1190
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1191 /* setup random seed for random slideshow */
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1192 srand(time(NULL));
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1193
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1194 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1195 printf("GQview %s, This is a beta release.\n", VERSION);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1196 #endif
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1197
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1198 layout_order = g_strdup("123");
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1199 setup_default_options();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1200 load_options();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1201
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1202 parse_command_line(argc, argv, &cmd_path, &cmd_file, &cmd_list, &collection_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1203
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1204 gtk_init (&argc, &argv);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1205
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1206 if (gtk_major_version < GTK_MAJOR_VERSION ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1207 (gtk_major_version == GTK_MAJOR_VERSION && gtk_minor_version < GTK_MINOR_VERSION) )
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1208 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1209 gchar *msg;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1210 print_term("!!! This is a friendly warning.\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1211 print_term("!!! The version of GTK+ in use now is older than when GQview was compiled.\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1212 msg = g_strdup_printf("!!! compiled with GTK+-%d.%d\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1213 print_term(msg);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1214 g_free(msg);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1215 msg = g_strdup_printf("!!! running with GTK+-%d.%d\n", gtk_major_version, gtk_minor_version);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1216 print_term(msg);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1217 g_free(msg);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1218 print_term("!!! GQview may quit unexpectedly with a relocation error.\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1219 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1220
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1221 check_for_home_path(GQVIEW_RC_DIR);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1222 check_for_home_path(GQVIEW_RC_DIR_COLLECTIONS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1223 check_for_home_path(GQVIEW_CACHE_RC_THUMB);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1224 check_for_home_path(GQVIEW_CACHE_RC_METADATA);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1225
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1226 keys_load();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1227 filter_add_defaults();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1228 filter_rebuild();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1229
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1230 buf = g_strconcat(homedir(), "/", GQVIEW_RC_DIR, "/accels", NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1231 bufl = path_from_utf8(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1232 gtk_accel_map_load(bufl);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1233 g_free(bufl);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1234 g_free(buf);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1235
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1236 if (startup_blank)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1237 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1238 g_free(cmd_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1239 cmd_path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1240 g_free(cmd_file);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1241 cmd_file = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1242 path_list_free(cmd_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1243 cmd_list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1244 path_list_free(collection_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1245 collection_list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1246
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1247 path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1248 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1249 else if (cmd_path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1250 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1251 path = g_strdup(cmd_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1252 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1253 else if (startup_path_enable && startup_path && isdir(startup_path))
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1254 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1255 path = g_strdup(startup_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1256 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1257 else
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1258 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1259 path = get_current_dir();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1260 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1261
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1262 lw = layout_new(NULL, tools_float, tools_hidden);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1263 layout_sort_set(lw, file_sort_method, file_sort_ascending);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1264
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1265 if (collection_list && !startup_command_line_collection)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1266 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1267 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1268
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1269 work = collection_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1270 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1271 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1272 CollectWindow *cw;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1273 const gchar *path;
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1274
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1275 path = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1276 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1277
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1278 cw = collection_window_new(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1279 if (!first_collection && cw) first_collection = cw->cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1280 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1281 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1282
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1283 if (cmd_list ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1284 (startup_command_line_collection && collection_list))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1285 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1286 CollectionData *cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1287 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1288
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1289 if (startup_command_line_collection)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1290 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1291 CollectWindow *cw;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1292
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1293 cw = collection_window_new("");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1294 cd = cw->cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1295 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1296 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1297 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1298 cd = collection_new(""); /* if we pass NULL, untitled counter is falsely increm. */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1299 gqview_command_collection = cd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1300 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1301
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1302 g_free(cd->path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1303 cd->path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1304 g_free(cd->name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1305 cd->name = g_strdup(_("Command line"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1306
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1307 collection_path_changed(cd);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1308
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1309 work = cmd_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1310 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1311 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1312 collection_add(cd, (gchar *)work->data, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1313 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1314 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1315
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1316 work = collection_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1317 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1318 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1319 collection_load(cd, (gchar *)work->data, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1320 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1321 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1322
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1323 layout_set_path(lw, path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1324 if (cd->list) layout_image_set_collection(lw, cd, cd->list->data);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1325
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1326 /* mem leak, we never unref this collection when !startup_command_line_collection
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1327 * (the image view of the main window does not hold a ref to the collection)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1328 * this is sort of unavoidable, for if it did hold a ref, next/back
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1329 * may not work as expected when closing collection windows.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1330 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1331 * collection_unref(cd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1332 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1333
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1334 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1335 else if (cmd_file)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1336 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1337 layout_set_path(lw, cmd_file);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1338 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1339 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1340 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1341 layout_set_path(lw, path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1342 if (first_collection)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1343 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1344 layout_image_set_collection(lw, first_collection,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1345 collection_get_first(first_collection));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1346 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1347 }
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1348
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1349 g_free(cmd_path);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1350 g_free(cmd_file);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1351 path_list_free(cmd_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1352 path_list_free(collection_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1353 g_free(path);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1354
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1355 if (startup_full_screen) layout_image_full_screen_start(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1356 if (startup_in_slideshow) layout_image_slideshow_start(lw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1357
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1358 buf = g_strconcat(homedir(), "/", GQVIEW_RC_DIR, "/.command", NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1359 gqview_remote = remote_server_open(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1360 remote_server_subscribe(gqview_remote, gqview_remote_cb, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents: 3
diff changeset
1361 g_free(buf);
3
gqview
parents: 1
diff changeset
1362
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1363 gtk_main ();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1364 return 0;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1365 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1366