| File: | lapiz/lapiz-documents-panel.c | 
| Warning: | line 610, column 33 Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption | 
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
| 1 | /* | 
| 2 | * lapiz-documents-panel.c | 
| 3 | * This file is part of lapiz | 
| 4 | * | 
| 5 | * Copyright (C) 2005 - Paolo Maggi | 
| 6 | * | 
| 7 | * This program is free software; you can redistribute it and/or modify | 
| 8 | * it under the terms of the GNU General Public License as published by | 
| 9 | * the Free Software Foundation; either version 2 of the License, or | 
| 10 | * (at your option) any later version. | 
| 11 | * | 
| 12 | * This program is distributed in the hope that it will be useful, | 
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 15 | * GNU General Public License for more details. | 
| 16 | * | 
| 17 | * You should have received a copy of the GNU General Public License | 
| 18 | * along with this program; if not, write to the Free Software | 
| 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, | 
| 20 | * Boston, MA 02110-1301, USA. | 
| 21 | */ | 
| 22 | |
| 23 | /* | 
| 24 | * Modified by the lapiz Team, 2005. See the AUTHORS file for a | 
| 25 | * list of people on the lapiz Team. | 
| 26 | * See the ChangeLog files for a list of changes. | 
| 27 | * | 
| 28 | * $Id$ | 
| 29 | */ | 
| 30 | |
| 31 | #ifdef HAVE_CONFIG_H1 | 
| 32 | #include <config.h> | 
| 33 | #endif | 
| 34 | |
| 35 | #include "lapiz-documents-panel.h" | 
| 36 | #include "lapiz-utils.h" | 
| 37 | #include "lapiz-notebook.h" | 
| 38 | |
| 39 | #include <glib/gi18n.h> | 
| 40 | |
| 41 | struct _LapizDocumentsPanelPrivate | 
| 42 | { | 
| 43 | LapizWindow *window; | 
| 44 | |
| 45 | CtkWidget *treeview; | 
| 46 | CtkTreeModel *model; | 
| 47 | |
| 48 | guint adding_tab : 1; | 
| 49 | guint is_reodering : 1; | 
| 50 | }; | 
| 51 | |
| 52 | G_DEFINE_TYPE_WITH_PRIVATE (LapizDocumentsPanel, lapiz_documents_panel, CTK_TYPE_BOX)static void lapiz_documents_panel_init (LapizDocumentsPanel * self); static void lapiz_documents_panel_class_init (LapizDocumentsPanelClass *klass); static GType lapiz_documents_panel_get_type_once (void ); static gpointer lapiz_documents_panel_parent_class = ((void *)0); static gint LapizDocumentsPanel_private_offset; static void lapiz_documents_panel_class_intern_init (gpointer klass) { lapiz_documents_panel_parent_class = g_type_class_peek_parent (klass); if (LapizDocumentsPanel_private_offset != 0) g_type_class_adjust_private_offset (klass, &LapizDocumentsPanel_private_offset ); lapiz_documents_panel_class_init ((LapizDocumentsPanelClass *) klass); } __attribute__ ((__unused__)) static inline gpointer lapiz_documents_panel_get_instance_private (LapizDocumentsPanel *self) { return (((gpointer) ((guint8*) (self) + (glong) (LapizDocumentsPanel_private_offset )))); } GType lapiz_documents_panel_get_type (void) { static GType static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert (sizeof *(&static_g_define_type_id) == sizeof (gpointer) , "Expression evaluates to false"); (void) (0 ? (gpointer) * ( &static_g_define_type_id) : ((void*)0)); (!(__extension__ ({ _Static_assert (sizeof *(&static_g_define_type_id) == sizeof (gpointer), "Expression evaluates to false"); __typeof__ (*(&static_g_define_type_id)) gapg_temp_newval; __typeof__ ((&static_g_define_type_id)) gapg_temp_atomic = (&static_g_define_type_id ); __atomic_load (gapg_temp_atomic, &gapg_temp_newval, 5) ; gapg_temp_newval; })) && g_once_init_enter_pointer ( &static_g_define_type_id)); })) ) { GType g_define_type_id = lapiz_documents_panel_get_type_once (); (__extension__ ({ _Static_assert (sizeof *(&static_g_define_type_id) == sizeof (gpointer) , "Expression evaluates to false"); 0 ? (void) (*(&static_g_define_type_id ) = (g_define_type_id)) : (void) 0; g_once_init_leave_pointer ((&static_g_define_type_id), (gpointer) (guintptr) (g_define_type_id )); })) ; } return static_g_define_type_id; } __attribute__ ( (__noinline__)) static GType lapiz_documents_panel_get_type_once (void) { GType g_define_type_id = g_type_register_static_simple ((ctk_box_get_type ()), g_intern_static_string ("LapizDocumentsPanel" ), sizeof (LapizDocumentsPanelClass), (GClassInitFunc)(void ( *)(void)) lapiz_documents_panel_class_intern_init, sizeof (LapizDocumentsPanel ), (GInstanceInitFunc)(void (*)(void)) lapiz_documents_panel_init , (GTypeFlags) 0); { {{ LapizDocumentsPanel_private_offset = g_type_add_instance_private (g_define_type_id, sizeof (LapizDocumentsPanelPrivate)); };} } return g_define_type_id; } | 
| 53 | |
| 54 | enum | 
| 55 | { | 
| 56 | PROP_0, | 
| 57 | PROP_WINDOW | 
| 58 | }; | 
| 59 | |
| 60 | enum | 
| 61 | { | 
| 62 | PIXBUF_COLUMN, | 
| 63 | NAME_COLUMN, | 
| 64 | TAB_COLUMN, | 
| 65 | N_COLUMNS | 
| 66 | }; | 
| 67 | |
| 68 | #define MAX_DOC_NAME_LENGTH60 60 | 
| 69 | |
| 70 | static gchar * | 
| 71 | tab_get_name (LapizTab *tab) | 
| 72 | { | 
| 73 | LapizDocument *doc; | 
| 74 | gchar *name; | 
| 75 | gchar *docname; | 
| 76 | gchar *tab_name; | 
| 77 | |
| 78 | g_return_val_if_fail (LAPIZ_IS_TAB (tab), NULL)do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((tab)); GType __t = ((lapiz_tab_get_type())); gboolean __r ; if (!__inst) __r = (0); else if (__inst->g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char* ) (__func__)), "LAPIZ_IS_TAB (tab)"); return (((void*)0)); } } while (0); | 
| 79 | |
| 80 | doc = lapiz_tab_get_document (tab); | 
| 81 | |
| 82 | name = lapiz_document_get_short_name_for_display (doc); | 
| 83 | |
| 84 | /* Truncate the name so it doesn't get insanely wide. */ | 
| 85 | docname = lapiz_utils_str_middle_truncate (name, MAX_DOC_NAME_LENGTH60); | 
| 86 | |
| 87 | if (ctk_text_buffer_get_modified (CTK_TEXT_BUFFER (doc)((((CtkTextBuffer*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((doc)), ((ctk_text_buffer_get_type ())))))))) | 
| 88 | { | 
| 89 | if (lapiz_document_get_readonly (doc)) | 
| 90 | { | 
| 91 | tab_name = g_markup_printf_escaped ("<i>%s</i> [<i>%s</i>]", | 
| 92 | docname, | 
| 93 | _("Read-Only")gettext ("Read-Only")); | 
| 94 | } | 
| 95 | else | 
| 96 | { | 
| 97 | tab_name = g_markup_printf_escaped ("<i>%s</i>", | 
| 98 | docname); | 
| 99 | } | 
| 100 | } | 
| 101 | else | 
| 102 | { | 
| 103 | if (lapiz_document_get_readonly (doc)) | 
| 104 | { | 
| 105 | tab_name = g_markup_printf_escaped ("%s [<i>%s</i>]", | 
| 106 | docname, | 
| 107 | _("Read-Only")gettext ("Read-Only")); | 
| 108 | } | 
| 109 | else | 
| 110 | { | 
| 111 | tab_name = g_markup_escape_text (docname, -1); | 
| 112 | } | 
| 113 | } | 
| 114 | |
| 115 | g_free (docname); | 
| 116 | g_free (name); | 
| 117 | |
| 118 | return tab_name; | 
| 119 | } | 
| 120 | |
| 121 | static void | 
| 122 | get_iter_from_tab (LapizDocumentsPanel *panel, LapizTab *tab, CtkTreeIter *iter) | 
| 123 | { | 
| 124 | gint num; | 
| 125 | CtkWidget *nb; | 
| 126 | CtkTreePath *path; | 
| 127 | |
| 128 | nb = _lapiz_window_get_notebook (panel->priv->window); | 
| 129 | num = ctk_notebook_page_num (CTK_NOTEBOOK (nb)((((CtkNotebook*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((nb)), ((ctk_notebook_get_type ())))))), | 
| 130 | CTK_WIDGET (tab)((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((tab)), ((ctk_widget_get_type ()))))))); | 
| 131 | |
| 132 | path = ctk_tree_path_new_from_indices (num, -1); | 
| 133 | ctk_tree_model_get_iter (panel->priv->model, | 
| 134 | iter, | 
| 135 | path); | 
| 136 | ctk_tree_path_free (path); | 
| 137 | } | 
| 138 | |
| 139 | static void | 
| 140 | window_active_tab_changed (LapizWindow *window, | 
| 141 | LapizTab *tab, | 
| 142 | LapizDocumentsPanel *panel) | 
| 143 | { | 
| 144 | g_return_if_fail (tab != NULL)do { if ((tab != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "tab != NULL"); return ; } } while (0); | 
| 145 | |
| 146 | if (!_lapiz_window_is_removing_tabs (window)) | 
| 147 | { | 
| 148 | CtkTreeIter iter; | 
| 149 | |
| 150 | get_iter_from_tab (panel, tab, &iter); | 
| 151 | |
| 152 | if (ctk_list_store_iter_is_valid (CTK_LIST_STORE (panel->priv->model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->model)), ((ctk_list_store_get_type () )))))), | 
| 153 | &iter)) | 
| 154 | { | 
| 155 | CtkTreeSelection *selection; | 
| 156 | |
| 157 | selection = ctk_tree_view_get_selection ( | 
| 158 | CTK_TREE_VIEW (panel->priv->treeview)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->treeview)), ((ctk_tree_view_get_type ( )))))))); | 
| 159 | |
| 160 | ctk_tree_selection_select_iter (selection, &iter); | 
| 161 | } | 
| 162 | } | 
| 163 | } | 
| 164 | |
| 165 | static void | 
| 166 | refresh_list (LapizDocumentsPanel *panel) | 
| 167 | { | 
| 168 | /* TODO: refresh the list only if the panel is visible */ | 
| 169 | |
| 170 | GList *tabs; | 
| 171 | GList *l; | 
| 172 | CtkWidget *nb; | 
| 173 | CtkListStore *list_store; | 
| 174 | LapizTab *active_tab; | 
| 175 | |
| 176 | /* g_debug ("refresh_list"); */ | 
| 177 | |
| 178 | list_store = CTK_LIST_STORE (panel->priv->model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->model)), ((ctk_list_store_get_type () )))))); | 
| 179 | |
| 180 | ctk_list_store_clear (list_store); | 
| 181 | |
| 182 | active_tab = lapiz_window_get_active_tab (panel->priv->window); | 
| 183 | |
| 184 | nb = _lapiz_window_get_notebook (panel->priv->window); | 
| 185 | |
| 186 | tabs = ctk_container_get_children (CTK_CONTAINER (nb)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((nb)), ((ctk_container_get_type ()))))))); | 
| 187 | l = tabs; | 
| 188 | |
| 189 | panel->priv->adding_tab = TRUE(!(0)); | 
| 190 | |
| 191 | while (l != NULL((void*)0)) | 
| 192 | { | 
| 193 | GdkPixbuf *pixbuf; | 
| 194 | gchar *name; | 
| 195 | CtkTreeIter iter; | 
| 196 | |
| 197 | name = tab_get_name (LAPIZ_TAB (l->data)((((LapizTab*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((l->data)), ((lapiz_tab_get_type()))))))); | 
| 198 | pixbuf = _lapiz_tab_get_icon (LAPIZ_TAB (l->data)((((LapizTab*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((l->data)), ((lapiz_tab_get_type()))))))); | 
| 199 | |
| 200 | /* Add a new row to the model */ | 
| 201 | ctk_list_store_append (list_store, &iter); | 
| 202 | ctk_list_store_set (list_store, | 
| 203 | &iter, | 
| 204 | PIXBUF_COLUMN, pixbuf, | 
| 205 | NAME_COLUMN, name, | 
| 206 | TAB_COLUMN, l->data, | 
| 207 | -1); | 
| 208 | |
| 209 | g_free (name); | 
| 210 | if (pixbuf != NULL((void*)0)) | 
| 211 | g_object_unref (pixbuf); | 
| 212 | |
| 213 | if (l->data == active_tab) | 
| 214 | { | 
| 215 | CtkTreeSelection *selection; | 
| 216 | |
| 217 | selection = ctk_tree_view_get_selection ( | 
| 218 | CTK_TREE_VIEW (panel->priv->treeview)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->treeview)), ((ctk_tree_view_get_type ( )))))))); | 
| 219 | |
| 220 | ctk_tree_selection_select_iter (selection, &iter); | 
| 221 | } | 
| 222 | |
| 223 | l = g_list_next (l)((l) ? (((GList *)(l))->next) : ((void*)0)); | 
| 224 | } | 
| 225 | |
| 226 | panel->priv->adding_tab = FALSE(0); | 
| 227 | |
| 228 | g_list_free (tabs); | 
| 229 | } | 
| 230 | |
| 231 | static void | 
| 232 | sync_name_and_icon (LapizTab *tab, | 
| 233 | GParamSpec *pspec G_GNUC_UNUSED__attribute__ ((__unused__)), | 
| 234 | LapizDocumentsPanel *panel) | 
| 235 | { | 
| 236 | GdkPixbuf *pixbuf; | 
| 237 | gchar *name; | 
| 238 | CtkTreeIter iter; | 
| 239 | |
| 240 | get_iter_from_tab (panel, tab, &iter); | 
| 241 | |
| 242 | name = tab_get_name (tab); | 
| 243 | pixbuf = _lapiz_tab_get_icon (tab); | 
| 244 | |
| 245 | ctk_list_store_set (CTK_LIST_STORE (panel->priv->model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->model)), ((ctk_list_store_get_type () )))))), | 
| 246 | &iter, | 
| 247 | PIXBUF_COLUMN, pixbuf, | 
| 248 | NAME_COLUMN, name, | 
| 249 | TAB_COLUMN, tab, | 
| 250 | -1); | 
| 251 | |
| 252 | g_free (name); | 
| 253 | if (pixbuf != NULL((void*)0)) | 
| 254 | g_object_unref (pixbuf); | 
| 255 | } | 
| 256 | |
| 257 | static void | 
| 258 | window_tab_removed (LapizWindow *window, | 
| 259 | LapizTab *tab, | 
| 260 | LapizDocumentsPanel *panel) | 
| 261 | { | 
| 262 | g_signal_handlers_disconnect_by_func (tab,g_signal_handlers_disconnect_matched ((tab), (GSignalMatchType ) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*) 0), (((GCallback) (sync_name_and_icon))), (panel)) | 
| 263 | G_CALLBACK (sync_name_and_icon),g_signal_handlers_disconnect_matched ((tab), (GSignalMatchType ) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*) 0), (((GCallback) (sync_name_and_icon))), (panel)) | 
| 264 | panel)g_signal_handlers_disconnect_matched ((tab), (GSignalMatchType ) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*) 0), (((GCallback) (sync_name_and_icon))), (panel)); | 
| 265 | |
| 266 | if (_lapiz_window_is_removing_tabs (window)) | 
| 267 | ctk_list_store_clear (CTK_LIST_STORE (panel->priv->model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->model)), ((ctk_list_store_get_type () ))))))); | 
| 268 | else | 
| 269 | refresh_list (panel); | 
| 270 | } | 
| 271 | |
| 272 | static void | 
| 273 | window_tab_added (LapizWindow *window G_GNUC_UNUSED__attribute__ ((__unused__)), | 
| 274 | LapizTab *tab, | 
| 275 | LapizDocumentsPanel *panel) | 
| 276 | { | 
| 277 | CtkTreeIter iter; | 
| 278 | CtkTreeIter sibling; | 
| 279 | GdkPixbuf *pixbuf; | 
| 280 | gchar *name; | 
| 281 | |
| 282 | g_signal_connect (tab,g_signal_connect_data ((tab), ("notify::name"), (((GCallback) (sync_name_and_icon))), (panel), ((void*)0), (GConnectFlags) 0) | 
| 283 | "notify::name",g_signal_connect_data ((tab), ("notify::name"), (((GCallback) (sync_name_and_icon))), (panel), ((void*)0), (GConnectFlags) 0) | 
| 284 | G_CALLBACK (sync_name_and_icon),g_signal_connect_data ((tab), ("notify::name"), (((GCallback) (sync_name_and_icon))), (panel), ((void*)0), (GConnectFlags) 0) | 
| 285 | panel)g_signal_connect_data ((tab), ("notify::name"), (((GCallback) (sync_name_and_icon))), (panel), ((void*)0), (GConnectFlags) 0); | 
| 286 | |
| 287 | g_signal_connect (tab,g_signal_connect_data ((tab), ("notify::state"), (((GCallback ) (sync_name_and_icon))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 288 | "notify::state",g_signal_connect_data ((tab), ("notify::state"), (((GCallback ) (sync_name_and_icon))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 289 | G_CALLBACK (sync_name_and_icon),g_signal_connect_data ((tab), ("notify::state"), (((GCallback ) (sync_name_and_icon))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 290 | panel)g_signal_connect_data ((tab), ("notify::state"), (((GCallback ) (sync_name_and_icon))), (panel), ((void*)0), (GConnectFlags ) 0); | 
| 291 | |
| 292 | get_iter_from_tab (panel, tab, &sibling); | 
| 293 | |
| 294 | panel->priv->adding_tab = TRUE(!(0)); | 
| 295 | |
| 296 | if (ctk_list_store_iter_is_valid (CTK_LIST_STORE (panel->priv->model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->model)), ((ctk_list_store_get_type () )))))), | 
| 297 | &sibling)) | 
| 298 | { | 
| 299 | ctk_list_store_insert_after (CTK_LIST_STORE (panel->priv->model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->model)), ((ctk_list_store_get_type () )))))), | 
| 300 | &iter, | 
| 301 | &sibling); | 
| 302 | } | 
| 303 | else | 
| 304 | { | 
| 305 | LapizTab *active_tab; | 
| 306 | |
| 307 | ctk_list_store_append (CTK_LIST_STORE (panel->priv->model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->model)), ((ctk_list_store_get_type () )))))), | 
| 308 | &iter); | 
| 309 | |
| 310 | active_tab = lapiz_window_get_active_tab (panel->priv->window); | 
| 311 | |
| 312 | if (tab == active_tab) | 
| 313 | { | 
| 314 | CtkTreeSelection *selection; | 
| 315 | |
| 316 | selection = ctk_tree_view_get_selection ( | 
| 317 | CTK_TREE_VIEW (panel->priv->treeview)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->treeview)), ((ctk_tree_view_get_type ( )))))))); | 
| 318 | |
| 319 | ctk_tree_selection_select_iter (selection, &iter); | 
| 320 | } | 
| 321 | } | 
| 322 | |
| 323 | name = tab_get_name (tab); | 
| 324 | pixbuf = _lapiz_tab_get_icon (tab); | 
| 325 | |
| 326 | ctk_list_store_set (CTK_LIST_STORE (panel->priv->model)((((CtkListStore*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->model)), ((ctk_list_store_get_type () )))))), | 
| 327 | &iter, | 
| 328 | PIXBUF_COLUMN, pixbuf, | 
| 329 | NAME_COLUMN, name, | 
| 330 | TAB_COLUMN, tab, | 
| 331 | -1); | 
| 332 | |
| 333 | g_free (name); | 
| 334 | if (pixbuf != NULL((void*)0)) | 
| 335 | g_object_unref (pixbuf); | 
| 336 | |
| 337 | panel->priv->adding_tab = FALSE(0); | 
| 338 | } | 
| 339 | |
| 340 | static void | 
| 341 | window_tabs_reordered (LapizWindow *window G_GNUC_UNUSED__attribute__ ((__unused__)), | 
| 342 | LapizDocumentsPanel *panel) | 
| 343 | { | 
| 344 | if (panel->priv->is_reodering) | 
| 345 | return; | 
| 346 | |
| 347 | refresh_list (panel); | 
| 348 | } | 
| 349 | |
| 350 | static void | 
| 351 | set_window (LapizDocumentsPanel *panel, | 
| 352 | LapizWindow *window) | 
| 353 | { | 
| 354 | g_return_if_fail (panel->priv->window == NULL)do { if ((panel->priv->window == ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__ )), "panel->priv->window == NULL"); return; } } while ( 0); | 
| 355 | g_return_if_fail (LAPIZ_IS_WINDOW (window))do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((window)); GType __t = ((lapiz_window_get_type())); gboolean __r; if (!__inst) __r = (0); else if (__inst->g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char* ) (__func__)), "LAPIZ_IS_WINDOW (window)"); return; } } while (0); | 
| 356 | |
| 357 | panel->priv->window = g_object_ref (window)((__typeof__ (window)) (g_object_ref) (window)); | 
| 358 | |
| 359 | g_signal_connect (window,g_signal_connect_data ((window), ("tab_added"), (((GCallback) (window_tab_added))), (panel), ((void*)0), (GConnectFlags) 0 ) | 
| 360 | "tab_added",g_signal_connect_data ((window), ("tab_added"), (((GCallback) (window_tab_added))), (panel), ((void*)0), (GConnectFlags) 0 ) | 
| 361 | G_CALLBACK (window_tab_added),g_signal_connect_data ((window), ("tab_added"), (((GCallback) (window_tab_added))), (panel), ((void*)0), (GConnectFlags) 0 ) | 
| 362 | panel)g_signal_connect_data ((window), ("tab_added"), (((GCallback) (window_tab_added))), (panel), ((void*)0), (GConnectFlags) 0 ); | 
| 363 | g_signal_connect (window,g_signal_connect_data ((window), ("tab_removed"), (((GCallback ) (window_tab_removed))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 364 | "tab_removed",g_signal_connect_data ((window), ("tab_removed"), (((GCallback ) (window_tab_removed))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 365 | G_CALLBACK (window_tab_removed),g_signal_connect_data ((window), ("tab_removed"), (((GCallback ) (window_tab_removed))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 366 | panel)g_signal_connect_data ((window), ("tab_removed"), (((GCallback ) (window_tab_removed))), (panel), ((void*)0), (GConnectFlags ) 0); | 
| 367 | g_signal_connect (window,g_signal_connect_data ((window), ("tabs_reordered"), (((GCallback ) (window_tabs_reordered))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 368 | "tabs_reordered",g_signal_connect_data ((window), ("tabs_reordered"), (((GCallback ) (window_tabs_reordered))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 369 | G_CALLBACK (window_tabs_reordered),g_signal_connect_data ((window), ("tabs_reordered"), (((GCallback ) (window_tabs_reordered))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 370 | panel)g_signal_connect_data ((window), ("tabs_reordered"), (((GCallback ) (window_tabs_reordered))), (panel), ((void*)0), (GConnectFlags ) 0); | 
| 371 | g_signal_connect (window,g_signal_connect_data ((window), ("active_tab_changed"), (((GCallback ) (window_active_tab_changed))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 372 | "active_tab_changed",g_signal_connect_data ((window), ("active_tab_changed"), (((GCallback ) (window_active_tab_changed))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 373 | G_CALLBACK (window_active_tab_changed),g_signal_connect_data ((window), ("active_tab_changed"), (((GCallback ) (window_active_tab_changed))), (panel), ((void*)0), (GConnectFlags ) 0) | 
| 374 | panel)g_signal_connect_data ((window), ("active_tab_changed"), (((GCallback ) (window_active_tab_changed))), (panel), ((void*)0), (GConnectFlags ) 0); | 
| 375 | } | 
| 376 | |
| 377 | static void | 
| 378 | treeview_cursor_changed (CtkTreeView *view G_GNUC_UNUSED__attribute__ ((__unused__)), | 
| 379 | LapizDocumentsPanel *panel) | 
| 380 | { | 
| 381 | CtkTreeIter iter; | 
| 382 | CtkTreeSelection *selection; | 
| 383 | gpointer tab; | 
| 384 | |
| 385 | selection = ctk_tree_view_get_selection ( | 
| 386 | CTK_TREE_VIEW (panel->priv->treeview)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->treeview)), ((ctk_tree_view_get_type ( )))))))); | 
| 387 | |
| 388 | if (ctk_tree_selection_get_selected (selection, NULL((void*)0), &iter)) | 
| 389 | { | 
| 390 | ctk_tree_model_get (panel->priv->model, | 
| 391 | &iter, | 
| 392 | TAB_COLUMN, | 
| 393 | &tab, | 
| 394 | -1); | 
| 395 | |
| 396 | if (lapiz_window_get_active_tab (panel->priv->window) != tab) | 
| 397 | { | 
| 398 | lapiz_window_set_active_tab (panel->priv->window, | 
| 399 | LAPIZ_TAB (tab)((((LapizTab*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((tab)), ((lapiz_tab_get_type()))))))); | 
| 400 | } | 
| 401 | } | 
| 402 | } | 
| 403 | |
| 404 | static void | 
| 405 | lapiz_documents_panel_set_property (GObject *object, | 
| 406 | guint prop_id, | 
| 407 | const GValue *value, | 
| 408 | GParamSpec *pspec) | 
| 409 | { | 
| 410 | LapizDocumentsPanel *panel = LAPIZ_DOCUMENTS_PANEL (object)((((LapizDocumentsPanel*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((object)), ((lapiz_documents_panel_get_type ())))))); | 
| 411 | |
| 412 | switch (prop_id) | 
| 413 | { | 
| 414 | case PROP_WINDOW: | 
| 415 | set_window (panel, g_value_get_object (value)); | 
| 416 | break; | 
| 417 | |
| 418 | default: | 
| 419 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)do { GObject *_glib__object = (GObject*) ((object)); GParamSpec *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'" , "lapiz-documents-panel.c", 419, ("property"), _glib__property_id , _glib__pspec->name, g_type_name ((((((GTypeClass*) (((GTypeInstance *) (_glib__pspec))->g_class))->g_type)))), (g_type_name ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))->g_class ))->g_type)))))); } while (0); | 
| 420 | break; | 
| 421 | } | 
| 422 | } | 
| 423 | |
| 424 | static void | 
| 425 | lapiz_documents_panel_get_property (GObject *object, | 
| 426 | guint prop_id, | 
| 427 | GValue *value, | 
| 428 | GParamSpec *pspec) | 
| 429 | { | 
| 430 | LapizDocumentsPanel *panel = LAPIZ_DOCUMENTS_PANEL (object)((((LapizDocumentsPanel*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((object)), ((lapiz_documents_panel_get_type ())))))); | 
| 431 | |
| 432 | switch (prop_id) | 
| 433 | { | 
| 434 | case PROP_WINDOW: | 
| 435 | panel->priv = lapiz_documents_panel_get_instance_private (panel); | 
| 436 | g_value_set_object (value, panel->priv->window); | 
| 437 | break; | 
| 438 | default: | 
| 439 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)do { GObject *_glib__object = (GObject*) ((object)); GParamSpec *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'" , "lapiz-documents-panel.c", 439, ("property"), _glib__property_id , _glib__pspec->name, g_type_name ((((((GTypeClass*) (((GTypeInstance *) (_glib__pspec))->g_class))->g_type)))), (g_type_name ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))->g_class ))->g_type)))))); } while (0); | 
| 440 | break; | 
| 441 | } | 
| 442 | } | 
| 443 | |
| 444 | static void | 
| 445 | lapiz_documents_panel_finalize (GObject *object) | 
| 446 | { | 
| 447 | /* LapizDocumentsPanel *tab = LAPIZ_DOCUMENTS_PANEL (object); */ | 
| 448 | |
| 449 | /* TODO: disconnect signal with window */ | 
| 450 | |
| 451 | G_OBJECT_CLASS (lapiz_documents_panel_parent_class)((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass *) ((lapiz_documents_panel_parent_class)), (((GType) ((20) << (2))))))))->finalize (object); | 
| 452 | } | 
| 453 | |
| 454 | static void | 
| 455 | lapiz_documents_panel_dispose (GObject *object) | 
| 456 | { | 
| 457 | LapizDocumentsPanel *panel = LAPIZ_DOCUMENTS_PANEL (object)((((LapizDocumentsPanel*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((object)), ((lapiz_documents_panel_get_type ())))))); | 
| 458 | |
| 459 | if (panel->priv->window != NULL((void*)0)) | 
| 460 | { | 
| 461 | g_object_unref (panel->priv->window); | 
| 462 | panel->priv->window = NULL((void*)0); | 
| 463 | } | 
| 464 | |
| 465 | G_OBJECT_CLASS (lapiz_documents_panel_parent_class)((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass *) ((lapiz_documents_panel_parent_class)), (((GType) ((20) << (2))))))))->dispose (object); | 
| 466 | } | 
| 467 | |
| 468 | static void | 
| 469 | lapiz_documents_panel_class_init (LapizDocumentsPanelClass *klass) | 
| 470 | { | 
| 471 | GObjectClass *object_class = G_OBJECT_CLASS (klass)((((GObjectClass*) (void *) g_type_check_class_cast ((GTypeClass *) ((klass)), (((GType) ((20) << (2)))))))); | 
| 472 | |
| 473 | object_class->finalize = lapiz_documents_panel_finalize; | 
| 474 | object_class->dispose = lapiz_documents_panel_dispose; | 
| 475 | object_class->get_property = lapiz_documents_panel_get_property; | 
| 476 | object_class->set_property = lapiz_documents_panel_set_property; | 
| 477 | |
| 478 | g_object_class_install_property (object_class, | 
| 479 | PROP_WINDOW, | 
| 480 | g_param_spec_object ("window", | 
| 481 | "Window", | 
| 482 | "The LapizWindow this LapizDocumentsPanel is associated with", | 
| 483 | LAPIZ_TYPE_WINDOW(lapiz_window_get_type()), | 
| 484 | G_PARAM_READWRITE | | 
| 485 | G_PARAM_CONSTRUCT_ONLY | | 
| 486 | G_PARAM_STATIC_STRINGS(G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB ))); | 
| 487 | } | 
| 488 | |
| 489 | static gboolean | 
| 490 | show_popup_menu (LapizDocumentsPanel *panel, | 
| 491 | CdkEventButton *event) | 
| 492 | { | 
| 493 | CtkWidget *menu; | 
| 494 | |
| 495 | menu = ctk_ui_manager_get_widget (lapiz_window_get_ui_manager (panel->priv->window), | 
| 496 | "/NotebookPopup"); | 
| 497 | g_return_val_if_fail (menu != NULL, FALSE)do { if ((menu != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "menu != NULL"); return ((0)); } } while (0); | 
| 498 | |
| 499 | if (event != NULL((void*)0)) | 
| 500 | { | 
| 501 | ctk_menu_popup_at_pointer (CTK_MENU (menu)((((CtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((menu)), ((ctk_menu_get_type ())))))), NULL((void*)0)); | 
| 502 | } | 
| 503 | else | 
| 504 | { | 
| 505 | menu_popup_at_treeview_selection (menu, panel->priv->treeview); | 
| 506 | ctk_menu_shell_select_first (CTK_MENU_SHELL (menu)((((CtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((menu)), ((ctk_menu_shell_get_type ())))))), FALSE(0)); | 
| 507 | } | 
| 508 | |
| 509 | return TRUE(!(0)); | 
| 510 | } | 
| 511 | |
| 512 | static gboolean | 
| 513 | panel_button_press_event (CtkTreeView *treeview, | 
| 514 | CdkEventButton *event, | 
| 515 | LapizDocumentsPanel *panel) | 
| 516 | { | 
| 517 | if ((CDK_BUTTON_PRESS == event->type) && (3 == event->button)) | 
| 518 | { | 
| 519 | CtkTreePath* path = NULL((void*)0); | 
| 520 | |
| 521 | if (event->window == ctk_tree_view_get_bin_window (treeview)) | 
| 522 | { | 
| 523 | /* Change the cursor position */ | 
| 524 | if (ctk_tree_view_get_path_at_pos (treeview, | 
| 525 | event->x, | 
| 526 | event->y, | 
| 527 | &path, | 
| 528 | NULL((void*)0), | 
| 529 | NULL((void*)0), | 
| 530 | NULL((void*)0))) | 
| 531 | { | 
| 532 | |
| 533 | ctk_tree_view_set_cursor (treeview, | 
| 534 | path, | 
| 535 | NULL((void*)0), | 
| 536 | FALSE(0)); | 
| 537 | |
| 538 | ctk_tree_path_free (path); | 
| 539 | |
| 540 | /* A row exists at mouse position */ | 
| 541 | return show_popup_menu (panel, event); | 
| 542 | } | 
| 543 | } | 
| 544 | } | 
| 545 | |
| 546 | return FALSE(0); | 
| 547 | } | 
| 548 | |
| 549 | static gboolean | 
| 550 | panel_popup_menu (CtkWidget *treeview, | 
| 551 | LapizDocumentsPanel *panel) | 
| 552 | { | 
| 553 | /* Only respond if the treeview is the actual focus */ | 
| 554 | if (ctk_window_get_focus (CTK_WINDOW (panel->priv->window)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->window)), ((ctk_window_get_type ()))) )))) == treeview) | 
| 555 | { | 
| 556 | return show_popup_menu (panel, NULL((void*)0)); | 
| 557 | } | 
| 558 | |
| 559 | return FALSE(0); | 
| 560 | } | 
| 561 | |
| 562 | static gboolean | 
| 563 | treeview_query_tooltip (CtkWidget *widget, | 
| 564 | gint x, | 
| 565 | gint y, | 
| 566 | gboolean keyboard_tip, | 
| 567 | CtkTooltip *tooltip, | 
| 568 | gpointer data G_GNUC_UNUSED__attribute__ ((__unused__))) | 
| 569 | { | 
| 570 | CtkTreeIter iter; | 
| 571 | CtkTreeView *tree_view = CTK_TREE_VIEW (widget)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((widget)), ((ctk_tree_view_get_type ())))))); | 
| 572 | CtkTreeModel *model = ctk_tree_view_get_model (tree_view); | 
| 573 | CtkTreePath *path = NULL((void*)0); | 
| 574 | gpointer *tab; | 
| 575 | gchar *tip; | 
| 576 | |
| 577 | if (keyboard_tip) | 
| 578 | { | 
| 579 | ctk_tree_view_get_cursor (tree_view, &path, NULL((void*)0)); | 
| 580 | |
| 581 | if (path == NULL((void*)0)) | 
| 582 | { | 
| 583 | return FALSE(0); | 
| 584 | } | 
| 585 | } | 
| 586 | else | 
| 587 | { | 
| 588 | gint bin_x, bin_y; | 
| 589 | |
| 590 | ctk_tree_view_convert_widget_to_bin_window_coords (tree_view, | 
| 591 | x, y, | 
| 592 | &bin_x, &bin_y); | 
| 593 | |
| 594 | if (!ctk_tree_view_get_path_at_pos (tree_view, | 
| 595 | bin_x, bin_y, | 
| 596 | &path, | 
| 597 | NULL((void*)0), NULL((void*)0), NULL((void*)0))) | 
| 598 | { | 
| 599 | return FALSE(0); | 
| 600 | } | 
| 601 | } | 
| 602 | |
| 603 | ctk_tree_model_get_iter (model, &iter, path); | 
| 604 | ctk_tree_model_get (model, | 
| 605 | &iter, | 
| 606 | TAB_COLUMN, | 
| 607 | &tab, | 
| 608 | -1); | 
| 609 | |
| 610 | tip = _lapiz_tab_get_tooltips (LAPIZ_TAB (tab)((((LapizTab*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((tab)), ((lapiz_tab_get_type()))))))); | 
| Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption | |
| 611 | ctk_tooltip_set_markup (tooltip, tip); | 
| 612 | |
| 613 | g_free (tip); | 
| 614 | ctk_tree_path_free (path); | 
| 615 | |
| 616 | return TRUE(!(0)); | 
| 617 | } | 
| 618 | |
| 619 | static void | 
| 620 | treeview_row_inserted (CtkTreeModel *tree_model G_GNUC_UNUSED__attribute__ ((__unused__)), | 
| 621 | CtkTreePath *path, | 
| 622 | CtkTreeIter *iter G_GNUC_UNUSED__attribute__ ((__unused__)), | 
| 623 | LapizDocumentsPanel *panel) | 
| 624 | { | 
| 625 | LapizTab *tab; | 
| 626 | gint *indeces; | 
| 627 | CtkWidget *nb; | 
| 628 | gint old_position; | 
| 629 | gint new_position; | 
| 630 | |
| 631 | if (panel->priv->adding_tab) | 
| 632 | return; | 
| 633 | |
| 634 | tab = lapiz_window_get_active_tab (panel->priv->window); | 
| 635 | g_return_if_fail (tab != NULL)do { if ((tab != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "tab != NULL"); return ; } } while (0); | 
| 636 | |
| 637 | panel->priv->is_reodering = TRUE(!(0)); | 
| 638 | |
| 639 | indeces = ctk_tree_path_get_indices (path); | 
| 640 | |
| 641 | /* g_debug ("New Index: %d (path: %s)", indeces[0], ctk_tree_path_to_string (path));*/ | 
| 642 | |
| 643 | nb = _lapiz_window_get_notebook (panel->priv->window); | 
| 644 | |
| 645 | new_position = indeces[0]; | 
| 646 | old_position = ctk_notebook_page_num (CTK_NOTEBOOK (nb)((((CtkNotebook*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((nb)), ((ctk_notebook_get_type ())))))), | 
| 647 | CTK_WIDGET (tab)((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((tab)), ((ctk_widget_get_type ()))))))); | 
| 648 | if (new_position > old_position) | 
| 649 | new_position = MAX (0, new_position - 1)(((0) > (new_position - 1)) ? (0) : (new_position - 1)); | 
| 650 | |
| 651 | lapiz_notebook_reorder_tab (LAPIZ_NOTEBOOK (nb)((((LapizNotebook*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((nb)), ((lapiz_notebook_get_type ())))))), | 
| 652 | tab, | 
| 653 | new_position); | 
| 654 | |
| 655 | panel->priv->is_reodering = FALSE(0); | 
| 656 | } | 
| 657 | |
| 658 | static void | 
| 659 | lapiz_documents_panel_init (LapizDocumentsPanel *panel) | 
| 660 | { | 
| 661 | CtkWidget *sw; | 
| 662 | CtkTreeViewColumn *column; | 
| 663 | CtkCellRenderer *cell; | 
| 664 | CtkTreeSelection *selection; | 
| 665 | |
| 666 | panel->priv = lapiz_documents_panel_get_instance_private (panel); | 
| 667 | |
| 668 | panel->priv->adding_tab = FALSE(0); | 
| 669 | panel->priv->is_reodering = FALSE(0); | 
| 670 | |
| 671 | ctk_orientable_set_orientation (CTK_ORIENTABLE (panel)((((CtkOrientable*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel)), ((ctk_orientable_get_type ())))))), | 
| 672 | CTK_ORIENTATION_VERTICAL); | 
| 673 | |
| 674 | /* Create the scrolled window */ | 
| 675 | sw = ctk_scrolled_window_new (NULL((void*)0), NULL((void*)0)); | 
| 676 | g_return_if_fail (sw != NULL)do { if ((sw != ((void*)0))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__)), "sw != NULL"); return ; } } while (0); | 
| 677 | |
| 678 | ctk_scrolled_window_set_policy (CTK_SCROLLED_WINDOW (sw)((((CtkScrolledWindow*) (void *) g_type_check_instance_cast ( (GTypeInstance*) ((sw)), ((ctk_scrolled_window_get_type ()))) ))), | 
| 679 | CTK_POLICY_AUTOMATIC, | 
| 680 | CTK_POLICY_AUTOMATIC); | 
| 681 | ctk_scrolled_window_set_shadow_type (CTK_SCROLLED_WINDOW (sw)((((CtkScrolledWindow*) (void *) g_type_check_instance_cast ( (GTypeInstance*) ((sw)), ((ctk_scrolled_window_get_type ()))) ))), | 
| 682 | CTK_SHADOW_IN); | 
| 683 | ctk_widget_show (sw); | 
| 684 | ctk_box_pack_start (CTK_BOX (panel)((((CtkBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel)), ((ctk_box_get_type ())))))), sw, TRUE(!(0)), TRUE(!(0)), 0); | 
| 685 | |
| 686 | /* Create the empty model */ | 
| 687 | panel->priv->model = CTK_TREE_MODEL (ctk_list_store_new (N_COLUMNS,((((CtkTreeModel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_list_store_new (N_COLUMNS, (gdk_pixbuf_get_type ()), ((GType) ((16) << (2))), ((GType) ((17) << (2))) ))), ((ctk_tree_model_get_type ())))))) | 
| 688 | GDK_TYPE_PIXBUF,((((CtkTreeModel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_list_store_new (N_COLUMNS, (gdk_pixbuf_get_type ()), ((GType) ((16) << (2))), ((GType) ((17) << (2))) ))), ((ctk_tree_model_get_type ())))))) | 
| 689 | G_TYPE_STRING,((((CtkTreeModel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_list_store_new (N_COLUMNS, (gdk_pixbuf_get_type ()), ((GType) ((16) << (2))), ((GType) ((17) << (2))) ))), ((ctk_tree_model_get_type ())))))) | 
| 690 | G_TYPE_POINTER))((((CtkTreeModel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_list_store_new (N_COLUMNS, (gdk_pixbuf_get_type ()), ((GType) ((16) << (2))), ((GType) ((17) << (2))) ))), ((ctk_tree_model_get_type ())))))); | 
| 691 | |
| 692 | /* Create the treeview */ | 
| 693 | panel->priv->treeview = ctk_tree_view_new_with_model (panel->priv->model); | 
| 694 | g_object_unref (G_OBJECT (panel->priv->model)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->model)), (((GType) ((20) << (2) )))))))); | 
| 695 | ctk_container_add (CTK_CONTAINER (sw)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((sw)), ((ctk_container_get_type ())))))), panel->priv->treeview); | 
| 696 | ctk_tree_view_set_headers_visible (CTK_TREE_VIEW (panel->priv->treeview)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->treeview)), ((ctk_tree_view_get_type ( ))))))), FALSE(0)); | 
| 697 | ctk_tree_view_set_reorderable (CTK_TREE_VIEW (panel->priv->treeview)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->treeview)), ((ctk_tree_view_get_type ( ))))))), TRUE(!(0))); | 
| 698 | |
| 699 | g_object_set (panel->priv->treeview, "has-tooltip", TRUE(!(0)), NULL((void*)0)); | 
| 700 | |
| 701 | ctk_widget_show (panel->priv->treeview); | 
| 702 | |
| 703 | column = ctk_tree_view_column_new (); | 
| 704 | ctk_tree_view_column_set_title (column, _("Documents")gettext ("Documents")); | 
| 705 | |
| 706 | cell = ctk_cell_renderer_pixbuf_new (); | 
| 707 | ctk_tree_view_column_pack_start (column, cell, FALSE(0)); | 
| 708 | ctk_tree_view_column_add_attribute (column, cell, "pixbuf", PIXBUF_COLUMN); | 
| 709 | cell = ctk_cell_renderer_text_new (); | 
| 710 | ctk_tree_view_column_pack_start (column, cell, TRUE(!(0))); | 
| 711 | ctk_tree_view_column_add_attribute (column, cell, "markup", NAME_COLUMN); | 
| 712 | |
| 713 | ctk_tree_view_append_column (CTK_TREE_VIEW (panel->priv->treeview)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->treeview)), ((ctk_tree_view_get_type ( ))))))), | 
| 714 | column); | 
| 715 | |
| 716 | selection = ctk_tree_view_get_selection ( | 
| 717 | CTK_TREE_VIEW (panel->priv->treeview)((((CtkTreeView*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((panel->priv->treeview)), ((ctk_tree_view_get_type ( )))))))); | 
| 718 | |
| 719 | ctk_tree_selection_set_mode (selection, CTK_SELECTION_SINGLE); | 
| 720 | |
| 721 | g_signal_connect (panel->priv->treeview,g_signal_connect_data ((panel->priv->treeview), ("cursor_changed" ), (((GCallback) (treeview_cursor_changed))), (panel), ((void *)0), (GConnectFlags) 0) | 
| 722 | "cursor_changed",g_signal_connect_data ((panel->priv->treeview), ("cursor_changed" ), (((GCallback) (treeview_cursor_changed))), (panel), ((void *)0), (GConnectFlags) 0) | 
| 723 | G_CALLBACK (treeview_cursor_changed),g_signal_connect_data ((panel->priv->treeview), ("cursor_changed" ), (((GCallback) (treeview_cursor_changed))), (panel), ((void *)0), (GConnectFlags) 0) | 
| 724 | panel)g_signal_connect_data ((panel->priv->treeview), ("cursor_changed" ), (((GCallback) (treeview_cursor_changed))), (panel), ((void *)0), (GConnectFlags) 0); | 
| 725 | g_signal_connect (panel->priv->treeview,g_signal_connect_data ((panel->priv->treeview), ("button-press-event" ), (((GCallback) (panel_button_press_event))), (panel), ((void *)0), (GConnectFlags) 0) | 
| 726 | "button-press-event",g_signal_connect_data ((panel->priv->treeview), ("button-press-event" ), (((GCallback) (panel_button_press_event))), (panel), ((void *)0), (GConnectFlags) 0) | 
| 727 | G_CALLBACK (panel_button_press_event),g_signal_connect_data ((panel->priv->treeview), ("button-press-event" ), (((GCallback) (panel_button_press_event))), (panel), ((void *)0), (GConnectFlags) 0) | 
| 728 | panel)g_signal_connect_data ((panel->priv->treeview), ("button-press-event" ), (((GCallback) (panel_button_press_event))), (panel), ((void *)0), (GConnectFlags) 0); | 
| 729 | g_signal_connect (panel->priv->treeview,g_signal_connect_data ((panel->priv->treeview), ("popup-menu" ), (((GCallback) (panel_popup_menu))), (panel), ((void*)0), ( GConnectFlags) 0) | 
| 730 | "popup-menu",g_signal_connect_data ((panel->priv->treeview), ("popup-menu" ), (((GCallback) (panel_popup_menu))), (panel), ((void*)0), ( GConnectFlags) 0) | 
| 731 | G_CALLBACK (panel_popup_menu),g_signal_connect_data ((panel->priv->treeview), ("popup-menu" ), (((GCallback) (panel_popup_menu))), (panel), ((void*)0), ( GConnectFlags) 0) | 
| 732 | panel)g_signal_connect_data ((panel->priv->treeview), ("popup-menu" ), (((GCallback) (panel_popup_menu))), (panel), ((void*)0), ( GConnectFlags) 0); | 
| 733 | g_signal_connect (panel->priv->treeview,g_signal_connect_data ((panel->priv->treeview), ("query-tooltip" ), (((GCallback) (treeview_query_tooltip))), (((void*)0)), (( void*)0), (GConnectFlags) 0) | 
| 734 | "query-tooltip",g_signal_connect_data ((panel->priv->treeview), ("query-tooltip" ), (((GCallback) (treeview_query_tooltip))), (((void*)0)), (( void*)0), (GConnectFlags) 0) | 
| 735 | G_CALLBACK (treeview_query_tooltip),g_signal_connect_data ((panel->priv->treeview), ("query-tooltip" ), (((GCallback) (treeview_query_tooltip))), (((void*)0)), (( void*)0), (GConnectFlags) 0) | 
| 736 | NULL)g_signal_connect_data ((panel->priv->treeview), ("query-tooltip" ), (((GCallback) (treeview_query_tooltip))), (((void*)0)), (( void*)0), (GConnectFlags) 0); | 
| 737 | |
| 738 | g_signal_connect (panel->priv->model,g_signal_connect_data ((panel->priv->model), ("row-inserted" ), (((GCallback) (treeview_row_inserted))), (panel), ((void*) 0), (GConnectFlags) 0) | 
| 739 | "row-inserted",g_signal_connect_data ((panel->priv->model), ("row-inserted" ), (((GCallback) (treeview_row_inserted))), (panel), ((void*) 0), (GConnectFlags) 0) | 
| 740 | G_CALLBACK (treeview_row_inserted),g_signal_connect_data ((panel->priv->model), ("row-inserted" ), (((GCallback) (treeview_row_inserted))), (panel), ((void*) 0), (GConnectFlags) 0) | 
| 741 | panel)g_signal_connect_data ((panel->priv->model), ("row-inserted" ), (((GCallback) (treeview_row_inserted))), (panel), ((void*) 0), (GConnectFlags) 0); | 
| 742 | } | 
| 743 | |
| 744 | CtkWidget * | 
| 745 | lapiz_documents_panel_new (LapizWindow *window) | 
| 746 | { | 
| 747 | g_return_val_if_fail (LAPIZ_IS_WINDOW (window), NULL)do { if (((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance *) ((window)); GType __t = ((lapiz_window_get_type())); gboolean __r; if (!__inst) __r = (0); else if (__inst->g_class && __inst->g_class->g_type == __t) __r = (!(0)); else __r = g_type_check_instance_is_a (__inst, __t); __r; })))))) { } else { g_return_if_fail_warning (((gchar*) 0), ((const char* ) (__func__)), "LAPIZ_IS_WINDOW (window)"); return (((void*)0 )); } } while (0); | 
| 748 | |
| 749 | return CTK_WIDGET (g_object_new (LAPIZ_TYPE_DOCUMENTS_PANEL,((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((g_object_new ((lapiz_documents_panel_get_type()), "window" , window, ((void*)0)))), ((ctk_widget_get_type ())))))) | 
| 750 | "window", window,((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((g_object_new ((lapiz_documents_panel_get_type()), "window" , window, ((void*)0)))), ((ctk_widget_get_type ())))))) | 
| 751 | NULL))((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((g_object_new ((lapiz_documents_panel_get_type()), "window" , window, ((void*)0)))), ((ctk_widget_get_type ())))))); | 
| 752 | } |