static GtkWidget *layout_tool_setup(LayoutWindow *lw) { GtkWidget *box; GtkWidget *menu_bar; GtkWidget *tabcomp; box = gtk_vbox_new(FALSE, 0); menu_bar = layout_actions_menu_bar(lw); gtk_box_pack_start(GTK_BOX(box), menu_bar, FALSE, FALSE, 0); gtk_widget_show(menu_bar); lw->toolbar = layout_button_bar(lw); gtk_box_pack_start(GTK_BOX(box), lw->toolbar, FALSE, FALSE, 0); if (!lw->toolbar_hidden) gtk_widget_show(lw->toolbar); tabcomp = tab_completion_new_with_history(&lw->path_entry, NULL, "path_list", -1, layout_path_entry_cb, lw); tab_completion_add_tab_func(lw->path_entry, layout_path_entry_tab_cb, lw); gtk_box_pack_start(GTK_BOX(box), tabcomp, FALSE, FALSE, 0); gtk_widget_show(tabcomp); g_signal_connect(G_OBJECT(lw->path_entry->parent), "changed", G_CALLBACK(layout_path_entry_changed_cb), lw); if (lw->tree_view) { lw->vdt = vdtree_new(lw->path, TRUE); vdtree_set_layout(lw->vdt, lw); vdtree_set_select_func(lw->vdt, layout_vdtree_select_cb, lw); lw->dir_view = lw->vdt->widget; } else { lw->vdl = vdlist_new(lw->path); vdlist_set_layout(lw->vdl, lw); vdlist_set_select_func(lw->vdl, layout_vdlist_select_cb, lw); lw->dir_view = lw->vdl->widget; } gtk_box_pack_start(GTK_BOX(box), lw->dir_view, TRUE, TRUE, 0); gtk_widget_show(lw->dir_view); gtk_widget_show(box); return box; }
ViewDir *vd_new(DirViewType type, FileData *dir_fd) { ViewDir *vd = g_new0(ViewDir, 1); vd->widget = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(vd->widget), GTK_SHADOW_IN); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(vd->widget), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); vd->pf = folder_icons_new(vd->widget); switch (type) { case DIRVIEW_LIST: vd = vdlist_new(vd, dir_fd); break; case DIRVIEW_TREE: vd = vdtree_new(vd, dir_fd); break; } gtk_container_add(GTK_CONTAINER(vd->widget), vd->view); vd_dnd_init(vd); g_signal_connect(G_OBJECT(vd->view), "row_activated", G_CALLBACK(vd_activate_cb), vd); g_signal_connect(G_OBJECT(vd->widget), "destroy", G_CALLBACK(vd_destroy_cb), vd); g_signal_connect(G_OBJECT(vd->view), "key_press_event", G_CALLBACK(vd_press_key_cb), vd); g_signal_connect(G_OBJECT(vd->view), "button_press_event", G_CALLBACK(vd_press_cb), vd); g_signal_connect(G_OBJECT(vd->view), "button_release_event", G_CALLBACK(vd_release_cb), vd); file_data_register_notify_func(vd_notify_cb, vd, NOTIFY_PRIORITY_HIGH); /* vd_set_fd expects that vd_notify_cb is already registered */ if (dir_fd) vd_set_fd(vd, dir_fd); gtk_widget_show(vd->view); return vd; }