annotate src/window.c @ 8:e0d0593d519e

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:07:07 +0000
parents c0e337a01cb7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
1 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
2 * GQview image viewer
3
gqview
parents: 1
diff changeset
3 * (C)2000 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 *
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
7 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
8
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
9 #include "gqview.h"
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
10
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
11 #define MAINWINDOW_DEF_WIDTH 500
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
12 #define MAINWINDOW_DEF_HEIGHT 400
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
13 #define TOOLWINDOW_DEF_WIDTH 224
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
14 #define TOOLWINDOW_DEF_HEIGHT 450
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
15 #define LIST_DEFAULT_WIDTH -1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
16 #define LIST_DEFAULT_HEIGHT 100
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
17
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
18 static GtkWidget *add_label(gchar *text, GtkWidget *box, gint start, gint size, gint expand);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
19 static void info_area_create(GtkWidget *vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
20
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
21 static void toolwindow_create();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
22 static void toolwindow_destroy();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
23 static void toolwindow_show();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
24
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
25 static void image_focus_paint(GtkWidget *widget);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
26 static gint image_focus_expose (GtkWidget *widget, GdkEventExpose *event, gpointer data);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
27 static gint image_focus_in_cb(GtkWidget *widget, GdkEventFocus *event, gpointer data);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
28 static gint image_focus_out_cb(GtkWidget *widget, GdkEventFocus *event, gpointer data);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
29
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
30 static void create_tools(GtkAccelGroup *accel_grp, GtkTooltips *tooltips);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
31 static void mainwindow_destroy_cb(GtkWidget *widget, gpointer data);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
32
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
33 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
34 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
35 * information widget creation routines (private)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
36 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
37 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
38
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
39 static GtkWidget *add_label(gchar *text, GtkWidget *box, gint start, gint size, gint expand)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
40 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
41 GtkWidget *label;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
42 GtkWidget *frame;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
43
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
44 frame = gtk_frame_new (NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
45 if (size)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
46 gtk_widget_set_usize (frame, size, -1);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
47 gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_IN);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
48 if (start)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
49 gtk_box_pack_start(GTK_BOX(box), frame, expand, expand, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
50 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
51 gtk_box_pack_end(GTK_BOX(box), frame, expand, expand, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
52 gtk_widget_show(frame);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
53
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
54 label = gtk_label_new(text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
55 gtk_container_add (GTK_CONTAINER (frame), label);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
56 gtk_widget_show(label);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
57
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
58 return label;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
59 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
60
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
61 static void info_area_create(GtkWidget *vbox)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
62 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
63 gchar *status_text;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
64 gchar *details_text;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
65 gchar *zoom_text;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
66 gchar *buf;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
67
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
68 if (info_status)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
69 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
70 gtk_label_get(GTK_LABEL(info_status), &buf);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
71 status_text = g_strdup(buf);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
72
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
73 gtk_label_get(GTK_LABEL(info_details), &buf);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
74 details_text = g_strdup(buf);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
75
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
76 gtk_label_get(GTK_LABEL(info_zoom), &buf);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
77 zoom_text = g_strdup(buf);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
78 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
79 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
80 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
81 status_text = g_strdup("");
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
82 details_text = g_strdup("GQview");
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
83 zoom_text = g_strdup(":");
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
84 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
85
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
86 if (info_box)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
87 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
88 gtk_widget_destroy(info_box);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
89 info_box = NULL;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
90 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
91
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
92 if (vbox)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
93 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
94 GtkWidget *hbox;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
95 hbox = gtk_hbox_new(FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
96 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
97 gtk_widget_show(hbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
98
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
99 info_progress_bar = gtk_progress_bar_new();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
100 gtk_widget_set_usize(info_progress_bar,150,-1);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
101 gtk_box_pack_start (GTK_BOX (hbox), info_progress_bar, FALSE, FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
102 gtk_widget_show(info_progress_bar);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
103
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
104 info_zoom = add_label(zoom_text, hbox, FALSE, 48, FALSE);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
105
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
106 info_status = add_label(status_text, vbox, TRUE, 0, FALSE);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
107 info_details = add_label(details_text, vbox, TRUE, 0, FALSE);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
108 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
109 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
110 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
111 info_box = gtk_hbox_new(FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
112
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
113 info_progress_bar = gtk_progress_bar_new();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
114 gtk_widget_set_usize(info_progress_bar,150,-1);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
115 gtk_box_pack_start (GTK_BOX (info_box), info_progress_bar, FALSE, FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
116 gtk_widget_show(info_progress_bar);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
117
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
118 info_status = add_label(status_text, info_box, TRUE, 0, TRUE);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
119 info_details = add_label(details_text, info_box, TRUE, 0, TRUE);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
120 info_zoom = add_label(zoom_text, info_box, FALSE, 48, FALSE);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
121
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
122 gtk_widget_show(info_box);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
123 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
124
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
125 image_set_labels(info_details, info_zoom);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
126
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
127 g_free(status_text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
128 g_free(details_text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
129 g_free(zoom_text);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
130 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
131
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
132 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
133 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
134 * tool window create/show/hide routines (private)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
135 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
136 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
137
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
138 static void toolwindow_destroy_cb(GtkWidget *widget, gpointer data)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
139 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
140 toolwindow_float();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
141 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
142
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
143 static void toolwindow_create()
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
144 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
145 GtkWidget *vbox;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
146 GtkAllocation req_size;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
147
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
148 toolwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
149 gtk_signal_connect (GTK_OBJECT (toolwindow), "delete_event",(GtkSignalFunc) toolwindow_destroy_cb, NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
150 gtk_window_set_policy(GTK_WINDOW(toolwindow), TRUE, TRUE, FALSE);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
151 gtk_window_set_title (GTK_WINDOW (toolwindow), _("GQview Tools"));
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
152 gtk_window_set_wmclass(GTK_WINDOW (toolwindow), "tools", "GQview");
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
153 gtk_container_border_width (GTK_CONTAINER (toolwindow), 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
154 gtk_window_add_accel_group(GTK_WINDOW(toolwindow),mainwindow_accel_grp);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
155
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
156 gtk_signal_connect(GTK_OBJECT(toolwindow), "key_press_event", GTK_SIGNAL_FUNC(key_press_cb), NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
157
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
158 if (save_window_positions)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
159 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
160 gtk_window_set_default_size (GTK_WINDOW(toolwindow), float_window_w, float_window_h);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
161 gtk_widget_set_uposition(toolwindow, float_window_x, float_window_y);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
162 req_size.x = req_size.y = 0;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
163 req_size.width = float_window_w;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
164 req_size.height = float_window_h;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
165 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
166 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
167 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
168 gtk_window_set_default_size (GTK_WINDOW(toolwindow), TOOLWINDOW_DEF_WIDTH, TOOLWINDOW_DEF_HEIGHT);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
169 req_size.x = req_size.y = 0;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
170 req_size.width = TOOLWINDOW_DEF_WIDTH;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
171 req_size.height = TOOLWINDOW_DEF_HEIGHT;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
172 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
173 gtk_widget_size_allocate(toolwindow, &req_size);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
174
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
175 vbox = gtk_vbox_new(FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
176 gtk_container_add(GTK_CONTAINER(toolwindow), vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
177
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
178 gtk_widget_realize(toolwindow);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
179 gtk_widget_realize(vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
180
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
181 if (tool_vbox->parent)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
182 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
183 gtk_widget_ref(tool_vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
184 gtk_container_remove(GTK_CONTAINER(tool_vbox->parent), tool_vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
185 gtk_box_pack_start(GTK_BOX(vbox), tool_vbox, TRUE, TRUE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
186 gtk_widget_unref(tool_vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
187 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
188 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
189 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
190 gtk_box_pack_start(GTK_BOX(vbox), tool_vbox, TRUE, TRUE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
191 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
192
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
193 info_area_create(vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
194
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
195 gtk_widget_show_all(vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
196 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
197
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
198 static void toolwindow_destroy()
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
199 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
200 if (toolwindow && GTK_WIDGET_VISIBLE(toolwindow))
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
201 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
202 gdk_window_get_position (toolwindow->window, &float_window_x, &float_window_y);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
203 gdk_window_get_size(toolwindow->window, &float_window_w, &float_window_h);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
204 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
205
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
206 info_area_create(NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
207
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
208 gtk_widget_ref(tool_vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
209 gtk_container_remove(GTK_CONTAINER(tool_vbox->parent), tool_vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
210 gtk_box_pack_start(GTK_BOX(mainwindow_hbox), tool_vbox, FALSE, FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
211 gtk_widget_unref(tool_vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
212
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
213 gtk_box_pack_start(GTK_BOX(mainwindow_vbox), info_box, FALSE, FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
214 gtk_widget_destroy(toolwindow);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
215 toolwindow = NULL;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
216 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
217
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
218 static void toolwindow_show()
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
219 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
220 gtk_widget_show(toolwindow);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
221 if (save_window_positions)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
222 gdk_window_move(toolwindow->window, float_window_x, float_window_y);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
223
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
224 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
225
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
226 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
227 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
228 * tool window hide/float routines (public)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
229 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
230 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
231
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
232 void toolwindow_float()
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
233 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
234 if (toolwindow)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
235 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
236 if (GTK_WIDGET_VISIBLE(toolwindow))
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
237 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
238 toolwindow_destroy();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
239 tools_float = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
240 tools_hidden = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
241 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
242 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
243 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
244 toolwindow_show();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
245 tools_float = TRUE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
246 tools_hidden = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
247 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
248 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
249 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
250 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
251 toolwindow_create();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
252 toolwindow_show();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
253 tools_float = TRUE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
254 tools_hidden = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
255 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
256 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
257
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
258 void toolwindow_hide()
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
259 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
260 if (toolwindow)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
261 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
262 if (GTK_WIDGET_VISIBLE(toolwindow))
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
263 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
264 gtk_widget_hide(toolwindow);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
265 gdk_window_get_position (toolwindow->window, &float_window_x, &float_window_y);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
266 gdk_window_get_size(toolwindow->window, &float_window_w, &float_window_h);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
267 tools_hidden = TRUE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
268 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
269 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
270 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
271 if (tools_float)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
272 toolwindow_show();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
273 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
274 toolwindow_destroy();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
275 tools_hidden = FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
276 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
277 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
278 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
279 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
280 toolwindow_create();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
281 tools_hidden = TRUE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
282 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
283 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
284
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
285 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
286 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
287 * image viewport focus display (private)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
288 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
289 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
290
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
291 static void image_focus_paint(GtkWidget *widget)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
292 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
293 gint width, height;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
294 gdk_window_get_size (widget->window, &width, &height);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
295 gdk_draw_rectangle (widget->window,
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
296 widget->style->black_gc,
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
297 FALSE,
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
298 0, 0, width - 1, height - 1);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
299 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
300
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
301 static gint image_focus_expose (GtkWidget *widget, GdkEventExpose *event, gpointer data)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
302 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
303 image_focus_paint (widget);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
304 return TRUE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
305 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
306
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
307 static gint image_focus_in_cb(GtkWidget *widget, GdkEventFocus *event, gpointer data)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
308 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
309 gtk_signal_connect_after (GTK_OBJECT (widget), "draw",
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
310 GTK_SIGNAL_FUNC (image_focus_expose), NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
311 gtk_signal_connect (GTK_OBJECT (widget), "expose_event",
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
312 GTK_SIGNAL_FUNC (image_focus_paint), NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
313 GTK_WIDGET_SET_FLAGS(widget, GTK_HAS_FOCUS);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
314
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
315 gtk_widget_queue_draw (widget);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
316 return FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
317 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
318
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
319 static gint image_focus_out_cb(GtkWidget *widget, GdkEventFocus *event, gpointer data)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
320 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
321 gtk_signal_disconnect_by_func (GTK_OBJECT (widget),
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
322 GTK_SIGNAL_FUNC (image_focus_paint), NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
323 gtk_signal_disconnect_by_func (GTK_OBJECT (widget),
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
324 GTK_SIGNAL_FUNC (image_focus_expose), NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
325 GTK_WIDGET_UNSET_FLAGS(widget, GTK_HAS_FOCUS);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
326 gtk_widget_queue_clear (widget);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
327 gtk_viewport_set_shadow_type (GTK_VIEWPORT(widget), GTK_SHADOW_IN);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
328 return FALSE;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
329 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
330
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
331 /*
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
332 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
333 * main window setup
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
334 *-----------------------------------------------------------------------------
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
335 */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
336
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
337 static void create_tools(GtkAccelGroup *accel_grp, GtkTooltips *tooltips)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
338 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
339 GtkWidget *menu_bar;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
340 GtkWidget *button_bar;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
341 GtkWidget *vpaned;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
342 GtkWidget *scrolled;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
343 GtkWidget *tabcomp;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
344
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
345 tool_vbox = gtk_vbox_new(FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
346
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
347 menu_bar = create_menu_bar(accel_grp);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
348 gtk_box_pack_start (GTK_BOX(tool_vbox), menu_bar,FALSE,FALSE,0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
349 gtk_widget_show(menu_bar);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
350
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
351 button_bar = create_button_bar(tooltips);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
352 gtk_box_pack_start (GTK_BOX(tool_vbox), button_bar,FALSE,FALSE,0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
353 gtk_widget_show(button_bar);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
354
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
355 /* path entry */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
356 tabcomp = tab_completion_new(&path_entry, mainwindow, NULL, path_entry_cb, NULL);
3
gqview
parents: 1
diff changeset
357 tab_completion_add_tab_func(path_entry, path_entry_tab_cb, NULL);
1
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
358 gtk_box_pack_start (GTK_BOX (tool_vbox), tabcomp, FALSE, FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
359 gtk_widget_show (tabcomp);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
360
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
361 /* history button */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
362 history_menu = gtk_option_menu_new ();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
363 gtk_box_pack_start (GTK_BOX (tool_vbox), history_menu, FALSE, FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
364 gtk_widget_show (history_menu);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
365
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
366 vpaned = gtk_vpaned_new ();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
367 gtk_paned_handle_size (GTK_PANED(vpaned), 10);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
368 gtk_paned_gutter_size (GTK_PANED(vpaned), 10);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
369 gtk_box_pack_start (GTK_BOX (tool_vbox), vpaned, TRUE, TRUE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
370 gtk_widget_show (vpaned);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
371
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
372 /* dir list */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
373 scrolled = gtk_scrolled_window_new(NULL, NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
374 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
375 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
376 gtk_paned_add1 (GTK_PANED(vpaned), scrolled);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
377 gtk_widget_show(scrolled);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
378
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
379 dir_clist=gtk_clist_new(1);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
380 gtk_signal_connect (GTK_OBJECT (dir_clist), "button_press_event",(GtkSignalFunc) dir_press_cb, NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
381 gtk_signal_connect (GTK_OBJECT (dir_clist), "select_row",(GtkSignalFunc) dir_select_cb, NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
382 gtk_clist_column_titles_passive (GTK_CLIST (dir_clist));
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
383 gtk_widget_set_usize(dir_clist, LIST_DEFAULT_WIDTH, LIST_DEFAULT_HEIGHT);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
384 gtk_container_add (GTK_CONTAINER (scrolled), dir_clist);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
385 gtk_widget_show(dir_clist);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
386
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
387 /* file list */
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
388 scrolled = gtk_scrolled_window_new(NULL, NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
389 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
390 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
391 gtk_paned_add2 (GTK_PANED(vpaned), scrolled);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
392 gtk_widget_show(scrolled);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
393
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
394 file_clist=gtk_clist_new(1);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
395 gtk_clist_set_selection_mode(GTK_CLIST(file_clist), GTK_SELECTION_EXTENDED);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
396 gtk_signal_connect (GTK_OBJECT (file_clist), "button_press_event",(GtkSignalFunc) file_press_cb, NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
397 gtk_signal_connect (GTK_OBJECT (file_clist), "select_row",(GtkSignalFunc) file_select_cb, NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
398 gtk_signal_connect_after (GTK_OBJECT (file_clist), "unselect_row",(GtkSignalFunc) file_unselect_cb, NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
399 gtk_clist_column_titles_passive (GTK_CLIST (file_clist));
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
400 gtk_widget_set_usize(file_clist, LIST_DEFAULT_WIDTH, LIST_DEFAULT_HEIGHT);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
401 gtk_container_add (GTK_CONTAINER (scrolled), file_clist);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
402 gtk_widget_show(file_clist);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
403
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
404 gtk_widget_show(tool_vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
405 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
406
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
407 static void mainwindow_destroy_cb(GtkWidget *widget, gpointer data)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
408 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
409 exit_gqview();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
410 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
411
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
412 void create_main_window()
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
413 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
414 GtkWidget *image_window;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
415 GtkAllocation req_size;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
416 GtkTooltips *tooltips;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
417 GdkColormap *colormap;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
418 static GdkColor tooltip_color = { 0, 0xffff, 0xf9f9, 0xcbcb }; /*255 249 203*/
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
419
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
420 mainwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
421 gtk_window_set_policy(GTK_WINDOW(mainwindow), TRUE, TRUE, FALSE);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
422
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
423 gtk_signal_connect (GTK_OBJECT (mainwindow), "delete_event",(GtkSignalFunc) mainwindow_destroy_cb, NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
424
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
425 gtk_window_set_title(GTK_WINDOW (mainwindow), "GQview");
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
426 gtk_window_set_wmclass(GTK_WINDOW (mainwindow), "gqview", "GQview");
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
427 gtk_container_border_width (GTK_CONTAINER (mainwindow), 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
428
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
429 gtk_signal_connect(GTK_OBJECT(mainwindow), "key_press_event", GTK_SIGNAL_FUNC(key_press_cb), NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
430
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
431 if (save_window_positions)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
432 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
433 req_size.x = main_window_x;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
434 req_size.y = main_window_y;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
435 req_size.width = main_window_w;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
436 req_size.height = main_window_h;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
437 gtk_window_set_default_size (GTK_WINDOW(mainwindow), main_window_w, main_window_h);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
438 gtk_widget_set_uposition(mainwindow, main_window_x, main_window_y);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
439
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
440 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
441 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
442 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
443 req_size.x = 0;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
444 req_size.y = 0;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
445 req_size.width = MAINWINDOW_DEF_WIDTH;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
446 req_size.height = MAINWINDOW_DEF_HEIGHT;
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
447 gtk_window_set_default_size (GTK_WINDOW(mainwindow), MAINWINDOW_DEF_WIDTH, MAINWINDOW_DEF_HEIGHT);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
448 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
449
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
450 gtk_widget_size_allocate(mainwindow, &req_size);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
451
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
452 gtk_widget_realize(mainwindow);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
453
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
454 mainwindow_accel_grp = gtk_accel_group_new ();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
455 gtk_window_add_accel_group(GTK_WINDOW(mainwindow),mainwindow_accel_grp);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
456
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
457 tooltips = gtk_tooltips_new();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
458 colormap = gdk_window_get_colormap (mainwindow->window);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
459 gdk_color_alloc (colormap, &tooltip_color);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
460 gtk_tooltips_set_colors(tooltips, &tooltip_color, &mainwindow->style->fg[GTK_STATE_NORMAL]);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
461
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
462 create_menu_popups();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
463 create_tools(mainwindow_accel_grp, tooltips);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
464
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
465 image_window = image_create();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
466
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
467 mainwindow_vbox = gtk_vbox_new(FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
468 gtk_container_add (GTK_CONTAINER (mainwindow), mainwindow_vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
469 gtk_widget_show(mainwindow_vbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
470
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
471 mainwindow_hbox = gtk_hbox_new(FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
472 gtk_box_pack_start(GTK_BOX(mainwindow_vbox), mainwindow_hbox, TRUE, TRUE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
473 gtk_widget_show(mainwindow_hbox);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
474
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
475 if (tools_float || tools_hidden)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
476 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
477 toolwindow_create();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
478 if (!tools_hidden)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
479 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
480 toolwindow_show();
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
481 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
482 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
483 else
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
484 {
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
485 info_area_create(NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
486 gtk_box_pack_start(GTK_BOX(mainwindow_hbox), tool_vbox, FALSE, FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
487 gtk_box_pack_start(GTK_BOX(mainwindow_vbox), info_box, FALSE, FALSE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
488 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
489
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
490 gtk_box_pack_end(GTK_BOX(mainwindow_hbox), image_window, TRUE, TRUE, 0);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
491 gtk_widget_show_all(image_window);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
492
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
493 GTK_WIDGET_SET_FLAGS(main_image->viewport, GTK_CAN_FOCUS);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
494 gtk_signal_connect(GTK_OBJECT(main_image->viewport), "focus_in_event", GTK_SIGNAL_FUNC(image_focus_in_cb), NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
495 gtk_signal_connect(GTK_OBJECT(main_image->viewport), "focus_out_event", GTK_SIGNAL_FUNC(image_focus_out_cb), NULL);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
496
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
497 gtk_widget_show(mainwindow);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
498
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
499 if (save_window_positions)
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
500 gdk_window_move(mainwindow->window, main_window_x, main_window_y);
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
501 }
b3e0e515fabf Initial revision
gqview
parents:
diff changeset
502