static void fm_places_view_init(FmPlacesView *self) { GtkTreeViewColumn* col; GtkCellRenderer* renderer; GtkTargetList* targets; GdkPixbuf* pix; guint handler; if(G_UNLIKELY(!model)) { model = fm_places_model_new(); g_object_add_weak_pointer(G_OBJECT(model), &model); } else g_object_ref(model); gtk_tree_view_set_model(GTK_TREE_VIEW(self), model); g_object_unref(model); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(self), FALSE); gtk_tree_view_set_row_separator_func(GTK_TREE_VIEW(self), (GtkTreeViewRowSeparatorFunc)sep_func, NULL, NULL ); col = gtk_tree_view_column_new(); renderer = fm_cell_renderer_pixbuf_new(); handler = g_signal_connect(fm_config, "changed::pane_icon_size", G_CALLBACK(on_renderer_icon_size_changed), renderer); g_object_weak_ref(G_OBJECT(renderer), (GDestroyNotify)on_cell_renderer_pixbuf_destroy, GUINT_TO_POINTER(handler)); fm_cell_renderer_pixbuf_set_fixed_size(FM_CELL_RENDERER_PIXBUF(renderer), fm_config->pane_icon_size, fm_config->pane_icon_size); gtk_tree_view_column_pack_start( col, renderer, FALSE ); gtk_tree_view_column_set_attributes( col, renderer, "pixbuf", FM_PLACES_MODEL_COL_ICON, NULL ); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start( col, renderer, TRUE ); g_object_set(renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_tree_view_column_set_attributes( col, renderer, "text", FM_PLACES_MODEL_COL_LABEL, NULL ); renderer = gtk_cell_renderer_pixbuf_new(); self->mount_indicator_renderer = renderer; gtk_tree_view_column_pack_start( col, renderer, FALSE ); gtk_cell_layout_set_cell_data_func(GTK_CELL_LAYOUT(col), renderer, fm_places_model_mount_indicator_cell_data_func, NULL, NULL); gtk_tree_view_append_column ( GTK_TREE_VIEW(self), col ); gtk_tree_view_enable_model_drag_source(GTK_TREE_VIEW(self), GDK_BUTTON1_MASK, dnd_src_targets, G_N_ELEMENTS(dnd_src_targets), GDK_ACTION_MOVE); gtk_drag_dest_set(self, 0, fm_default_dnd_dest_targets, N_FM_DND_DEST_DEFAULT_TARGETS, GDK_ACTION_COPY|GDK_ACTION_MOVE|GDK_ACTION_LINK|GDK_ACTION_ASK); targets = gtk_drag_dest_get_target_list((GtkWidget*)self); /* add our own targets */ gtk_target_list_add_table(targets, dnd_dest_targets, G_N_ELEMENTS(dnd_dest_targets)); self->dnd_dest = fm_dnd_dest_new((GtkWidget*)self); g_signal_connect(self->dnd_dest, "files_dropped", G_CALLBACK(on_dnd_dest_files_dropped), self); }
static VALUE rg_add_table(VALUE self, VALUE rbtargets) { GtkTargetList *list = _SELF(self); long n; GtkTargetEntry *targets = RVAL2GTKTARGETENTRIES(rbtargets, &n); gtk_target_list_add_table(list, targets, n); g_free(targets); return self; }
static void wikipad_document_init (WikipadDocument *document) { GtkTargetList *target_list; /* private structure */ document->priv = WIKIPAD_DOCUMENT_GET_PRIVATE (document); /* initialize the variables */ document->priv->utf8_filename = NULL; document->priv->utf8_basename = NULL; document->priv->label = NULL; /* setup the scolled window */ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (document), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (document), GTK_SHADOW_ETCHED_IN); gtk_scrolled_window_set_hadjustment (GTK_SCROLLED_WINDOW (document), NULL); gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (document), NULL); /* create a textbuffer */ document->buffer = GTK_TEXT_BUFFER (gtk_source_buffer_new (NULL)); /* initialize the file */ document->file = wikipad_file_new (document->buffer); /* connect signals to the file */ g_signal_connect_swapped (G_OBJECT (document->file), "filename-changed", G_CALLBACK (wikipad_document_filename_changed), document); /* create the highlight tag */ document->tag = gtk_text_buffer_create_tag (document->buffer, NULL, "background", "#ffff78", NULL); /* setup the textview */ document->textview = g_object_new (WIKIPAD_TYPE_VIEW, "buffer", document->buffer, NULL); gtk_container_add (GTK_CONTAINER (document), GTK_WIDGET (document->textview)); gtk_widget_show (GTK_WIDGET (document->textview)); /* also allow dropping of uris and tabs in the textview */ target_list = gtk_drag_dest_get_target_list (GTK_WIDGET (document->textview)); gtk_target_list_add_table (target_list, drop_targets, G_N_ELEMENTS (drop_targets)); /* attach signals to the text view and buffer */ g_signal_connect (G_OBJECT (document->buffer), "notify::cursor-position", G_CALLBACK (wikipad_document_notify_cursor_position), document); g_signal_connect (G_OBJECT (document->buffer), "notify::has-selection", G_CALLBACK (wikipad_document_notify_has_selection), document); g_signal_connect_swapped (G_OBJECT (document->buffer), "modified-changed", G_CALLBACK (wikipad_document_label_color), document); g_signal_connect_swapped (G_OBJECT (document->file), "readonly-changed", G_CALLBACK (wikipad_document_label_color), document); g_signal_connect (G_OBJECT (document->textview), "notify::overwrite", G_CALLBACK (wikipad_document_notify_overwrite), document); g_signal_connect (G_OBJECT (document->textview), "drag-data-received", G_CALLBACK (wikipad_document_drag_data_received), document); g_signal_connect (G_OBJECT (document->buffer), "notify::language", G_CALLBACK (wikipad_document_notify_language), document); }
static void fm_places_view_init(FmPlacesView *self) { GtkTreeViewColumn* col; GtkCellRenderer* renderer; GtkTargetList* targets; GdkPixbuf* pix; guint handler; init_model(); gtk_tree_view_set_model(GTK_TREE_VIEW(self), model); g_object_unref(model); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(self), FALSE); gtk_tree_view_set_row_separator_func(GTK_TREE_VIEW(self), (GtkTreeViewRowSeparatorFunc)sep_func, NULL, NULL ); col = gtk_tree_view_column_new(); renderer = fm_cell_renderer_pixbuf_new(); handler = g_signal_connect(fm_config, "changed::pane_icon_size", G_CALLBACK(on_renderer_icon_size_changed), renderer); g_object_weak_ref(G_OBJECT(renderer), (GDestroyNotify)on_cell_renderer_pixbuf_destroy, GUINT_TO_POINTER(handler)); fm_cell_renderer_pixbuf_set_fixed_size(FM_CELL_RENDERER_PIXBUF(renderer), fm_config->pane_icon_size, fm_config->pane_icon_size); gtk_tree_view_column_pack_start( col, renderer, FALSE ); gtk_tree_view_column_set_attributes( col, renderer, "pixbuf", COL_ICON, NULL ); renderer = gtk_cell_renderer_text_new(); // g_signal_connect( renderer, "edited", G_CALLBACK(on_bookmark_edited), view ); gtk_tree_view_column_pack_start( col, renderer, TRUE ); gtk_tree_view_column_set_attributes( col, renderer, "text", COL_LABEL, NULL ); gtk_tree_view_append_column ( GTK_TREE_VIEW(self), col ); /* gtk_drag_source_set(fv->view, GDK_BUTTON1_MASK, fm_default_dnd_src_targets, N_FM_DND_SRC_DEFAULT_TARGETS, GDK_ACTION_COPY|GDK_ACTION_MOVE|GDK_ACTION_LINK|GDK_ACTION_ASK); fm_dnd_src_set_widget(fv->dnd_src, fv->view); */ gtk_drag_dest_set(self, 0, fm_default_dnd_dest_targets, N_FM_DND_DEST_DEFAULT_TARGETS, GDK_ACTION_COPY|GDK_ACTION_MOVE|GDK_ACTION_LINK|GDK_ACTION_ASK); targets = gtk_drag_dest_get_target_list((GtkWidget*)self); /* add our own targets */ gtk_target_list_add_table(targets, dnd_dest_targets, G_N_ELEMENTS(dnd_dest_targets)); self->dnd_dest = fm_dnd_dest_new((GtkWidget*)self); g_signal_connect(self->dnd_dest, "query-info", G_CALLBACK(on_dnd_dest_query_info), self); g_signal_connect(self->dnd_dest, "files_dropped", G_CALLBACK(on_dnd_dest_files_dropped), self); }