2
* Copyright © 2008, 2010, 2011, 2012 Christian Persch
4
* This program is free software: you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation, either version 3 of the License, or
7
* (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License
15
* along with this program. If not, see <http://www.gnu.org/licenses/>.
20
#include "terminal-mdi-container.h"
21
#include "terminal-debug.h"
22
#include "terminal-intl.h"
33
static guint signals[LAST_SIGNAL];
35
G_DEFINE_INTERFACE (TerminalMdiContainer, terminal_mdi_container, GTK_TYPE_WIDGET)
38
terminal_mdi_container_default_init (TerminalMdiContainerInterface *iface)
40
signals[SCREEN_ADDED] =
41
g_signal_new (I_("screen-added"),
42
G_TYPE_FROM_INTERFACE (iface),
44
G_STRUCT_OFFSET (TerminalMdiContainerInterface, screen_added),
46
g_cclosure_marshal_VOID__OBJECT,
48
1, TERMINAL_TYPE_SCREEN);
50
signals[SCREEN_ADDED] =
51
g_signal_new (I_("screen-removed"),
52
G_TYPE_FROM_INTERFACE (iface),
54
G_STRUCT_OFFSET (TerminalMdiContainerInterface, screen_added),
56
g_cclosure_marshal_VOID__OBJECT,
58
1, TERMINAL_TYPE_SCREEN);
60
signals[SCREEN_ADDED] =
61
g_signal_new (I_("screen-switched"),
62
G_TYPE_FROM_INTERFACE (iface),
64
G_STRUCT_OFFSET (TerminalMdiContainerInterface, screen_switched),
68
2, TERMINAL_TYPE_SCREEN, TERMINAL_TYPE_SCREEN);
70
signals[SCREENS_REORDERED] =
71
g_signal_new (I_("screens-reordered"),
72
G_TYPE_FROM_INTERFACE (iface),
74
G_STRUCT_OFFSET (TerminalMdiContainerInterface, screens_reordered),
76
g_cclosure_marshal_VOID__VOID,
80
signals[SCREEN_CLOSE_REQUEST] =
81
g_signal_new (I_("screen-close-request"),
82
G_TYPE_FROM_INTERFACE (iface),
84
G_STRUCT_OFFSET (TerminalMdiContainerInterface, screen_close_request),
86
g_cclosure_marshal_VOID__OBJECT,
88
1, TERMINAL_TYPE_SCREEN);
90
g_object_interface_install_property (iface,
91
g_param_spec_object ("active-screen", NULL, NULL,
93
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
99
terminal_mdi_container_add_screen (TerminalMdiContainer *container,
100
TerminalScreen *screen)
102
g_return_if_fail (TERMINAL_IS_MDI_CONTAINER (container));
103
g_return_if_fail (TERMINAL_IS_SCREEN (screen));
105
TERMINAL_MDI_CONTAINER_GET_IFACE (container)->add_screen (container, screen);
109
terminal_mdi_container_remove_screen (TerminalMdiContainer *container,
110
TerminalScreen *screen)
112
g_return_if_fail (TERMINAL_IS_MDI_CONTAINER (container));
113
g_return_if_fail (TERMINAL_IS_SCREEN (screen));
115
TERMINAL_MDI_CONTAINER_GET_IFACE (container)->remove_screen (container, screen);
119
terminal_mdi_container_get_active_screen (TerminalMdiContainer *container)
121
g_return_val_if_fail (TERMINAL_IS_MDI_CONTAINER (container), NULL);
123
return TERMINAL_MDI_CONTAINER_GET_IFACE (container)->get_active_screen (container);
127
terminal_mdi_container_set_active_screen (TerminalMdiContainer *container,
128
TerminalScreen *screen)
130
g_return_if_fail (TERMINAL_IS_MDI_CONTAINER (container));
131
g_return_if_fail (TERMINAL_IS_SCREEN (screen));
133
TERMINAL_MDI_CONTAINER_GET_IFACE (container)->set_active_screen (container, screen);
138
terminal_mdi_container_list_screens (TerminalMdiContainer *container)
140
g_return_val_if_fail (TERMINAL_IS_MDI_CONTAINER (container), NULL);
142
return TERMINAL_MDI_CONTAINER_GET_IFACE (container)->list_screens (container);
146
terminal_mdi_container_list_screen_containers (TerminalMdiContainer *container)
148
g_return_val_if_fail (TERMINAL_IS_MDI_CONTAINER (container), NULL);
150
return TERMINAL_MDI_CONTAINER_GET_IFACE (container)->list_screen_containers (container);
154
terminal_mdi_container_get_n_screens (TerminalMdiContainer *container)
156
g_return_val_if_fail (TERMINAL_IS_MDI_CONTAINER (container), 0);
158
return TERMINAL_MDI_CONTAINER_GET_IFACE (container)->get_n_screens (container);
162
terminal_mdi_container_get_active_screen_num (TerminalMdiContainer *container)
164
g_return_val_if_fail (TERMINAL_IS_MDI_CONTAINER (container), -1);
166
return TERMINAL_MDI_CONTAINER_GET_IFACE (container)->get_active_screen_num (container);
170
terminal_mdi_container_reorder_screen (TerminalMdiContainer *container,
171
TerminalScreen *screen,
174
g_return_if_fail (TERMINAL_IS_MDI_CONTAINER (container));
176
return TERMINAL_MDI_CONTAINER_GET_IFACE (container)->reorder_screen (container, screen, new_position);