static void gedit_documents_panel_init (GeditDocumentsPanel *panel) { GtkWidget *sw; GtkTreeViewColumn *column; GtkCellRenderer *cell; GtkTreeSelection *selection; GIcon *icon; gedit_debug (DEBUG_PANEL); panel->priv = GEDIT_DOCUMENTS_PANEL_GET_PRIVATE (panel); panel->priv->adding_tab = FALSE; panel->priv->is_reodering = FALSE; gtk_orientable_set_orientation (GTK_ORIENTABLE (panel), GTK_ORIENTATION_VERTICAL); /* Create the scrolled window */ sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_show (sw); gtk_box_pack_start (GTK_BOX (panel), sw, TRUE, TRUE, 0); /* Create the empty model */ panel->priv->model = GTK_TREE_MODEL (gtk_tree_store_new (N_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_OBJECT, G_TYPE_OBJECT)); /* Create the treeview */ panel->priv->treeview = gtk_tree_view_new_with_model (panel->priv->model); g_object_unref (G_OBJECT (panel->priv->model)); gtk_container_add (GTK_CONTAINER (sw), panel->priv->treeview); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (panel->priv->treeview), FALSE); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (panel->priv->treeview), FALSE); /* TODO */ gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (panel->priv->treeview), FALSE); gtk_tree_view_set_level_indentation (GTK_TREE_VIEW (panel->priv->treeview), 18); /* Disable search because each time the selection is changed, the active tab is changed which focuses the view, and thus would remove the search entry, rendering it useless */ gtk_tree_view_set_enable_search (GTK_TREE_VIEW (panel->priv->treeview), FALSE); /* Disable focus so it doesn't steal focus each time from the view */ gtk_widget_set_can_focus (panel->priv->treeview, FALSE); gtk_widget_set_has_tooltip (panel->priv->treeview, TRUE); gtk_widget_show (panel->priv->treeview); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, _("Documents")); cell = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (column, cell, FALSE); gtk_tree_view_column_add_attribute (column, cell, "pixbuf", PIXBUF_COLUMN); gtk_tree_view_column_set_cell_data_func (column, cell, (GtkTreeCellDataFunc)pixbuf_data_func, panel, NULL); cell = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (column, cell, TRUE); gtk_tree_view_column_add_attribute (column, cell, "markup", NAME_COLUMN); gtk_tree_view_append_column (GTK_TREE_VIEW (panel->priv->treeview), column); cell = gedit_cell_renderer_button_new (); icon = g_themed_icon_new_with_default_fallbacks ("window-close-symbolic"); g_object_set (cell, "gicon", icon, NULL); g_object_unref (icon); gtk_tree_view_column_pack_end (column, cell, FALSE); g_signal_connect (cell, "clicked", G_CALLBACK (close_button_clicked), panel); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (panel->priv->treeview)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); panel->priv->selection_changed_handler_id = g_signal_connect (selection, "changed", G_CALLBACK (treeview_selection_changed), panel); g_signal_connect (panel->priv->treeview, "button-press-event", G_CALLBACK (panel_button_press_event), panel); g_signal_connect (panel->priv->treeview, "query-tooltip", G_CALLBACK (treeview_query_tooltip), panel); /* g_signal_connect (panel->priv->model, "row-inserted", G_CALLBACK (treeview_row_inserted), panel);*/ }
void fx_many_initialize(FxMany* fxmany) { GtkWidget *lt_frame , *lb_frame , *scrollwindow , *scrollwindow1 , *rbox , *lbox; GtkWidget *close_button , *send_button; GtkTreeModel *model , *model1; GtkWidget *action_area = NULL; GdkPixbuf *pb = NULL; fxmany->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); GtkWidget *vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (fxmany->window), vbox); pb = gdk_pixbuf_new_from_file(SKIN_DIR"groupsend.png" , NULL); if(pb != NULL){ gtk_window_set_icon(GTK_WINDOW(fxmany->window) , pb); g_object_unref(pb); } gtk_window_set_title(GTK_WINDOW(fxmany->window) , _("SMS To Many")); gtk_widget_set_usize(fxmany->window , 660 , 520); g_signal_connect(fxmany->window , "key-press-event" , G_CALLBACK(key_press_func) , fxmany); gtk_container_set_border_width(GTK_CONTAINER(fxmany->window) , 5); fxmany->hbox = gtk_hbox_new(FALSE , 0); gtk_box_pack_start(GTK_BOX(vbox) , fxmany->hbox , TRUE , TRUE , 0); rbox = gtk_vbox_new(FALSE , 0); lbox = gtk_vbox_new(FALSE , 0); gtk_box_pack_start(GTK_BOX(fxmany->hbox) , rbox , TRUE , TRUE , 5); gtk_box_pack_start(GTK_BOX(fxmany->hbox) , lbox , FALSE , FALSE , 5); /*left top area*/ lt_frame = gtk_frame_new(_("Choose Contacts")); gtk_widget_set_usize(lt_frame , 180 , 0); model = fx_many_create_all_model(fxmany); fxmany->tree = gtk_tree_view_new_with_model(model); scrollwindow = gtk_scrolled_window_new(NULL , NULL); gtk_container_add(GTK_CONTAINER(scrollwindow) , fxmany->tree); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwindow) , GTK_POLICY_NEVER , GTK_POLICY_AUTOMATIC); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(fxmany->tree) , FALSE); //gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (fxmany->tree), TRUE); gtk_tree_view_set_level_indentation(GTK_TREE_VIEW(fxmany->tree) , -35); gtk_tree_view_set_hover_selection(GTK_TREE_VIEW(fxmany->tree) , TRUE); gtk_tree_view_columns_autosize(GTK_TREE_VIEW(fxmany->tree)); fx_many_create_all_column(fxmany); gtk_box_pack_start(GTK_BOX(lbox) , lt_frame , TRUE , TRUE , 5); gtk_container_add(GTK_CONTAINER(lt_frame) , scrollwindow); gtk_frame_set_shadow_type(GTK_FRAME(lt_frame) , GTK_SHADOW_IN); /*left bottom area*/ model1 = fx_many_create_choosed_model(); fxmany->selected = gtk_tree_view_new_with_model(model1); scrollwindow1 = gtk_scrolled_window_new(NULL , NULL); gtk_container_add(GTK_CONTAINER(scrollwindow1) , fxmany->selected); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwindow1) , GTK_POLICY_NEVER , GTK_POLICY_AUTOMATIC); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(fxmany->selected) , FALSE); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (fxmany->selected), TRUE); gtk_tree_view_set_level_indentation(GTK_TREE_VIEW(fxmany->selected) , 0); gtk_tree_view_set_hover_selection(GTK_TREE_VIEW(fxmany->selected) , TRUE); gtk_tree_view_columns_autosize(GTK_TREE_VIEW(fxmany->selected)); fx_many_create_selected_column(fxmany); lb_frame = gtk_frame_new(_("Contacts Selected")); gtk_widget_set_usize(lb_frame , 0 , 160); gtk_box_pack_start(GTK_BOX(lbox) , lb_frame , FALSE , FALSE , 5); gtk_container_add(GTK_CONTAINER(lb_frame) , scrollwindow1); /*right area*/ fxmany->label = gtk_label_new(""); gtk_label_set_markup(GTK_LABEL(fxmany->label) , _("Choosed [<span color=\"red\">0</span>] contacts, " "[<span color=\"red\">10000</span>] more available")); gtk_box_pack_start(GTK_BOX(rbox) , fxmany->label , FALSE , FALSE , 5); gtk_widget_set_usize(fxmany->label , 200 , 20); fxmany->recv_scroll = gtk_scrolled_window_new(NULL , NULL); gtk_box_pack_start(GTK_BOX(rbox) , fxmany->recv_scroll , TRUE , TRUE , 5); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(fxmany->recv_scroll) , GTK_POLICY_NEVER , GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(fxmany->recv_scroll) , GTK_SHADOW_ETCHED_IN); fxmany->recv_text = gtk_text_view_new(); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(fxmany->recv_text) , FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(fxmany->recv_text) , GTK_WRAP_CHAR); gtk_text_view_set_editable(GTK_TEXT_VIEW(fxmany->recv_text) , FALSE); gtk_container_add(GTK_CONTAINER(fxmany->recv_scroll) , fxmany->recv_text); fxmany->recv_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(fxmany->recv_text)); gtk_text_buffer_create_tag(fxmany->recv_buffer , "blue" , "foreground" , "blue" , NULL); gtk_text_buffer_create_tag(fxmany->recv_buffer , "red" , "foreground" , "red" , NULL); gtk_text_buffer_create_tag(fxmany->recv_buffer , "lm10" , "left_margin" , 10 , NULL); gtk_text_buffer_get_end_iter(fxmany->recv_buffer , &fxmany->recv_iter); gtk_text_buffer_create_mark(fxmany->recv_buffer , "scroll" , &fxmany->recv_iter , FALSE); fxmany->send_scroll = gtk_scrolled_window_new(NULL , NULL); gtk_box_pack_start(GTK_BOX(rbox) , fxmany->send_scroll , FALSE , FALSE , 5); gtk_widget_set_usize(fxmany->send_scroll , 0 , 120); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(fxmany->send_scroll) , GTK_POLICY_NEVER , GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(fxmany->send_scroll) , GTK_SHADOW_ETCHED_IN); fxmany->send_text = gtk_text_view_new(); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(fxmany->send_text) , GTK_WRAP_CHAR); // g_signal_connect(send_text , "key_press_event" , G_CALLBACK(ctrlpressed) , pthis); gtk_container_add(GTK_CONTAINER(fxmany->send_scroll) , fxmany->send_text); fxmany->send_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(fxmany->send_text)); gtk_text_buffer_get_iter_at_offset(fxmany->send_buffer , &fxmany->send_iter , 0); action_area = gtk_hbox_new(FALSE , 0); gtk_box_pack_start(GTK_BOX(vbox) , action_area , FALSE , FALSE , 10); close_button = gtk_button_new_with_label(_("Close")); gtk_widget_set_usize(close_button , 100 , 30); gtk_box_pack_end(GTK_BOX(action_area) , close_button , FALSE , TRUE , 2); g_signal_connect(close_button , "clicked" , G_CALLBACK(fx_many_on_close_clicked) , fxmany->window); send_button = gtk_button_new_with_label(_("Send")); gtk_widget_set_usize(send_button , 100 , 30); gtk_box_pack_end(GTK_BOX(action_area) , send_button , FALSE , TRUE , 2); g_signal_connect(send_button , "clicked" , G_CALLBACK(fx_many_on_send_clicked) , fxmany); gtk_window_set_position(GTK_WINDOW(fxmany->window) , GTK_WIN_POS_CENTER); GTK_WIDGET_SET_FLAGS(fxmany->send_text, GTK_CAN_FOCUS); gtk_widget_grab_focus(fxmany->send_text); gtk_widget_show_all(fxmany->window); }
/* * create variables tree view widget * arguments: * on_render_name - custom name column renderer function * on_expression_changed - callback to call on expression changed */ GtkWidget* vtree_create(watch_render_name on_render_name, watch_expression_changed on_expression_changed) { /* create tree view */ GtkCellRenderer *renderer; GtkCellRenderer *icon_renderer; GtkTreeViewColumn *column; GtkTreeStore* store = gtk_tree_store_new ( W_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); GtkWidget* tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store)); g_object_unref(store); /* set tree view parameters */ gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), TRUE); gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(tree), TRUE); gtk_tree_view_set_level_indentation(GTK_TREE_VIEW(tree), 10); /* connect signals */ if (NULL != on_key_pressed) { g_signal_connect(G_OBJECT(tree), "key-press-event", G_CALLBACK (on_key_pressed), NULL); } /* create columns */ /* Name */ column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, _("Name")); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_end(column, renderer, TRUE); gtk_tree_view_column_set_attributes(column, renderer, "text", W_NAME, NULL); icon_renderer = gtk_cell_renderer_pixbuf_new (); g_object_set(icon_renderer, "follow-state", TRUE, NULL); gtk_tree_view_column_pack_end(column, icon_renderer, FALSE); gtk_tree_view_column_set_cell_data_func(column, icon_renderer, render_icon, NULL, NULL); gtk_tree_view_column_set_resizable (column, TRUE); if (on_render_name) gtk_tree_view_column_set_cell_data_func(column, renderer, on_render_name, NULL, NULL); if (on_expression_changed) { g_object_set (renderer, "editable", TRUE, NULL); g_signal_connect (G_OBJECT (renderer), "edited", G_CALLBACK (on_expression_changed), NULL); } gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); /* Value */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Value"), renderer, "text", W_VALUE, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, render_value, NULL, NULL); gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); /* Type */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Type"), renderer, "text", W_TYPE, NULL); gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); /* Last invisible column */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("", renderer, "text", W_LAST_VISIBLE, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); /* Internal (unvisible column) */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Internal", renderer, "text", W_INTERNAL, NULL); gtk_tree_view_column_set_visible(column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); /* Path expression (unvisible column) */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Expression", renderer, "text", W_EXPRESSION, NULL); gtk_tree_view_column_set_visible(column, FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); /* STUB (unvisible column) */ renderer = gtk_cell_renderer_toggle_new (); column = gtk_tree_view_column_new_with_attributes ("Need Update", renderer, "active", W_STUB, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); gtk_tree_view_column_set_visible(column, FALSE); /* Changed (unvisible column) */ renderer = gtk_cell_renderer_toggle_new (); column = gtk_tree_view_column_new_with_attributes ("Changed", renderer, "active", W_CHANGED, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); gtk_tree_view_column_set_visible(column, FALSE); return tree; }
static void setup_main_window (UmUserPanelPrivate *d) { GtkWidget *userlist; GtkTreeModel *model; GtkListStore *store; GtkTreeViewColumn *column; GtkCellRenderer *cell; GtkTreeSelection *selection; GtkWidget *button; GtkTreeIter iter; gint expander_size; gchar *title; GIcon *icon; gchar *names[3]; userlist = get_widget (d, "list-treeview"); store = gtk_list_store_new (NUM_USER_LIST_COLS, UM_TYPE_USER, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_BOOLEAN); model = (GtkTreeModel *)store; gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (model), sort_users, NULL, NULL); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); gtk_tree_view_set_model (GTK_TREE_VIEW (userlist), model); gtk_tree_view_set_search_column (GTK_TREE_VIEW (userlist), USER_COL); gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (userlist), match_user, NULL, NULL); g_object_unref (model); g_signal_connect (d->um, "users-loaded", G_CALLBACK (users_loaded), d); gtk_widget_style_get (userlist, "expander-size", &expander_size, NULL); gtk_tree_view_set_level_indentation (GTK_TREE_VIEW (userlist), - (expander_size + 6)); title = g_strdup_printf ("<small><span foreground=\"#555555\">%s</span></small>", _("My Account")); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, TITLE_COL, title, HEADING_ROW_COL, TRUE, SORT_KEY_COL, 0, AUTOLOGIN_COL, FALSE, -1); g_free (title); title = g_strdup_printf ("<small><span foreground=\"#555555\">%s</span></small>", _("Other Accounts")); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, TITLE_COL, title, HEADING_ROW_COL, TRUE, SORT_KEY_COL, 2, AUTOLOGIN_COL, FALSE, -1); g_free (title); column = gtk_tree_view_column_new (); cell = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), cell, FALSE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "pixbuf", FACE_COL); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "visible", USER_ROW_COL); cell = gtk_cell_renderer_text_new (); g_object_set (cell, "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), cell, TRUE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "markup", NAME_COL); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "visible", USER_ROW_COL); cell = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), cell, TRUE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "markup", TITLE_COL); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "visible", HEADING_ROW_COL); cell = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (column, cell, FALSE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "visible", USER_ROW_COL); gtk_tree_view_column_set_cell_data_func (column, cell, (GtkTreeCellDataFunc) autologin_cell_data_func, d, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (userlist), column); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (userlist)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE); g_signal_connect (selection, "changed", G_CALLBACK (selected_user_changed), d); gtk_tree_selection_set_select_function (selection, dont_select_headings, NULL, NULL); gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (get_widget (d, "list-scrolledwindow")), 300); gtk_widget_set_size_request (get_widget (d, "list-scrolledwindow"), 200, -1); button = get_widget (d, "add-user-toolbutton"); g_signal_connect (button, "clicked", G_CALLBACK (add_user), d); button = get_widget (d, "remove-user-toolbutton"); g_signal_connect (button, "clicked", G_CALLBACK (delete_user), d); button = get_widget (d, "user-icon-nonbutton"); add_unlock_tooltip (button); button = get_widget (d, "full-name-entry"); g_signal_connect (button, "editing-done", G_CALLBACK (change_name_done), d); button = get_widget (d, "account-type-combo"); g_signal_connect (button, "editing-done", G_CALLBACK (account_type_changed), d); button = get_widget (d, "account-password-button"); g_signal_connect (button, "start-editing", G_CALLBACK (change_password), d); button = get_widget (d, "account-language-combo"); g_signal_connect (button, "editing-done", G_CALLBACK (language_changed), d); button = get_widget (d, "autologin-switch"); g_signal_connect (button, "notify::active", G_CALLBACK (autologin_changed), d); button = get_widget (d, "account-fingerprint-button"); g_signal_connect (button, "clicked", G_CALLBACK (change_fingerprint), d); d->permission = (GPermission *)polkit_permission_new_sync ("org.freedesktop.accounts.user-administration", NULL, NULL, NULL); g_signal_connect (d->permission, "notify", G_CALLBACK (on_permission_changed), d); on_permission_changed (d->permission, NULL, d); button = get_widget (d, "add-user-toolbutton"); names[0] = "changes-allow-symbolic"; names[1] = "changes-allow"; names[2] = NULL; icon = (GIcon *)g_themed_icon_new_from_names (names, -1); setup_tooltip_with_embedded_icon (button, _("To create a user account,\nclick the * icon first"), "*", icon); button = get_widget (d, "remove-user-toolbutton"); setup_tooltip_with_embedded_icon (button, _("To delete the selected user account,\nclick the * icon first"), "*", icon); g_object_unref (icon); }
static void gb_book_links_construct (GbBookLinks *self) { GbBookLinksPrivate *priv; GtkWidget *swindow; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkTreeSelection *selection; priv = self->priv; swindow = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swindow), GTK_SHADOW_IN); /* Create tree view */ priv->tree_view = gtk_tree_view_new (); gtk_tree_view_set_activate_on_single_click (GTK_TREE_VIEW (priv->tree_view), TRUE); g_signal_connect_swapped (priv->tree_view, "row-activated", G_CALLBACK (schedule_emit_link_activated), self); gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (priv->tree_view), FALSE); gtk_tree_view_set_level_indentation (GTK_TREE_VIEW (priv->tree_view), 20); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->tree_view)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->tree_view), FALSE); gtk_container_add (GTK_CONTAINER (swindow), priv->tree_view); gtk_box_pack_start (GTK_BOX (self), swindow, TRUE, TRUE, 0); gtk_widget_show_all (GTK_WIDGET (self)); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_expand (GTK_TREE_VIEW_COLUMN (column), TRUE); gtk_tree_view_append_column (GTK_TREE_VIEW (priv->tree_view), column); renderer = (GtkCellRenderer *) g_object_new (GTK_TYPE_CELL_RENDERER_TEXT, "ellipsize", PANGO_ELLIPSIZE_END, "weight", PANGO_WEIGHT_BOLD, "xpad", 10, NULL); gtk_tree_view_column_pack_start (GTK_TREE_VIEW_COLUMN (column), renderer, TRUE); gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), renderer, "markup", BOOK_LINKS_COLUMN_MARKUP, NULL); renderer = gd_styled_text_renderer_new (); gd_styled_text_renderer_add_class (GD_STYLED_TEXT_RENDERER (renderer), "dim-label"); g_object_set (renderer, "max-width-chars", 12, "scale", PANGO_SCALE_SMALL, "xalign", 1.0, "xpad", 10, NULL); gtk_tree_view_column_pack_end (GTK_TREE_VIEW_COLUMN (column), renderer, FALSE); /* gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), renderer, "text", BOOK_LINKS_COLUMN_LABEL, NULL); */ priv->model = (GtkTreeModel *)gtk_list_store_new (BOOK_LINKS_COLUMN_N, G_TYPE_STRING, G_TYPE_STRING); }
static void cv_tree_init (chanview *cv) { GtkWidget *view, *win; GtkCellRenderer *renderer; GtkTreeViewColumn *col; int wid1, wid2; static const GtkTargetEntry dnd_src_target[] = { {"HEXCHAT_CHANVIEW", GTK_TARGET_SAME_APP, 75 } }; static const GtkTargetEntry dnd_dest_target[] = { {"HEXCHAT_USERLIST", GTK_TARGET_SAME_APP, 75 } }; win = gtk_scrolled_window_new (0, 0); /*gtk_container_set_border_width (GTK_CONTAINER (win), 1);*/ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (win), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (cv->box), win); gtk_widget_show (win); view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (cv->store)); gtk_widget_set_name (view, "hexchat-tree"); if (cv->style) gtk_widget_set_style (view, cv->style); /*gtk_widget_modify_base (view, GTK_STATE_NORMAL, &colors[COL_BG]);*/ GTK_WIDGET_UNSET_FLAGS (view, GTK_CAN_FOCUS); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); if (prefs.hex_gui_tab_dots) { gtk_tree_view_set_enable_tree_lines (GTK_TREE_VIEW (view), TRUE); } /* Indented channels with no server looks silly, but we still want expanders */ if (!prefs.hex_gui_tab_server) { gtk_widget_style_get (view, "expander-size", &wid1, "horizontal-separator", &wid2, NULL); gtk_tree_view_set_level_indentation (GTK_TREE_VIEW (view), -wid1 - wid2); } gtk_container_add (GTK_CONTAINER (win), view); col = gtk_tree_view_column_new(); /* icon column */ if (cv->use_icons) { renderer = gtk_cell_renderer_pixbuf_new (); if (prefs.hex_gui_compact) g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); gtk_tree_view_column_pack_start(col, renderer, FALSE); gtk_tree_view_column_set_attributes (col, renderer, "pixbuf", COL_PIXBUF, NULL); } /* main column */ renderer = gtk_cell_renderer_text_new (); if (prefs.hex_gui_compact) g_object_set (G_OBJECT (renderer), "ypad", 0, NULL); gtk_cell_renderer_text_set_fixed_height_from_font (GTK_CELL_RENDERER_TEXT (renderer), 1); gtk_tree_view_column_pack_start(col, renderer, TRUE); gtk_tree_view_column_set_attributes (col, renderer, "text", COL_NAME, "attributes", COL_ATTR, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(view), col); g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))), "changed", G_CALLBACK (cv_tree_sel_cb), cv); g_signal_connect (G_OBJECT (view), "button-press-event", G_CALLBACK (cv_tree_click_cb), cv); g_signal_connect (G_OBJECT (view), "row-activated", G_CALLBACK (cv_tree_activated_cb), NULL); gtk_drag_dest_set (view, GTK_DEST_DEFAULT_ALL, dnd_dest_target, 1, GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK); gtk_drag_source_set (view, GDK_BUTTON1_MASK, dnd_src_target, 1, GDK_ACTION_COPY); #ifndef WIN32 g_signal_connect (G_OBJECT (view), "drag_begin", G_CALLBACK (mg_drag_begin_cb), NULL); g_signal_connect (G_OBJECT (view), "drag_drop", G_CALLBACK (mg_drag_drop_cb), NULL); g_signal_connect (G_OBJECT (view), "drag_motion", G_CALLBACK (mg_drag_motion_cb), NULL); g_signal_connect (G_OBJECT (view), "drag_end", G_CALLBACK (mg_drag_end_cb), NULL); #endif ((treeview *)cv)->tree = GTK_TREE_VIEW (view); ((treeview *)cv)->scrollw = win; gtk_widget_show (view); }