Factor out common code for setting the view into a new function, set_view_mode().
Showing the changes to scripts (1 of 1 file). Show all
Unified · Split
| @@ -18,7 +18,7 @@ · 17 unmodified lines | |||
| 18 | #include <unistd.h> | 18 | #include <unistd.h> |
| 19 | #include <time.h> | 19 | #include <time.h> |
| 20 | 20 | ||
| 21 | enum { | 21 | enum view_mode { |
| 22 | SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW | 22 | SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW |
| 23 | }; | 23 | }; |
| 24 | 24 | ||
| @@ -116,6 +116,39 @@ static void text_insert_msg(const char *title, const char *message) · 91 unmodified lines | |||
| 116 | NULL); | 116 | NULL); |
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | static void set_view_mode(enum view_mode mode) | ||
| 120 | { | ||
| 121 | view_mode = mode; | ||
| 122 | |||
| 123 | if (mode == SPLIT_VIEW) { // two panes | ||
| 124 | gint w; | ||
| 125 | |||
| 126 | gtk_widget_show(tree1_w); | ||
| 127 | gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, NULL); | ||
| 128 | gtk_paned_set_position(GTK_PANED(hpaned), w / 2); | ||
| 129 | } else { | ||
| 130 | gtk_widget_hide(tree1_w); | ||
| 131 | gtk_paned_set_position(GTK_PANED(hpaned), 0); | ||
| 132 | } | ||
| 133 | |||
| 134 | switch (mode) { | ||
| 135 | case SINGLE_VIEW: | ||
| 136 | current = &rootmenu; | ||
| 137 | display_tree_part(); | ||
| 138 | break; | ||
| 139 | case SPLIT_VIEW: | ||
| 140 | gtk_tree_store_clear(tree2); | ||
| 141 | display_list(); | ||
| 142 | break; | ||
| 143 | case FULL_VIEW: | ||
| 144 | gtk_tree_store_clear(tree2); | ||
| 145 | display_tree(&rootmenu); | ||
| 146 | break; | ||
| 147 | } | ||
| 148 | |||
| 149 | if (mode != SINGLE_VIEW) | ||
| 150 | gtk_widget_set_sensitive(back_btn, FALSE); | ||
| 151 | } | ||
| 119 | 152 | ||
| 120 | /* Main Windows Callbacks */ | 153 | /* Main Windows Callbacks */ |
| 121 | 154 | ||
| @@ -435,35 +468,19 @@ void on_load_clicked(GtkButton * button, gpointer user_data) · 313 unmodified lines | |||
| 435 | 468 | ||
| 436 | void on_single_clicked(GtkButton * button, gpointer user_data) | 469 | void on_single_clicked(GtkButton * button, gpointer user_data) |
| 437 | { | 470 | { |
| 438 | view_mode = SINGLE_VIEW; | 471 | set_view_mode(SINGLE_VIEW); |
| 439 | gtk_widget_hide(tree1_w); | ||
| 440 | current = &rootmenu; | ||
| 441 | display_tree_part(); | ||
| 442 | } | 472 | } |
| 443 | 473 | ||
| 444 | 474 | ||
| 445 | void on_split_clicked(GtkButton * button, gpointer user_data) | 475 | void on_split_clicked(GtkButton * button, gpointer user_data) |
| 446 | { | 476 | { |
| 447 | gint w; | 477 | set_view_mode(SPLIT_VIEW); |
| 448 | view_mode = SPLIT_VIEW; | ||
| 449 | gtk_widget_show(tree1_w); | ||
| 450 | gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, NULL); | ||
| 451 | gtk_paned_set_position(GTK_PANED(hpaned), w / 2); | ||
| 452 | gtk_tree_store_clear(tree2); | ||
| 453 | display_list(); | ||
| 454 | |||
| 455 | /* Disable back btn, like in full mode. */ | ||
| 456 | gtk_widget_set_sensitive(back_btn, FALSE); | ||
| 457 | } | 478 | } |
| 458 | 479 | ||
| 459 | 480 | ||
| 460 | void on_full_clicked(GtkButton * button, gpointer user_data) | 481 | void on_full_clicked(GtkButton * button, gpointer user_data) |
| 461 | { | 482 | { |
| 462 | view_mode = FULL_VIEW; | 483 | set_view_mode(FULL_VIEW); |
| 463 | gtk_widget_hide(tree1_w); | ||
| 464 | gtk_tree_store_clear(tree2); | ||
| 465 | display_tree(&rootmenu); | ||
| 466 | gtk_widget_set_sensitive(back_btn, FALSE); | ||
| 467 | } | 484 | } |
| 468 | 485 | ||
| 469 | 486 | ||
| @@ -1039,11 +1056,6 @@ static void _display_tree(struct menu *menu, GtkTreeIter *parent) · 569 unmodified lines | |||
| 1039 | || (view_mode == FULL_VIEW) | 1056 | || (view_mode == FULL_VIEW) |
| 1040 | || (view_mode == SPLIT_VIEW))*/ | 1057 | || (view_mode == SPLIT_VIEW))*/ |
| 1041 | 1058 | ||
| 1042 | /* Change paned position if the view is not in 'split mode' */ | ||
| 1043 | if (view_mode == SINGLE_VIEW || view_mode == FULL_VIEW) { | ||
| 1044 | gtk_paned_set_position(GTK_PANED(hpaned), 0); | ||
| 1045 | } | ||
| 1046 | |||
| 1047 | if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT)) | 1059 | if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT)) |
| 1048 | || (view_mode == FULL_VIEW) | 1060 | || (view_mode == FULL_VIEW) |
| 1049 | || (view_mode == SPLIT_VIEW)) | 1061 | || (view_mode == SPLIT_VIEW)) |
| @@ -1368,17 +1380,7 @@ int main(int ac, char *av[]) · 318 unmodified lines | |||
| 1368 | 1380 | ||
| 1369 | conf_read(NULL); | 1381 | conf_read(NULL); |
| 1370 | 1382 | ||
| 1371 | switch (view_mode) { | 1383 | set_view_mode(view_mode); |
| 1372 | case SINGLE_VIEW: | ||
| 1373 | display_tree_part(); | ||
| 1374 | break; | ||
| 1375 | case SPLIT_VIEW: | ||
| 1376 | display_list(); | ||
| 1377 | break; | ||
| 1378 | case FULL_VIEW: | ||
| 1379 | display_tree(&rootmenu); | ||
| 1380 | break; | ||
| 1381 | } | ||
| 1382 | 1384 | ||
| 1383 | gtk_main(); | 1385 | gtk_main(); |
| 1384 | 1386 | ||