1 /* Hey EMACS -*- linux-c -*- */
2 /* tilp - a linking program for TI graphing calculators
3 * Copyright (C) 1999-2003 Romain Lievin
4 *
5 * This program is free software you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
20 #ifdef HAVE_CONFIG_H
21 # include <config.h>
22 #endif
23
24 #include <gtk/gtk.h>
25 #include <stdlib.h>
26 #include <string.h>
27
28 #include "support.h"
29
30 #include "gstruct.h"
31 #include "tilp_core.h"
32 #include "tilp.h"
33 #include "dboxes.h"
34 #include "pbars.h"
35 #include "about.h"
36 #include "manpage.h"
37 #include "labels.h"
38 #include "clock.h"
39 #include "release.h"
40 #include "options.h"
41 #include "device.h"
42 #include "clist.h"
43 #include "ctree.h"
44 #include "dnd.h"
45 #include "filesel.h"
46 #include "action.h"
47 #include "gtk_update.h"
48 #include "screenshot.h"
49 #include "bookmark.h"
50
51 #ifdef __WIN32__
52 #define strcasecmp _stricmp
53 #endif /* __WIN32__ */
54
55 GtkBuilder *builder = NULL;
56 GtkWidget *main_wnd = NULL;
57 GtkWidget *clist_wnd = NULL;
58 GtkWidget *ctree_wnd = NULL;
59 GtkWidget *help_menu = NULL;
60
61
62 /* Main window */
63
show_right_view(int view)64 void show_right_view(int view)
65 {
66 gpointer data;
67
68 if(view)
69 {
70 data = GTK_WIDGET (gtk_builder_get_object (builder, "vbox2"));
71 gtk_widget_show_all(data);
72 }
73 else
74 {
75 data = GTK_WIDGET (gtk_builder_get_object (builder, "vbox2"));
76 gtk_widget_hide(data);
77
78 //gtk_window_resize(dbox, options.xsize, options.ysize);
79 }
80 }
81
display_tilp_dbox(void)82 GtkWidget *display_tilp_dbox(void)
83 {
84 GtkWidget *dbox;
85 GtkWidget *paned;
86 GError* error = NULL;
87
88 builder = gtk_builder_new();
89 if (!gtk_builder_add_from_file (builder, tilp_paths_build_builder("tilp.ui"), &error))
90 {
91 g_warning (_("Couldn't load builder file: %s\n"), error->message);
92 g_error_free (error);
93 return NULL; // THIS RETURNS !
94 }
95 gtk_builder_connect_signals(builder, NULL);
96
97 dbox = GTK_WIDGET (gtk_builder_get_object (builder, "tilp_dbox"));
98 if(options.full_gui)
99 gtk_window_resize(GTK_WINDOW(dbox), options.wnd_x_size1, options.wnd_y_size1);
100 else
101 gtk_window_resize(GTK_WINDOW(dbox), options.wnd_x_size2, options.wnd_y_size2);
102
103 ctree_wnd = GTK_WIDGET (gtk_builder_get_object (builder, "treeview1"));
104 clist_wnd = GTK_WIDGET (gtk_builder_get_object (builder, "treeview2"));
105
106 label_wnd.label11 = GTK_WIDGET (gtk_builder_get_object (builder, "label11"));
107 label_wnd.label12 = GTK_WIDGET (gtk_builder_get_object (builder, "label12"));
108 label_wnd.label13 = GTK_WIDGET (gtk_builder_get_object (builder, "label13"));
109 label_wnd.label14 = GTK_WIDGET (gtk_builder_get_object (builder, "label14"));
110 label_wnd.label21 = GTK_WIDGET (gtk_builder_get_object (builder, "label21"));
111
112 toolbar_wnd.toolbar = GTK_WIDGET (gtk_builder_get_object (builder, "toolbar2"));
113 toolbar_wnd.button10 = GTK_WIDGET (gtk_builder_get_object (builder, "button1"));
114 toolbar_wnd.button11 = GTK_WIDGET (gtk_builder_get_object (builder, "button2"));
115 toolbar_wnd.button12 = GTK_WIDGET (gtk_builder_get_object (builder, "button3"));
116 toolbar_wnd.button13 = GTK_WIDGET (gtk_builder_get_object (builder, "button4"));
117 toolbar_wnd.button14 = GTK_WIDGET (gtk_builder_get_object (builder, "button5"));
118 toolbar_wnd.button15 = GTK_WIDGET (gtk_builder_get_object (builder, "button6"));
119 toolbar_wnd.button20 = GTK_WIDGET (gtk_builder_get_object (builder, "button10"));
120 toolbar_wnd.button21 = GTK_WIDGET (gtk_builder_get_object (builder, "button11"));
121 toolbar_wnd.button22 = GTK_WIDGET (gtk_builder_get_object (builder, "button12"));
122
123 menubar_wnd.menubar = GTK_WIDGET (gtk_builder_get_object (builder, "menubar1"));
124 menubar_wnd.viewlocal = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem13"));
125 menubar_wnd.showall = GTK_WIDGET (gtk_builder_get_object (builder, "show_all_files1"));
126 menubar_wnd.restore = GTK_WIDGET (gtk_builder_get_object (builder, "imagemenuitem4"));
127 menubar_wnd.backup = GTK_WIDGET (gtk_builder_get_object (builder, "imagemenuitem3"));
128 menubar_wnd.idlist = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem10"));
129 menubar_wnd.setclock = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem9"));
130 menubar_wnd.dumprom = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem8"));
131
132 paned = GTK_WIDGET (gtk_builder_get_object (builder, "hpaned1"));
133 gtk_paned_set_position(GTK_PANED(paned), options.pane_x_size);
134
135 show_right_view(options.full_gui);
136
137 clist_init();
138 ctree_init();
139 dnd_init();
140
141 return dbox;
142 }
143
on_hpaned1_size_request(GtkPaned * paned,gpointer user_data)144 TILP_EXPORT void on_hpaned1_size_request(GtkPaned* paned, gpointer user_data)
145 {
146 options.pane_x_size = gtk_paned_get_position(paned);
147 }
148
on_tilp_dbox_destroy(GtkObject * object,gpointer user_data)149 TILP_EXPORT void on_tilp_dbox_destroy(GtkObject* object, gpointer user_data)
150 {
151 tilp_config_write();
152 gtk_main_quit();
153 }
154
on_tilp_dbox_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)155 TILP_EXPORT gboolean on_tilp_dbox_delete_event(GtkWidget* widget, GdkEvent* event, gpointer user_data)
156 {
157 if(options.full_gui)
158 gtk_window_get_size(GTK_WINDOW(widget), &options.wnd_x_size1, &options.wnd_y_size1);
159 else
160 gtk_window_get_size(GTK_WINDOW(widget), &options.wnd_x_size2, &options.wnd_y_size2);
161
162 return FALSE;
163 }
164
165 /* Help menu */
166
on_manual1_activate(GtkMenuItem * menuitem,gpointer user_data)167 TILP_EXPORT void on_manual1_activate(GtkMenuItem* menuitem, gpointer user_data)
168 {
169 gchar *path = g_strconcat(inst_paths.help_dir, _("Manual_en.html"), NULL);
170
171 if(go_to_bookmark(path) < 0)
172 msg_box1(_("Error"), _("Failed to run browser."));
173 g_free(path);
174 }
175
on_manpage1_activate(GtkMenuItem * menuitem,gpointer user_data)176 TILP_EXPORT void on_manpage1_activate(GtkMenuItem* menuitem, gpointer user_data)
177 {
178 display_manpage_dbox();
179 }
180
on_ti_s_web_site1_activate(GtkMenuItem * menuitem,gpointer user_data)181 TILP_EXPORT void on_ti_s_web_site1_activate(GtkMenuItem* menuitem, gpointer user_data)
182 {
183 go_to_bookmark("http://education.ti.com");
184 }
185
on_calculator_software1_activate(GtkMenuItem * menuitem,gpointer user_data)186 TILP_EXPORT void on_calculator_software1_activate(GtkMenuItem* menuitem, gpointer user_data)
187 {
188 go_to_bookmark("http://epsstore.ti.com");
189 }
190
on_ticalcorg1_activate(GtkMenuItem * menuitem,gpointer user_data)191 TILP_EXPORT void on_ticalcorg1_activate(GtkMenuItem* menuitem, gpointer user_data)
192 {
193 go_to_bookmark("http://www.ticalc.org");
194 }
195
on_tiplanetorg1_activate(GtkMenuItem * menuitem,gpointer user_data)196 TILP_EXPORT void on_tiplanetorg1_activate(GtkMenuItem* menuitem, gpointer user_data)
197 {
198 go_to_bookmark("http://tiplanet.org");
199 }
200
on_ti_frorg1_activate(GtkMenuItem * menuitem,gpointer user_data)201 TILP_EXPORT void on_ti_frorg1_activate(GtkMenuItem* menuitem, gpointer user_data)
202 {
203 go_to_bookmark("http://www.ti-fr.com");
204 }
205
on_the_lpg1_activate(GtkMenuItem * menuitem,gpointer user_data)206 TILP_EXPORT void on_the_lpg1_activate(GtkMenuItem* menuitem, gpointer user_data)
207 {
208 go_to_bookmark("http://lpg.ticalc.org");
209 }
210
on_tilp_s_web_site1_activate(GtkMenuItem * menuitem,gpointer user_data)211 TILP_EXPORT void on_tilp_s_web_site1_activate(GtkMenuItem* menuitem, gpointer user_data)
212 {
213 go_to_bookmark("http://tilp.info");
214 }
215
on_bug_report1_activate(GtkMenuItem * menuitem,gpointer user_data)216 TILP_EXPORT void on_bug_report1_activate(GtkMenuItem* menuitem, gpointer user_data)
217 {
218 GtkWidget *dialog;
219 const gchar *message = _("There are several ways to get in touch if you encounter a problem with TiLP or if you have questions, suggestions, bug reports, etc:\n- if you have general questions or problems, please consider the users' mailing list first (mailto:tilp-users@list.sf.net).\n- if you want to discuss about TiLP, you can use the TiLP forum (http://sourceforge.net/forum/?group_id=18378).\n- for bug reports, use the 'Bug Tracking System' (http://sourceforge.net/tracker/?group_id=18378).\n\nBefore e-mailing the TiLP team, make sure you have read the FAQ....");
220
221 dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL,
222 GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,
223 "%s", message);
224 gtk_dialog_run(GTK_DIALOG(dialog));
225 gtk_widget_destroy(dialog);
226 }
227
on_changelog1_activate(GtkMenuItem * menuitem,gpointer user_data)228 TILP_EXPORT void on_changelog1_activate(GtkMenuItem* menuitem, gpointer user_data)
229 {
230 display_release_dbox();
231 }
232
on_about1_activate(GtkMenuItem * menuitem,gpointer user_data)233 TILP_EXPORT void on_about1_activate(GtkMenuItem* menuitem, gpointer user_data)
234 {
235 display_about_dbox();
236 }
237
238 /* Toolbar buttons callbacks */
239
on_rom_dump1_activate(GtkMenuItem * menuitem,gpointer user_data)240 TILP_EXPORT void on_rom_dump1_activate(GtkMenuItem* menuitem, gpointer user_data)
241 {
242 char* src_filename;
243 const char *dst_filename;
244 const char *dst_filename2;
245 char filename[128];
246
247 if (tilp_calc_rom_dump())
248 return;
249
250 src_filename = g_strconcat(g_get_tmp_dir(), G_DIR_SEPARATOR_S, TMPFILE_ROMDUMP, NULL);
251
252 sprintf(filename, "dump%s", tifiles_model_to_string(options.calc_model));
253 dst_filename = create_fsel(local.cwdir, filename, "*.rom", TRUE);
254 if (!dst_filename)
255 {
256 g_free(src_filename);
257 return;
258 }
259
260 if (!strcmp(tifiles_fext_get(dst_filename), ""))
261 dst_filename2 = g_strconcat(dst_filename, ".", "rom", NULL);
262 else
263 dst_filename2 = g_strdup(dst_filename);
264 //g_free((void *)dst_filename);
265
266 if (dst_filename2)
267 {
268 tilp_file_move_with_check(src_filename, dst_filename2);
269 }
270 g_free(src_filename);
271 g_free((void *)dst_filename2);
272
273 tilp_dirlist_local();
274 clist_refresh();
275 labels_refresh();
276 }
277
278 // Ready
on_tilp_button1_clicked(GtkButton * button,gpointer user_data)279 TILP_EXPORT void on_tilp_button1_clicked(GtkButton* button, gpointer user_data)
280 {
281 tilp_calc_isready();
282 }
283
284 // Dirlist
on_tilp_button2_clicked(GtkButton * button,gpointer user_data)285 TILP_EXPORT void on_tilp_button2_clicked(GtkButton* button, gpointer user_data)
286 {
287 if (tilp_calc_dirlist() != 0)
288 return;
289
290 ctree_refresh();
291 labels_refresh();
292 }
293
294 // Backup
on_tilp_button3b_clicked(GtkButton * button,gpointer user_data)295 TILP_EXPORT void on_tilp_button3b_clicked(GtkButton* button, gpointer user_data)
296 {
297 char* src_filename;
298 const char *dst_filename;
299 const char *dst_filename2;
300 char *ext;
301
302 if (tilp_calc_recv_backup() != 0)
303 return;
304
305 src_filename = g_strconcat(g_get_tmp_dir(), G_DIR_SEPARATOR_S, TMPFILE_BACKUP, NULL);
306
307 ext = g_strconcat("*.", tifiles_fext_of_backup(options.calc_model), NULL);
308 dst_filename = create_fsel(local.cwdir, "backup", ext, TRUE);
309 g_free(ext);
310
311 if (!dst_filename)
312 {
313 g_free(src_filename);
314 return;
315 }
316
317 if (!strcmp(tifiles_fext_get(dst_filename), ""))
318 dst_filename2 = g_strconcat(dst_filename, ".", tifiles_fext_of_backup(options.calc_model), NULL);
319 else
320 dst_filename2 = g_strdup(dst_filename);
321 //g_free((void *)dst_filename);
322
323 if (dst_filename2)
324 {
325 tilp_file_move_with_check(src_filename, dst_filename2);
326 }
327 g_free(src_filename);
328 g_free((void *)dst_filename2);
329
330 tilp_dirlist_local();
331 clist_refresh();
332 labels_refresh();
333 }
334
on_tilp_button3_clicked(GtkButton * button,gpointer user_data)335 TILP_EXPORT void on_tilp_button3_clicked(GtkButton* button, gpointer user_data)
336 {
337 if(options.backup_as_tigroup && tifiles_is_flash(options.calc_model))
338 on_tilp_button7_clicked(button, user_data);
339 else
340 on_tilp_button3b_clicked(button, user_data);
341 }
342
343 // Restore
on_tilp_button4_clicked(GtkButton * button,gpointer user_data)344 TILP_EXPORT void on_tilp_button4_clicked(GtkButton* button, gpointer user_data)
345 {
346 const char *filename;
347 char *ext;
348 int mode = TIG_ALL | TIG_BACKUP;
349
350 ext = g_strconcat("*.", tifiles_fext_of_backup(options.calc_model), ";*.tig", NULL);
351 filename = create_fsel(local.cwdir, NULL, ext, FALSE);
352 g_free(ext);
353
354 if(filename)
355 {
356 if(tifiles_file_is_tigroup(filename))
357 {
358 int ret = backup_box(_("Restore"), _("Data to restore:"), &mode);
359 if(ret != BUTTON1)
360 return;
361 tilp_calc_send_tigroup(filename, mode | TIG_BACKUP);
362 }
363 else if(tifiles_file_is_backup(filename))
364 tilp_calc_send_backup(filename);
365 }
366 }
367
save_group(void)368 static int save_group(void)
369 {
370 char* src_filename;
371 const char *dst_filename;
372 const char *dst_filename2;
373 char *ext;
374
375 src_filename = g_strconcat(g_get_tmp_dir(), G_DIR_SEPARATOR_S, TMPFILE_GROUP,
376 ".", tifiles_fext_of_group(options.calc_model), NULL);
377
378 ext = g_strconcat("*.", tifiles_fext_of_group(options.calc_model), NULL);
379 dst_filename = create_fsel(local.cwdir, "group", ext, TRUE);
380 g_free(ext);
381
382 if (!dst_filename)
383 {
384 g_free(src_filename);
385 return -1;
386 }
387
388 if (!strcmp(tifiles_fext_get(dst_filename), ""))
389 dst_filename2 = g_strconcat(dst_filename, ".", tifiles_fext_of_group(options.calc_model), NULL);
390 else
391 dst_filename2 = g_strdup(dst_filename);
392 //g_free((void *)dst_filename);
393
394 if (dst_filename2)
395 {
396 tilp_file_move_with_check(src_filename, dst_filename2);
397 }
398 g_free(src_filename);
399 g_free((void *)dst_filename2);
400
401 tilp_dirlist_local();
402 clist_refresh();
403 labels_refresh();
404
405 return 0;
406 }
407
on_tilp_recv(void)408 void on_tilp_recv(void)
409 {
410 int ret;
411
412 if ((remote.selection1 != NULL) || (remote.selection2 != NULL))
413 {
414 if (remote.selection1 != NULL)
415 {
416 ret = tilp_calc_recv_var();
417 if (ret < 0)
418 return;
419 else if (ret > 0)
420 save_group();
421 }
422
423 if (remote.selection2 != NULL)
424 {
425 ret = tilp_calc_recv_app();
426 if (ret != 0)
427 return;
428 }
429 }
430 else if ((options.calc_model == CALC_TI82) || (options.calc_model == CALC_TI85))
431 {
432 ret = tilp_calc_recv_var();
433 if (ret < 0)
434 return;
435 else if (ret > 0)
436 save_group();
437 }
438
439 clist_refresh();
440 labels_refresh();
441 }
442
443 // Used for sending vars
444 // Note: user_data is a string:
445 // - such as "<FLASH>" for sending var into FLASH (ti83+/84+/89/92+/v200)
446 // - such as "" for sending var in the default folder
447 // - such as "foo" for sending var in the 'foo' folder
448 // - unused for sending FLASH files
on_tilp_send(const gchar * user_data)449 void on_tilp_send(const gchar *user_data)
450 {
451 gchar *target;
452 FileEntry *f;
453 int ret1 = -1;
454 int ret2 = -1;
455
456 if (local.selection0 == NULL && local.selection2 == NULL && local.selection5 == NULL)
457 return;
458
459 tilp_local_contents_load();
460
461 // send apps
462 if(local.selection3 || (local.selection5 && local.selection3))
463 {
464 f = (FileEntry *) local.selection3->data;
465
466 // send os upgrades
467 if(tifiles_file_is_flash(f->name))
468 {
469 if(tifiles_file_test(f->name, TIFILE_OS, options.calc_model))
470 {
471 if (tilp_calc_send_os(f->name) != 0)
472 return;
473 }
474 else if(tifiles_file_is_app(f->name))
475 {
476 do_app:
477 ret1 = tilp_calc_send_app();
478 if(!ret1)
479 {
480 // update dirlist (caching, avoid to request dirlist again)
481 tilp_local_update_applist();
482 ctree_refresh();
483 labels_refresh();
484 }
485 }
486 }
487 else if (tifiles_file_is_tigroup(f->name))
488 {
489 goto do_app;
490 }
491 }
492
493 // send vars
494 if(local.selection1 || (local.selection5 && local.selection1))
495 {
496 // note: dst_folder must be a copy b/c the user_data
497 // pointer is no longer valid after dirlist_remote
498 target = g_strdup(user_data);
499
500 // change target folder
501 if(strcmp(target, "") && strcmp(target, "<FLASH>"))
502 tilp_local_change_folder(target);
503
504 // and wait for action
505 if (display_action_dbox(target) == BUTTON2)
506 {
507 g_free(target);
508 tilp_local_contents_unload();
509 return;
510 }
511
512 // needed: avoid box locking/flickering !
513 GTK_REFRESH();
514
515 ret2 = tilp_calc_send_var();
516 if(!ret2)
517 {
518 // update dirlist (caching, avoid to request dirlist again)
519 tilp_local_update_varlist();
520 ctree_refresh();
521 labels_refresh();
522 }
523
524 g_free(target);
525 }
526
527 tilp_local_contents_unload();
528 }
529
530 // Receive
on_tilp_button5_clicked(GtkButton * button,gpointer user_data)531 TILP_EXPORT void on_tilp_button5_clicked(GtkButton* button, gpointer user_data)
532 {
533 on_tilp_recv();
534 }
535
536 // Send
on_tilp_button6_clicked(GtkButton * button,gpointer user_data)537 TILP_EXPORT void on_tilp_button6_clicked(GtkButton* button, gpointer user_data)
538 {
539 gchar** filenames;
540 gchar** ptr;
541 char *ext;
542
543 ext = g_strconcat("*.", "*", NULL);
544 filenames = create_fsels(local.cwdir, NULL, ext);
545 g_free(ext);
546
547 if(filenames == NULL)
548 return;
549
550 for(ptr = filenames; *ptr != NULL; ptr++)
551 tilp_local_selection_add(*ptr);
552
553 g_strfreev(filenames);
554
555 on_tilp_send("");
556 tilp_local_selection_destroy();
557 }
558
559 // Recv TIGroup
on_tilp_button7_clicked(GtkButton * button,gpointer user_data)560 TILP_EXPORT void on_tilp_button7_clicked(GtkButton* button, gpointer user_data)
561 {
562 char* src_filename;
563 const char *dst_filename;
564 const char *dst_filename2;
565 int ret;
566 int mode = TIG_ALL;
567
568 ret = backup_box(_("Backup"), _("Data to backup:"), &mode);
569 if(ret != BUTTON1)
570 return;
571
572 if (tilp_calc_recv_tigroup(mode) != 0)
573 return;
574
575 src_filename = g_strconcat(g_get_tmp_dir(), G_DIR_SEPARATOR_S, TMPFILE_TIGROUP, NULL);
576 dst_filename = create_fsel(local.cwdir, "backup", "*.tig", TRUE);
577
578 if(!dst_filename)
579 {
580 g_free(src_filename);
581 return;
582 }
583
584 if (!strcmp(tifiles_fext_get(dst_filename), ""))
585 dst_filename2 = g_strconcat(dst_filename, ".tig", NULL);
586 else
587 dst_filename2 = g_strdup(dst_filename);
588 //g_free((void *)dst_filename);
589
590 if (dst_filename2)
591 {
592 tilp_file_move_with_check(src_filename, dst_filename2);
593 }
594 g_free(src_filename);
595 g_free((void *)dst_filename2);
596
597 tilp_dirlist_local();
598 clist_refresh();
599 labels_refresh();
600 }
601
602 // Send TIGroup
on_tilp_button8_clicked(GtkButton * button,gpointer user_data)603 TILP_EXPORT void on_tilp_button8_clicked(GtkButton* button, gpointer user_data)
604 {
605 const char *filename;
606 int ret;
607 int mode = TIG_ALL;
608
609 ret = backup_box(_("Restore"), _("Data to restore:"), &mode);
610 if(ret != BUTTON1)
611 return;
612
613 filename = create_fsel(local.cwdir, NULL, "*.tig", FALSE);
614 if(filename)
615 tilp_calc_send_tigroup(filename, mode);
616
617 return;
618 }
619
620 // ---
621
622 // make new dir
on_tilp_button10_clicked(GtkButton * button,gpointer user_data)623 TILP_EXPORT void on_tilp_button10_clicked(GtkButton* button, gpointer user_data)
624 {
625 gchar *utf8 = NULL;
626 gsize br, bw;
627 gchar *dirname;
628
629 utf8 = gif->msg_entry(_("Make a new directory"), _("Name: "), _("new_directory"));
630 if (utf8 == NULL)
631 return;
632
633 dirname = g_filename_from_utf8(utf8, -1, &br, &bw, NULL);
634 g_free(utf8);
635
636 tilp_file_mkdir(dirname);
637 g_free(dirname);
638
639 clist_refresh();
640 labels_refresh();
641 }
642
643
644 // trash
on_tilp_button11_clicked(GtkButton * button,gpointer user_data)645 TILP_EXPORT void on_tilp_button11_clicked(GtkButton* button, gpointer user_data)
646 {
647 tilp_file_selection_delete();
648
649 clist_refresh();
650 labels_refresh();
651 }
652
653 // refresh
on_tilp_button12_clicked(GtkButton * button,gpointer user_data)654 TILP_EXPORT void on_tilp_button12_clicked(GtkButton* button, gpointer user_data)
655 {
656 if (!local.copy_cut)
657 tilp_file_selection_destroy();
658
659 clist_refresh();
660 labels_refresh();
661 }
662
663 // take screenshot
on_tilp_menuitem7_clicked(GtkButton * button,gpointer user_data)664 TILP_EXPORT void on_tilp_menuitem7_clicked(GtkButton* button, gpointer user_data)
665 {
666 display_screenshot_dbox();
667 }
668
669 // change folder
on_button14_clicked(GtkButton * button,gpointer user_data)670 TILP_EXPORT void on_button14_clicked(GtkButton* button, gpointer user_data)
671 {
672 gchar *folder;
673
674 folder = msg_entry(_("Path"), _("Enter new path"), local.cwdir);
675 if(folder != NULL)
676 {
677 if(g_file_test(folder, G_FILE_TEST_IS_DIR))
678 {
679 tilp_file_chdir(folder);
680 g_free(local.cwdir);
681 local.cwdir = g_get_current_dir();
682
683 clist_refresh();
684 labels_refresh();
685 }
686 g_free(folder);
687 }
688 }
689
690 // set clock
on_tilp_menuitem9_clicked(GtkButton * button,gpointer user_data)691 TILP_EXPORT void on_tilp_menuitem9_clicked(GtkButton* button, gpointer user_data)
692 {
693 display_clock_dbox();
694 }
695
696 //get id-list
on_tilp_menuitem10_clicked(GtkButton * button,gpointer user_data)697 TILP_EXPORT void on_tilp_menuitem10_clicked(GtkButton* button, gpointer user_data)
698 {
699 tilp_calc_idlist(0);
700 }
701
702 //get calc info
on_tilp_menuitem12_clicked(GtkButton * button,gpointer user_data)703 TILP_EXPORT void on_tilp_menuitem12_clicked(GtkButton* button, gpointer user_data)
704 {
705 CalcInfos infos;
706 tilp_calc_get_infos(&infos);
707 }
708
709 //update View menu
on_tilp_viewmenu_active(GtkButton * button,gpointer user_data)710 TILP_EXPORT void on_tilp_viewmenu_active(GtkButton* button, gpointer user_data)
711 {
712
713 }
714