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 | 18 | #include <unistd.h> |
| 19 | 19 | #include <time.h> |
| 20 | 20 | |
| 21 | −enum { | |
| 21 | +enum view_mode { | |
| 22 | 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 | 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 | 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 | 469 | void on_single_clicked(GtkButton * button, gpointer user_data) |
| 437 | 470 | { |
| 438 | − view_mode = SINGLE_VIEW; | |
| 439 | − gtk_widget_hide(tree1_w); | |
| 440 | − current = &rootmenu; | |
| 441 | − display_tree_part(); | |
| 471 | + set_view_mode(SINGLE_VIEW); | |
| 442 | 472 | } |
| 443 | 473 | |
| 444 | 474 | |
| 445 | 475 | void on_split_clicked(GtkButton * button, gpointer user_data) |
| 446 | 476 | { |
| 447 | − gint w; | |
| 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); | |
| 477 | + set_view_mode(SPLIT_VIEW); | |
| 457 | 478 | } |
| 458 | 479 | |
| 459 | 480 | |
| 460 | 481 | void on_full_clicked(GtkButton * button, gpointer user_data) |
| 461 | 482 | { |
| 462 | − 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); | |
| 483 | + set_view_mode(FULL_VIEW); | |
| 467 | 484 | } |
| 468 | 485 | |
| 469 | 486 | |
| @@ -1039,11 +1056,6 @@ static void _display_tree(struct menu *menu, GtkTreeIter *parent) · 569 unmodified lines | ||
| 1039 | 1056 | || (view_mode == FULL_VIEW) |
| 1040 | 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 | 1059 | if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT)) |
| 1048 | 1060 | || (view_mode == FULL_VIEW) |
| 1049 | 1061 | || (view_mode == SPLIT_VIEW)) |
| @@ -1368,17 +1380,7 @@ int main(int ac, char *av[]) · 318 unmodified lines | ||
| 1368 | 1380 | |
| 1369 | 1381 | conf_read(NULL); |
| 1370 | 1382 | |
| 1371 | − switch (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 | − } | |
| 1383 | + set_view_mode(view_mode); | |
| 1382 | 1384 | |
| 1383 | 1385 | gtk_main(); |
| 1384 | 1386 | |