annotate src/window.c @ 6:9317473ba613

hmm, server pipe broke.
author gqview
date Tue, 19 Sep 2000 15:05:09 +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