1 #include <string.h>
2 #include <gtk/gtk.h>
3 #include "gstamp.h"
4
5 #include "../pixmaps/file.xpm"
6 #include "../pixmaps/stamp_not_working.xpm"
7 #include "../pixmaps/stamp_working.xpm"
8 #include "../pixmaps/transfer_not_working.xpm"
9 #include "../pixmaps/transfer_working.xpm"
10
11 /*
12 this makes the whole ui.
13 It's as clean as it can get. :)
14 */
15
make_menubar(UI_Struct * ui)16 void make_menubar(UI_Struct *ui){
17
18 GtkWidget *menu_bar;
19 GtkWidget *menu;
20 GtkWidget *menu_item;
21
22 menu_bar = gtk_menu_bar_new();
23 gtk_box_pack_start(GTK_BOX(ui->Vbox), menu_bar, FALSE, FALSE, 0);
24 gtk_widget_show( menu_bar );
25
26 menu = gtk_menu_new(); /* File menu */
27 menu_item = gtk_menu_item_new_with_label("File");
28 gtk_widget_show(menu_item);
29 gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu_item), menu );
30 gtk_menu_bar_append( GTK_MENU_BAR (menu_bar), menu_item );
31
32 menu_item = gtk_menu_item_new_with_label("Open RC"); /* add the open choice to the menu */
33 gtk_signal_connect ( GTK_OBJECT(menu_item), "activate",
34 GTK_SIGNAL_FUNC(main_load_callback), ui);
35 gtk_menu_append( GTK_MENU(menu), menu_item); /* add the item to the menu */
36 gtk_widget_show( menu_item );
37
38 menu_item = gtk_menu_item_new_with_label("Save RC"); /* add the open choice to the menu */
39 gtk_signal_connect ( GTK_OBJECT(menu_item), "activate",
40 GTK_SIGNAL_FUNC(update_callback), ui);
41 gtk_menu_append( GTK_MENU(menu), menu_item); /* add the item to the menu */
42 gtk_widget_show( menu_item );
43
44 menu_item = gtk_menu_item_new_with_label("Save RC As"); /* add the open choice to the menu */
45 gtk_signal_connect ( GTK_OBJECT(menu_item), "activate",
46 GTK_SIGNAL_FUNC(main_save_callback), ui);
47 gtk_menu_append( GTK_MENU(menu), menu_item); /* add the item to the menu */
48 gtk_widget_show( menu_item );
49
50 menu_item = gtk_menu_item_new();
51 gtk_menu_append(GTK_MENU(menu), menu_item);
52 gtk_widget_show(menu_item);
53
54 menu_item = gtk_menu_item_new_with_label("Exit"); /* add the open choice to the menu */
55 gtk_signal_connect ( GTK_OBJECT(menu_item), "activate",
56 GTK_SIGNAL_FUNC(main_delete_event), NULL);
57 gtk_menu_append( GTK_MENU(menu), menu_item); /* add the item to the menu */
58 gtk_widget_show( menu_item );
59
60 /* - Image Menu - */
61 menu = gtk_menu_new(); /* Image menu */
62 menu_item = gtk_menu_item_new_with_label("Image");
63 gtk_widget_show(menu_item);
64 gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu_item), menu );
65 gtk_menu_bar_append( GTK_MENU_BAR (menu_bar), menu_item );
66
67 menu_item = gtk_menu_item_new_with_label("Preview Image"); /* add the open choice to the menu */
68 gtk_signal_connect ( GTK_OBJECT(menu_item), "activate",
69 GTK_SIGNAL_FUNC(preview_callback), ui);
70 gtk_menu_append( GTK_MENU(menu), menu_item); /* add the item to the menu */
71 gtk_widget_show( menu_item );
72
73 menu_item = gtk_menu_item_new();
74 gtk_menu_append(GTK_MENU(menu), menu_item);
75 gtk_widget_show(menu_item);
76
77 menu_item = gtk_menu_item_new_with_label("Stamp Image"); /* add the open choice to the menu */
78 gtk_signal_connect ( GTK_OBJECT(menu_item), "activate",
79 GTK_SIGNAL_FUNC(stamp_callback), ui);
80 gtk_menu_append( GTK_MENU(menu), menu_item); /* add the item to the menu */
81 gtk_widget_show( menu_item );
82
83 menu_item = gtk_menu_item_new_with_label("Stamp and Send Image"); /* add the open choice to the menu */
84 gtk_signal_connect ( GTK_OBJECT(menu_item), "activate",
85 GTK_SIGNAL_FUNC(stamp_send_callback), ui);
86 gtk_menu_append( GTK_MENU(menu), menu_item); /* add the item to the menu */
87 gtk_widget_show( menu_item );
88
89
90 /* - Help Menu - */
91 menu = gtk_menu_new(); /* Image menu */
92 menu_item = gtk_menu_item_new_with_label("Help");
93 gtk_menu_item_right_justify(GTK_MENU_ITEM(menu_item));
94 gtk_widget_show(menu_item);
95 gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu_item), menu );
96 gtk_menu_bar_append( GTK_MENU_BAR (menu_bar), menu_item );
97
98 menu_item = gtk_menu_item_new_with_label("About"); /* add the open choice to the menu */
99 gtk_signal_connect ( GTK_OBJECT(menu_item), "activate",
100 GTK_SIGNAL_FUNC(help_about_callback), ui);
101 gtk_menu_append( GTK_MENU(menu), menu_item); /* add the item to the menu */
102 gtk_widget_show( menu_item );
103 }
104
make_main_buttons(UI_Struct * ui)105 void make_main_buttons(UI_Struct *ui){
106
107 GtkWidget *label;
108 GtkWidget *button;
109 GtkWidget *hbox;
110
111 hbox = gtk_hbox_new(FALSE, 5);
112 gtk_box_pack_start(GTK_BOX(ui->Vbox), hbox, FALSE, FALSE, 0);
113 gtk_widget_show(hbox);
114
115 /* create "Preview" button */
116 button = gtk_button_new_with_label ("Update RC");
117 gtk_widget_set_usize( button, 80,0 );
118 gtk_signal_connect (GTK_OBJECT (button), "clicked",
119 GTK_SIGNAL_FUNC (update_callback), ui);
120 gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 5);
121 gtk_widget_show (button);
122
123 /* create "Preview" button */
124 button = gtk_button_new_with_label ("Preview");
125 gtk_widget_set_usize( button, 80,0 );
126 gtk_signal_connect (GTK_OBJECT (button), "clicked",
127 GTK_SIGNAL_FUNC (preview_callback), ui);
128 gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 5);
129 gtk_widget_show (button);
130
131 /* create "Stamp" button */
132 button = gtk_button_new_with_label ("Stamp");
133 gtk_widget_set_usize( button, 80,0 );
134 gtk_signal_connect (GTK_OBJECT (button), "clicked",
135 GTK_SIGNAL_FUNC (stamp_callback), ui);
136 gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 5);
137 gtk_widget_show (button);
138
139 /* create "Stamp/Send" button */
140 button = gtk_button_new_with_label ("Stamp/Send");
141 gtk_widget_set_usize( button, 80,0 );
142 gtk_signal_connect (GTK_OBJECT (button), "clicked",
143 GTK_SIGNAL_FUNC (stamp_send_callback), ui);
144 gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, FALSE, 5);
145 gtk_widget_show (button);
146
147 /* create "Quit" button */
148 button = gtk_button_new_with_label ("Quit");
149 gtk_widget_set_usize( button, 80,0 );
150 gtk_signal_connect (GTK_OBJECT (button), "clicked",
151 GTK_SIGNAL_FUNC (main_delete_event), NULL);
152 gtk_box_pack_end(GTK_BOX(hbox), button, TRUE, FALSE, 5);
153 gtk_widget_show (button);
154
155 }
156
make_main_icons(UI_Struct * ui)157 void make_main_icons(UI_Struct *ui){
158
159 GtkWidget *frame;
160 GtkWidget *hbox1;
161 GtkWidget *pixmapwid;
162 GtkWidget *label;
163 GdkPixmap *pixmap;
164 GdkBitmap *mask;
165 GtkStyle *style;
166
167 /* ---------------------- begin Main icons -----------------------*/
168
169 frame = gtk_frame_new(NULL);
170 gtk_widget_show(frame);
171 gtk_box_pack_start(GTK_BOX(ui->Vbox), frame, FALSE, FALSE, 5);
172
173 hbox1 = gtk_hbox_new(FALSE, 0);
174 gtk_widget_show(hbox1);
175 gtk_container_add (GTK_CONTAINER (frame), hbox1);
176 style = gtk_widget_get_style( frame );
177
178 /* make the stamping image */
179 ui->yes_stamp = gdk_pixmap_create_from_xpm_d(ui->window->window, &mask,
180 &style->bg[GTK_STATE_NORMAL],
181 (gchar **)stamp_working_xpm);
182
183 ui->yes_stamp_mask = mask;
184 /* make the nonstamping image and display it. */
185 pixmap = gdk_pixmap_create_from_xpm_d(ui->window->window, &mask,
186 &style->bg[GTK_STATE_NORMAL],
187 (gchar **)stamp_not_working_xpm);
188 ui->no_stamp_mask = mask;
189 ui->no_stamp = pixmap;
190
191 pixmapwid = gtk_pixmap_new( pixmap, mask );
192 gtk_widget_show( pixmapwid );
193
194 ui->stamp_pix = pixmapwid;
195
196 gtk_box_pack_end(GTK_BOX(hbox1), pixmapwid, FALSE, FALSE, 2);
197
198 /* make the transfer image */
199 ui->yes_transfer = gdk_pixmap_create_from_xpm_d(ui->window->window, &mask,
200 &style->bg[GTK_STATE_NORMAL],
201 (gchar **)transfer_working_xpm);
202
203 ui->yes_transfer_mask = mask;
204 /* make the nontransfer image and display it. */
205 pixmap = gdk_pixmap_create_from_xpm_d(ui->window->window, &mask,
206 &style->bg[GTK_STATE_NORMAL],
207 (gchar **)transfer_not_working_xpm);
208 ui->no_transfer_mask = mask;
209 ui->no_transfer = pixmap;
210
211 pixmapwid = gtk_pixmap_new( pixmap, mask );
212 ui->transfer_pix = pixmapwid;
213
214 gtk_widget_show( pixmapwid );
215 gtk_box_pack_end(GTK_BOX(hbox1), pixmapwid, FALSE, FALSE, 2);
216
217 label = gtk_label_new("GTK Stamp! - ");
218 gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 2);
219 gtk_widget_show(label);
220
221 ui->Status = gtk_label_new("Idle");
222 gtk_box_pack_start(GTK_BOX(hbox1), ui->Status, FALSE, FALSE, 2);
223 gtk_widget_show(ui->Status);
224
225 /* ---------------------- end Main icons -----------------------*/
226
227 }
228
make_file_page(UI_Struct * ui)229 void make_file_page(UI_Struct *ui){
230
231 GtkWidget *label;
232 GtkWidget *vbox;
233 GtkWidget *button;
234 GtkWidget *hbox1;
235 GtkWidget *hbox2;
236 GtkWidget *hbox3;
237 GtkWidget *hbox4;
238 GtkWidget *hbox5;
239 GtkWidget *pixmapwid;
240 GdkPixmap *pixmap;
241 GdkBitmap *mask;
242 GtkStyle *style;
243 GtkWidget *adjustment;
244
245
246 label = gtk_label_new ("Files");
247 vbox = gtk_vbox_new(FALSE, 0);
248 gtk_notebook_append_page( GTK_NOTEBOOK(ui->notebook),vbox,label );
249 gtk_widget_show(vbox);
250
251 hbox1 = gtk_hbox_new(FALSE, 10);
252 gtk_box_pack_start(GTK_BOX(vbox), hbox1, TRUE, TRUE, 5);
253 gtk_widget_show(hbox1);
254
255 hbox2 = gtk_hbox_new(FALSE, 10);
256 gtk_box_pack_start(GTK_BOX(vbox), hbox2, TRUE, TRUE, 5);
257 gtk_widget_show(hbox2);
258
259 hbox3 = gtk_hbox_new(FALSE, 10);
260 gtk_box_pack_start(GTK_BOX(vbox), hbox3, TRUE, TRUE, 5);
261 gtk_widget_show(hbox3);
262
263 hbox4 = gtk_hbox_new(FALSE, 10);
264 gtk_box_pack_start(GTK_BOX(vbox), hbox4, TRUE, TRUE, 5);
265 gtk_widget_show(hbox4);
266
267 hbox5 = gtk_hbox_new(FALSE, 10);
268 gtk_box_pack_start(GTK_BOX(vbox), hbox5, TRUE, TRUE, 5);
269 gtk_widget_show(hbox5);
270
271 ui->Infile = gtk_entry_new();
272 label = gtk_label_new ("Input JPEG");
273 gtk_widget_set_usize( label, 80,0 );
274 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
275 gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 10);
276 gtk_box_pack_start(GTK_BOX(hbox2), ui->Infile, TRUE, TRUE, 5);
277 gtk_widget_show(label);
278 gtk_widget_show(ui->Infile);
279
280 button = gtk_button_new();
281
282 gtk_widget_set_usize( button, 0, 0);
283 gtk_signal_connect (GTK_OBJECT (button), "clicked",
284 GTK_SIGNAL_FUNC (input_file_browse_callback), ui);
285 gtk_box_pack_start(GTK_BOX(hbox2), button, FALSE, FALSE, 5);
286 style = gtk_widget_get_style( button );
287
288 pixmap = gdk_pixmap_create_from_xpm_d(ui->window->window, &mask,
289 &style->bg[GTK_STATE_NORMAL],
290 (gchar **)filexpm );
291 pixmapwid = gtk_pixmap_new( pixmap, mask );
292 gtk_widget_show( pixmapwid );
293 gtk_container_add( GTK_CONTAINER(button), pixmapwid );
294 gtk_widget_show (button);
295
296
297 ui->Outfile = gtk_entry_new();
298 label = gtk_label_new ("Output JPEG");
299 gtk_widget_set_usize( label, 80,0 );
300 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
301 gtk_box_pack_start(GTK_BOX(hbox3), label, FALSE, FALSE, 10);
302 gtk_box_pack_start(GTK_BOX(hbox3), ui->Outfile, TRUE, TRUE, 5);
303 gtk_widget_show(label);
304 gtk_widget_show(ui->Outfile);
305
306 style = gtk_widget_get_style( ui->window );
307 pixmap = gdk_pixmap_create_from_xpm_d(ui->window->window, &mask,
308 &style->bg[GTK_STATE_NORMAL],
309 (gchar **)filexpm );
310
311 pixmapwid = gtk_pixmap_new( pixmap, mask );
312 gtk_widget_show( pixmapwid );
313
314 button = gtk_button_new();
315 gtk_container_add( GTK_CONTAINER(button), pixmapwid );
316
317 gtk_widget_set_usize( button, 0,0 );
318 gtk_signal_connect (GTK_OBJECT (button), "clicked",
319 GTK_SIGNAL_FUNC (output_file_browse_callback), ui);
320 gtk_box_pack_end(GTK_BOX(hbox3), button, FALSE, FALSE, 5);
321 gtk_widget_show (button);
322
323 /* now the quality settings */
324 label = gtk_label_new ("JPEG Quality") ;
325 gtk_widget_set_usize( label, 80,0 );
326 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
327 gtk_box_pack_start(GTK_BOX(hbox4), label, FALSE, FALSE, 10);
328 gtk_widget_show (label);
329
330 adjustment = (GtkWidget *) gtk_adjustment_new(0.0, 0.0, 101.0, 1.0, 1.0, 1.0);
331 ui->Quality = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
332 gtk_scale_set_digits (GTK_SCALE(ui->Quality), 0) ;
333 gtk_range_set_update_policy (GTK_RANGE (ui->Quality), GTK_UPDATE_CONTINUOUS);
334 gtk_widget_show (ui->Quality);
335 gtk_box_pack_start(GTK_BOX(hbox4), ui->Quality, TRUE, TRUE, 5);
336
337 /* preview file */
338 ui->Previewfile = gtk_entry_new();
339 label = gtk_label_new ("Preview JPEG");
340 gtk_widget_set_usize( label, 80,0 );
341 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
342 gtk_box_pack_start(GTK_BOX(hbox5), label, FALSE, FALSE, 10);
343 gtk_box_pack_start(GTK_BOX(hbox5), ui->Previewfile, TRUE, TRUE, 5);
344 gtk_widget_show(label);
345 gtk_widget_show(ui->Previewfile);
346
347 style = gtk_widget_get_style( ui->window );
348 pixmap = gdk_pixmap_create_from_xpm_d(ui->window->window, &mask,
349 &style->bg[GTK_STATE_NORMAL],
350 (gchar **)filexpm );
351
352 pixmapwid = gtk_pixmap_new( pixmap, mask );
353 gtk_widget_show( pixmapwid );
354
355 button = gtk_button_new();
356 gtk_container_add( GTK_CONTAINER(button), pixmapwid );
357
358 gtk_widget_set_usize( button, 0,0 );
359 gtk_signal_connect (GTK_OBJECT (button), "clicked",
360 GTK_SIGNAL_FUNC (preview_file_browse_callback), ui);
361 gtk_box_pack_end(GTK_BOX(hbox5), button, FALSE, FALSE, 5);
362 gtk_widget_show (button);
363
364
365 /* ---------------------- End Files Frame -----------------------*/
366 }
367
make_strings_page(UI_Struct * ui)368 void make_strings_page(UI_Struct *ui){
369
370 GtkWidget *label;
371 GtkWidget *vbox;
372 GtkWidget *button;
373 GtkWidget *hbox1;
374 GtkWidget *hbox2;
375 GtkWidget *hbox3;
376 GtkWidget *hbox4;
377 GtkWidget *hbox5;
378 GtkWidget *pixmapwid;
379 GdkPixmap *pixmap;
380 GdkBitmap *mask;
381 GtkStyle *style;
382
383 label = gtk_label_new ("Strings");
384 vbox = gtk_vbox_new(TRUE, 0);
385 gtk_notebook_append_page( GTK_NOTEBOOK(ui->notebook),vbox,label );
386 gtk_widget_show(vbox);
387
388 hbox1 = gtk_hbox_new(FALSE, 10);
389 gtk_box_pack_start(GTK_BOX(vbox), hbox1, TRUE, TRUE, 5);
390 gtk_widget_show(hbox1);
391
392 hbox2 = gtk_hbox_new(FALSE, 10);
393 gtk_box_pack_start(GTK_BOX(vbox), hbox2, TRUE, TRUE, 5);
394 gtk_widget_show(hbox2);
395
396 hbox3 = gtk_hbox_new(FALSE, 10);
397 gtk_box_pack_start(GTK_BOX(vbox), hbox3, TRUE, TRUE, 5);
398 gtk_widget_show(hbox3);
399
400 hbox4 = gtk_hbox_new(FALSE, 10);
401 gtk_box_pack_start(GTK_BOX(vbox), hbox4, TRUE, TRUE, 5);
402 gtk_widget_show(hbox4);
403
404 hbox5 = gtk_hbox_new(FALSE, 10);
405 gtk_box_pack_start(GTK_BOX(vbox), hbox5, TRUE, TRUE, 5);
406 gtk_widget_show(hbox5);
407
408 ui->UpperString = gtk_entry_new();
409 label = gtk_label_new ("Upper String");
410 gtk_widget_set_usize( label, 80,0 );
411 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
412 gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 10);
413 gtk_box_pack_start(GTK_BOX(hbox1), ui->UpperString, TRUE, TRUE, 5);
414 gtk_widget_show(label);
415 gtk_widget_show(ui->UpperString);
416
417 ui->UStringExec = gtk_check_button_new_with_label ("Execute");
418 gtk_box_pack_end(GTK_BOX(hbox1), ui->UStringExec, FALSE, FALSE, 0);
419 gtk_widget_show(ui->UStringExec);
420
421 /* begin upper font */
422 ui->UpperFont = gtk_entry_new();
423 label = gtk_label_new ("Upper Font");
424 gtk_widget_set_usize( label, 80,0 );
425 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
426 gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 10);
427 gtk_box_pack_start(GTK_BOX(hbox2), ui->UpperFont, TRUE, TRUE, 5);
428 gtk_widget_show(label);
429 gtk_widget_show(ui->UpperFont);
430
431 style = gtk_widget_get_style( ui->window );
432 pixmap = gdk_pixmap_create_from_xpm_d(ui->window->window, &mask,
433 &style->bg[GTK_STATE_NORMAL],
434 (gchar **)filexpm );
435
436 pixmapwid = gtk_pixmap_new( pixmap, mask );
437 gtk_widget_show( pixmapwid );
438
439 button = gtk_button_new();
440 gtk_container_add( GTK_CONTAINER(button), pixmapwid );
441
442 gtk_widget_set_usize( button, 0,0 );
443 gtk_signal_connect (GTK_OBJECT (button), "clicked",
444 GTK_SIGNAL_FUNC (upper_font_browse_callback), ui);
445 gtk_box_pack_end(GTK_BOX(hbox2), button, FALSE, FALSE, 5);
446 gtk_widget_show (button);
447 /* end upper font */
448
449 ui->LowerString = gtk_entry_new();
450 label = gtk_label_new ("Lower String");
451 gtk_widget_set_usize( label, 80,0 );
452 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
453 gtk_box_pack_start(GTK_BOX(hbox3), label, FALSE, FALSE, 10);
454 gtk_box_pack_start(GTK_BOX(hbox3), ui->LowerString, TRUE, TRUE, 5);
455 gtk_widget_show(label);
456 gtk_widget_show(ui->LowerString);
457
458
459 ui->LStringExec = gtk_check_button_new_with_label ("Execute");
460 gtk_box_pack_end(GTK_BOX(hbox3), ui->LStringExec, FALSE, FALSE, 0);
461 gtk_widget_show(ui->LStringExec);
462
463 /* begin lower font */
464 ui->LowerFont = gtk_entry_new();
465 label = gtk_label_new ("Lower Font");
466 gtk_widget_set_usize( label, 80,0 );
467 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
468 gtk_box_pack_start(GTK_BOX(hbox4), label, FALSE, FALSE, 10);
469 gtk_box_pack_start(GTK_BOX(hbox4), ui->LowerFont, TRUE, TRUE, 5);
470 gtk_widget_show(label);
471 gtk_widget_show(ui->LowerFont);
472
473 style = gtk_widget_get_style( ui->window );
474 pixmap = gdk_pixmap_create_from_xpm_d(ui->window->window, &mask,
475 &style->bg[GTK_STATE_NORMAL],
476 (gchar **)filexpm );
477
478 pixmapwid = gtk_pixmap_new( pixmap, mask );
479 gtk_widget_show( pixmapwid );
480
481 button = gtk_button_new();
482 gtk_container_add( GTK_CONTAINER(button), pixmapwid );
483
484 gtk_widget_set_usize( button, 0,0 );
485 gtk_signal_connect (GTK_OBJECT (button), "clicked",
486 GTK_SIGNAL_FUNC (lower_font_browse_callback), ui);
487 gtk_box_pack_end(GTK_BOX(hbox4), button, FALSE, FALSE, 5);
488 gtk_widget_show (button);
489 /* end lower font */
490
491 ui->Use3D = gtk_check_button_new_with_label ("Use 3D");
492 gtk_box_pack_end(GTK_BOX(hbox5), GTK_WIDGET(ui->Use3D), FALSE, FALSE, 5);
493 gtk_widget_show(ui->Use3D);
494
495 ui->Rotate = gtk_check_button_new_with_label ("Sideways");
496 gtk_box_pack_end(GTK_BOX(hbox5), ui->Rotate, FALSE, FALSE, 5);
497 gtk_widget_show(ui->Rotate);
498
499 /* ---------------------- End Strings Frame -----------------------*/
500
501 }
502
make_color_page(UI_Struct * ui)503 void make_color_page(UI_Struct *ui) {
504
505 GtkWidget *label;
506 GtkWidget *vbox;
507 GtkWidget *button;
508 GtkWidget *hbox1;
509 GtkWidget *hbox2;
510 GtkWidget *hbox3;
511 GtkWidget *hbox4;
512 GtkWidget *adjustment;
513
514 label = gtk_label_new ("Color");
515
516 vbox = gtk_vbox_new(FALSE, 5);
517 gtk_notebook_append_page( GTK_NOTEBOOK(ui->notebook),vbox,label );
518 gtk_widget_show(vbox);
519
520 hbox1 = gtk_hbox_new(FALSE, 0);
521 gtk_box_pack_start(GTK_BOX(vbox), hbox1, TRUE, FALSE, 0);
522 gtk_widget_show(hbox1);
523
524 hbox2 = gtk_hbox_new(FALSE, 0);
525 gtk_box_pack_start(GTK_BOX(vbox), hbox2, TRUE, FALSE, 0);
526 gtk_widget_show(hbox2);
527
528 hbox3 = gtk_hbox_new(FALSE, 0);
529 gtk_box_pack_start(GTK_BOX(vbox), hbox3, TRUE, FALSE, 0);
530 gtk_widget_show(hbox3);
531
532 hbox4 = gtk_hbox_new(FALSE, 0);
533 gtk_box_pack_start(GTK_BOX(vbox), hbox4, TRUE, FALSE, 0);
534 gtk_widget_show(hbox4);
535
536 /* begin color button 1 */
537 ui->ColorButton1 = gtk_button_new_with_label ("");
538 gtk_widget_set_usize( ui->ColorButton1, 30,0 );
539 label = gtk_label_new ("Text Color");
540 gtk_widget_set_usize( label, 80,0 );
541 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
542 gtk_signal_connect (GTK_OBJECT (ui->ColorButton1), "clicked",
543 GTK_SIGNAL_FUNC (color_callback_1), ui);
544 gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 10);
545 gtk_box_pack_start(GTK_BOX(hbox1), ui->ColorButton1, TRUE, FALSE, 5);
546 gtk_widget_show (label);
547 gtk_widget_show (ui->ColorButton1);
548
549 /* end color button 1 */
550
551 /* begin color button 2 */
552 ui->ColorButton2 = gtk_button_new_with_label ("");
553 gtk_widget_set_usize( ui->ColorButton2, 30,0 );
554 label = gtk_label_new ("Shade Color");
555 gtk_widget_set_usize( label, 80,0 );
556 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
557 gtk_signal_connect (GTK_OBJECT (ui->ColorButton2), "clicked",
558 GTK_SIGNAL_FUNC (color_callback_2), ui);
559 gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 10);
560 gtk_box_pack_start(GTK_BOX(hbox2), ui->ColorButton2, TRUE, FALSE, 5);
561 gtk_widget_show (label);
562 gtk_widget_show (ui->ColorButton2);
563
564 /* now the shaderate */
565 label = gtk_label_new ("Shade Rate");
566 gtk_widget_set_usize( label, 80,0 );
567 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
568 gtk_box_pack_start(GTK_BOX(hbox3), label, FALSE, FALSE, 10);
569 gtk_widget_show (label);
570
571 adjustment = (GtkWidget *) gtk_adjustment_new(0.0, 0.0, 256.0, 1.0, 1.0, 1.0);
572
573 ui->ShadeRate = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
574 gtk_scale_set_digits (GTK_SCALE(ui->ShadeRate), 0) ;
575 gtk_range_set_update_policy (GTK_RANGE (ui->ShadeRate), GTK_UPDATE_CONTINUOUS);
576 gtk_widget_show (ui->ShadeRate);
577
578 gtk_box_pack_start(GTK_BOX(hbox3), ui->ShadeRate, TRUE, TRUE, 5);
579
580 ui->UseColors = gtk_check_button_new_with_label ("Color Shading");
581 gtk_box_pack_end(GTK_BOX(hbox4), GTK_WIDGET(ui->UseColors), FALSE, FALSE, 5);
582 gtk_widget_show(ui->UseColors);
583
584
585 /* ---------------------- End color Frame -----------------------*/
586 }
587
588
make_ftp_page(UI_Struct * ui)589 void make_ftp_page(UI_Struct *ui){
590
591 GtkWidget *label;
592 GtkWidget *vbox;
593 GtkWidget *button;
594 GtkWidget *hbox1;
595 GtkWidget *hbox2;
596 GtkWidget *hbox3;
597 GtkWidget *hbox4;
598 GtkWidget *hbox5;
599
600 label = gtk_label_new ("FTP");
601
602 vbox = gtk_vbox_new(TRUE, 0);
603 gtk_notebook_append_page( GTK_NOTEBOOK(ui->notebook),vbox,label );
604 gtk_widget_show(vbox);
605
606 hbox1 = gtk_hbox_new(FALSE, 5);
607 gtk_box_pack_start(GTK_BOX(vbox), hbox1, TRUE, TRUE, 5);
608 gtk_widget_show(hbox1);
609
610 hbox2 = gtk_hbox_new(FALSE, 5);
611 gtk_box_pack_start(GTK_BOX(vbox), hbox2, TRUE, TRUE, 5);
612 gtk_widget_show(hbox2);
613
614 hbox3 = gtk_hbox_new(FALSE, 5);
615 gtk_box_pack_start(GTK_BOX(vbox), hbox3, TRUE, TRUE, 5);
616 gtk_widget_show(hbox3);
617
618 hbox4 = gtk_hbox_new(FALSE, 5);
619 gtk_box_pack_start(GTK_BOX(vbox), hbox4, TRUE, TRUE, 5);
620 gtk_widget_show(hbox4);
621
622 hbox5 = gtk_hbox_new(FALSE, 5);
623 gtk_box_pack_start(GTK_BOX(vbox), hbox5, TRUE, TRUE, 5);
624 gtk_widget_show(hbox5);
625
626
627 ui->Host = gtk_entry_new();
628 label = gtk_label_new ("Host");
629 gtk_widget_set_usize( label, 80,0 );
630 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
631 gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 10);
632 gtk_box_pack_start(GTK_BOX(hbox1), ui->Host, TRUE, TRUE, 5);
633 gtk_widget_show(label);
634 gtk_widget_show(ui->Host);
635
636 ui->Login = gtk_entry_new();
637 gtk_widget_set_usize( ui->Login, 80,0 );
638 label = gtk_label_new ("Login");
639 gtk_widget_set_usize( label, 80,0 );
640 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
641 gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 10);
642 gtk_box_pack_start(GTK_BOX(hbox2), ui->Login, TRUE, TRUE, 5);
643 gtk_widget_show(label);
644 gtk_widget_show(ui->Login);
645
646 ui->Passwd = gtk_entry_new();
647 gtk_entry_set_visibility(GTK_ENTRY(ui->Passwd),FALSE);
648 gtk_widget_set_usize( ui->Passwd, 80,0 );
649 label = gtk_label_new ("Password");
650 gtk_widget_set_usize( label, 0,0 );
651 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
652 gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 10);
653 gtk_box_pack_start(GTK_BOX(hbox2), ui->Passwd, TRUE, TRUE, 5);
654 gtk_widget_show(label);
655 gtk_widget_show(ui->Passwd);
656
657 ui->Path = gtk_entry_new();
658 label = gtk_label_new ("Path");
659 gtk_widget_set_usize( label, 80,0 );
660 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
661 gtk_box_pack_start(GTK_BOX(hbox3), label, FALSE, FALSE, 10);
662 gtk_box_pack_start(GTK_BOX(hbox3), ui->Path, TRUE, TRUE, 5);
663 gtk_widget_show(label);
664 gtk_widget_show(ui->Path);
665
666 ui->Upload = gtk_entry_new();
667 label = gtk_label_new ("Upload File Name");
668 gtk_widget_set_usize( label, 80,0 );
669 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
670 gtk_box_pack_start(GTK_BOX(hbox4), label, FALSE, FALSE, 10);
671 gtk_box_pack_start(GTK_BOX(hbox4), ui->Upload, TRUE, TRUE, 5);
672 gtk_widget_show(label);
673 gtk_widget_show(ui->Upload);
674
675 label = gtk_label_new ("Remember to call stamp with the -f option to use these settings.");
676 gtk_widget_set_usize( label, 0, 0);
677 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
678 gtk_box_pack_start(GTK_BOX(hbox5), label, FALSE, FALSE, 10);
679 gtk_widget_show(label);
680
681 }
682
make_about_page(UI_Struct * ui)683 void make_about_page(UI_Struct *ui){
684 GtkWidget *label;
685 GtkWidget *hbox;
686 char tmpstring[1024];
687
688 label = gtk_label_new ("About");
689 hbox = gtk_hbox_new(TRUE, 1);
690 gtk_notebook_append_page( GTK_NOTEBOOK(ui->notebook),hbox,label );
691 sprintf(tmpstring, "GTK Stamp - Version %s\n",VERSION);
692 strcat(tmpstring, "Copyright (C) 1999 Patrick Keane, Joshua Kirby, Eric Werner\nThis program comes with NO WARRANTY. You may redistribute\ncopies of this program under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.");
693 label = gtk_label_new (tmpstring);
694 GTK_LABEL(label)->jtype = GTK_JUSTIFY_LEFT;
695 gtk_widget_show(label);
696 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 10);
697 gtk_widget_show(hbox);
698
699 }
700
make_tooltips(UI_Struct * ui)701 void make_tooltips (UI_Struct *ui){
702 ui->tooltips = (GtkWidget *)gtk_tooltips_new();
703
704 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Infile,
705 "This is the original JPEG image on which stamp will be executed.", NULL) ;
706
707 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Outfile,
708 "This is the name of the file where stamp will place the freshly-stamped JPEG image.", NULL) ;
709
710 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Quality,
711 "This is the quality setting for the resulting JPEG.", NULL) ;
712
713 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Previewfile,
714 "This is the name of the file that will be used for the Preview.", NULL) ;
715
716 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->UpperString,
717 "The string to place along the top of the JPEG image.", NULL) ;
718
719 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->UStringExec,
720 "If this button is checked, the string will be executed as a command and the ouput of the command will be placed onto the image.",
721 NULL);
722
723 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->UpperFont,
724 "This is the font which will be used on the upper string.", NULL) ;
725
726 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->LowerString,
727 "The string to place along the bottom of the JPEG image.", NULL) ;
728
729 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->LStringExec,
730 "If this button is checked, the string will be executed as a command and the ouput of the command will be placed onto the image.",
731 NULL);
732
733 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->LowerFont,
734 "This is the font which will be used on the lower string.", NULL) ;
735
736 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Use3D,
737 "When checked, text in the upper and lower strings will be given a 3 dimensional look.", NULL) ;
738
739 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Rotate,
740 "When checked, the upper string will be placed vertically along the right hand side of the image, and the lower string will be placed vertically along the left hand side of the image. In other words, sideways.", NULL) ;
741
742 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->ColorButton1,
743 "Choose a text color.", NULL) ;
744
745 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->ColorButton2,
746 "Choose a shade color.", NULL) ;
747
748 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->ShadeRate,
749 "This specifies how many shades darker each successive line in the shade area becomes. A value of 0 will eliminate the shading entirely. Increasingly higher values will cause the shade area to become darker more quickly.", NULL) ;
750
751 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->UseColors,
752 "If this is specified, then the shade color will be used when shading the image. Otherwise, the image will be shaded transparently.", NULL) ;
753
754 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Host,
755 "This is the host where the resulting JPEG file will be sent.", NULL) ;
756
757 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Login,
758 "This is the login name that will be used when connecting to the FTP host.", NULL) ;
759
760 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Passwd,
761 "This is the password that will be used when connecting to the FTP host. For security, your password will not be shown.", NULL) ;
762
763 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Path,
764 "This is the path where the resulting file will be placed on the host.", NULL) ;
765
766 gtk_tooltips_set_tip( GTK_TOOLTIPS(ui->tooltips), ui->Upload,
767 "This is the name of the file as it will be uploaded.", NULL) ;
768
769
770 }
771
make_ui(struct ArgStruct * arg)772 UI_Struct *make_ui (struct ArgStruct *arg) {
773
774 char *titlestring ;
775 UI_Struct *ui;
776 GtkWidget *window; /* Main Application Window */
777 GtkWidget *label;
778 GtkWidget *button;
779 GtkWidget *adjustment;
780 GtkWidget *scroll;
781 GtkWidget *tmp;
782 GtkWidget *pixmapwid;
783 GdkPixmap *pixmap;
784 GdkBitmap *mask;
785 GtkStyle *style;
786
787
788
789
790 /* Make our global ui structure, and zero it out just in case */
791 ui = (UI_Struct *)g_malloc (sizeof(UI_Struct));
792 bzero(ui, sizeof(UI_Struct));
793
794
795 /* Misc Window setup. */
796
797 /* make the main window */
798 ui->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
799
800 /* make the title */
801 titlestring = g_malloc(strlen("GTK Stamp! - ") +
802 strlen(arg->RCFile)+ strlen(VERSION) + 5) ;
803 ui->Titlebase = g_malloc(strlen("GTK Stamp! - ") + strlen(VERSION) + 5) ;
804 strcpy(titlestring, "GTK Stamp! ") ;
805 strcat(titlestring, VERSION) ;
806 strcat(titlestring, " - ") ;
807 strcpy(ui->Titlebase, titlestring);
808 strcat(titlestring, arg->RCFile) ;
809 gtk_window_set_title(GTK_WINDOW (ui->window), titlestring) ;
810 g_free(titlestring);
811
812 /* main window delete signal */
813 gtk_signal_connect (GTK_OBJECT (ui->window), "delete_event",
814 GTK_SIGNAL_FUNC (main_delete_event), NULL);
815 gtk_container_border_width (GTK_CONTAINER (ui->window), 5);
816 gtk_window_position (GTK_WINDOW(ui->window), GTK_WIN_POS_CENTER);
817 gtk_widget_realize(ui->window);
818
819 /* --- Begin The main vbox --- */
820 ui->Vbox = gtk_vbox_new(FALSE, 0);
821 gtk_container_add (GTK_CONTAINER (ui->window), ui->Vbox);
822 gtk_widget_show (ui->Vbox);
823 /* --- Begin The main vbox --- */
824
825
826 make_menubar(ui);
827
828 /* --- Initialize the Notebook --- */
829 ui->notebook = gtk_notebook_new();
830 gtk_box_pack_start(GTK_BOX(ui->Vbox), ui->notebook, TRUE, TRUE, 5);
831 /* --- End Initialize the Notebook --- */
832
833 make_main_buttons(ui);
834 make_main_icons(ui);
835 make_file_page(ui);
836 make_strings_page(ui);
837 make_color_page(ui);
838 make_ftp_page(ui);
839 /* don't need this anymore since we have the Help menu.
840 make_about_page(ui);
841 */
842 make_tooltips(ui);
843 gtk_widget_show (ui->notebook);
844
845 /* now make our helper dialogs */
846 make_file_dialog(ui);
847 make_yes_no_dialog(ui);
848 make_colorsel_dialog(ui);
849 make_preview_dialog(ui);
850 make_message_dialog(ui);
851
852 /* copy the stamp structure into the ui */
853 args_to_ui(arg, ui);
854
855 /* we're not currently stamping */
856 ui->GSTMP_STAMPING = 0;
857
858 /* show our window */
859 gtk_widget_show (ui->window);
860
861 return ui;
862 }
863
864
865