diff options
Diffstat (limited to 'shell/shell-window.c')
-rw-r--r-- | shell/shell-window.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/shell/shell-window.c b/shell/shell-window.c new file mode 100644 index 00000000..19f3c5e8 --- /dev/null +++ b/shell/shell-window.c @@ -0,0 +1,83 @@ +/* + * This file is part of libslab. + * + * Copyright (c) 2006 Novell, Inc. + * + * Libslab is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * Libslab is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for + * more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libslab; if not, write to the Free Software Foundation, Inc., 51 + * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "shell-window.h" + +#include <gtk/gtk.h> +#include <gdk/gdkx.h> + +#include "app-resizer.h" + +G_DEFINE_TYPE (ShellWindow, shell_window, GTK_TYPE_FRAME); + +static void +shell_window_class_init (ShellWindowClass * klass) +{ +} + +static void +shell_window_init (ShellWindow * window) +{ + window->_hbox = NULL; + window->_left_pane = NULL; + window->_right_pane = NULL; +} + +GtkWidget * +shell_window_new (AppShellData * app_data) +{ + ShellWindow *window = g_object_new (SHELL_WINDOW_TYPE, NULL); + + gtk_widget_set_app_paintable (GTK_WIDGET (window), TRUE); + gtk_frame_set_shadow_type(GTK_FRAME(window), GTK_SHADOW_NONE); + + window->_hbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0)); + gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (window->_hbox)); + + return GTK_WIDGET (window); +} + +void +shell_window_clear_resize_handler (ShellWindow * win) +{ + if (win->resize_handler_id) + { + g_signal_handler_disconnect (win, win->resize_handler_id); + win->resize_handler_id = 0; + } +} + +void +shell_window_set_contents (ShellWindow * shell, GtkWidget * left_pane, GtkWidget * right_pane) +{ + shell->_left_pane = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_widget_set_margin_top (GTK_WIDGET (shell->_left_pane), 15); + gtk_widget_set_margin_bottom (GTK_WIDGET (shell->_left_pane), 15); + gtk_widget_set_margin_start (GTK_WIDGET (shell->_left_pane), 15); + gtk_widget_set_margin_end (GTK_WIDGET (shell->_left_pane), 15); + + shell->_right_pane = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + + gtk_box_pack_start (shell->_hbox, shell->_left_pane, FALSE, FALSE, 0); + gtk_box_pack_start (shell->_hbox, shell->_right_pane, TRUE, TRUE, 0); /* this one takes any extra space */ + + gtk_container_add (GTK_CONTAINER (shell->_left_pane), left_pane); + gtk_container_add (GTK_CONTAINER (shell->_right_pane), right_pane); +} |