static void column_clicked(GtkTreeViewColumn *column, gpointer user_data) { GtkTreeView *tree_view = GTK_TREE_VIEW(user_data); GtkTreeModel *model; gint column_id; gint cur_id; GtkSortType order; GtkTreeViewColumn *cur_column; GtkTreeViewColumn *button; if (gtk_widget_is_focus(GTK_WIDGET(tree_view)) == FALSE) { gtk_widget_grab_focus(GTK_WIDGET(tree_view)); } column_id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(column), "column_id")); model = gtk_tree_view_get_model(tree_view); /* 現在のソート列と同じときは昇順/降順を反転する、違うときはクリックした列で昇順ソートする */ if (gtk_tree_sortable_get_sort_column_id(GTK_TREE_SORTABLE(model), &cur_id, &order) == TRUE) { if (cur_id == column_id) { order = (order == GTK_SORT_ASCENDING) ? GTK_SORT_DESCENDING : GTK_SORT_ASCENDING; } else { order = GTK_SORT_ASCENDING; } cur_column = gtk_tree_view_get_column(tree_view, cur_id); gtk_tree_view_column_set_sort_indicator(cur_column, FALSE); } else { order = GTK_SORT_ASCENDING; } gtk_tree_view_column_set_sort_order(column, order); gtk_tree_view_column_set_sort_indicator(column, TRUE); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), column_id, order); }
static void reset_sort_order (FsearchApplicationWindow *win) { g_assert (FSEARCH_WINDOW_IS_WINDOW (win)); GList *list = gtk_tree_view_get_columns (GTK_TREE_VIEW (win->listview)); GList *l; for (l = list; l != NULL; l = l->next) { GtkTreeViewColumn *col = GTK_TREE_VIEW_COLUMN (l->data); if (l == list) { gtk_tree_view_column_set_sort_order (col, GTK_SORT_ASCENDING); gtk_tree_view_column_set_sort_indicator (col, TRUE); gtk_tree_view_column_set_sort_column_id (col, SORT_ID_NAME); } else { gtk_tree_view_column_set_sort_order (col, GTK_SORT_ASCENDING); gtk_tree_view_column_set_sort_indicator (col, FALSE); } } g_list_free (list); }
static void eds_column_clicked (GtkTreeViewColumn *column, PlannerPlugin *plugin) { GtkSortType order = gtk_tree_view_column_get_sort_order (column); GtkSortType new_order; if (order == GTK_SORT_ASCENDING) { new_order = GTK_SORT_DESCENDING; } else { new_order = GTK_SORT_ASCENDING; } gtk_tree_view_column_set_sort_order (column, new_order); }
void CMatchingDlg::SetSortMode(int column) { m_FrameSort = column; for (GSList *ptr=m_FrameCols; ptr!=NULL; ptr=ptr->next) { tColData *col = (tColData*)ptr->data; if (col->data->column == column) { gtk_tree_view_column_set_sort_indicator(col->col, true); GtkSortType dir = (column!=FCOL_STARS ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); gtk_tree_view_column_set_sort_order(col->col, dir); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(m_Frames), column, dir); } else { gtk_tree_view_column_set_sort_indicator(col->col, false); } } }
void create_column(void *view, int type, char *title, int width) { GtkTreeViewColumn *column; GtkCellRenderer *renderer; debug("create_column()"); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(title, renderer, "text", type, NULL); gtk_tree_view_column_set_title(column, title); gtk_tree_view_column_set_visible(column, TRUE); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_min_width(column, width); gtk_tree_view_column_set_alignment(column, 0.5); gtk_tree_view_column_set_clickable(column, TRUE); gtk_tree_view_column_set_reorderable(column, TRUE); gtk_tree_view_column_set_sort_order(column, 0); gtk_tree_view_append_column(GTK_TREE_VIEW(view), column); }
GtkWidget * scratch_tab_create() { GtkWidget *vbox = gtk_vbox_new(FALSE, 5); /* file list treeview */ filelist_treeview = gtk_tree_view_new (); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (filelist_treeview), TRUE); gtk_tree_view_set_reorderable(GTK_TREE_VIEW (filelist_treeview), FALSE); GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(filelist_treeview)); gtk_tree_selection_set_mode (sel, GTK_SELECTION_SINGLE); g_signal_connect (G_OBJECT(filelist_treeview), "cursor-changed", G_CALLBACK (filelist_treeview_row_selected), NULL); filelist_treeview_sw = new_scrolled_window (NULL); gtk_container_add (GTK_CONTAINER (filelist_treeview_sw), filelist_treeview); /* add columns to the tree view */ GtkCellRenderer *renderer; GtkTreeViewColumn *col; int i; int col_count = sizeof (filelist_treeview_col_names) / sizeof (char *); for (i=0; i<col_count; i++) { renderer = gtk_cell_renderer_text_new(); col = gtk_tree_view_column_new_with_attributes (filelist_treeview_col_names[i], renderer, "text", i, NULL); if (i == 0) { gtk_tree_view_column_set_clickable(col, TRUE); gtk_tree_view_column_set_sort_order(col, GTK_SORT_DESCENDING); gtk_tree_view_column_set_sort_column_id(col, 0); gtk_tree_view_column_set_sort_indicator(col, TRUE); } else { gtk_tree_view_column_set_clickable(col, FALSE); } gtk_tree_view_append_column (GTK_TREE_VIEW(filelist_treeview), col); } filelist_store = gtk_list_store_new (col_count, G_TYPE_STRING, G_TYPE_STRING); GtkTreeSortable *sortable = GTK_TREE_SORTABLE(filelist_store); gtk_tree_sortable_set_sort_column_id(sortable, 0, GTK_SORT_DESCENDING); gtk_tree_view_set_model(GTK_TREE_VIEW(filelist_treeview), GTK_TREE_MODEL(filelist_store)); GtkWidget *hbox = gtk_hbox_new(TRUE, 5); GtkWidget *scratch_button = gtk_button_new_with_label("Scratch on map"); g_signal_connect (G_OBJECT (scratch_button), "clicked", G_CALLBACK (scratch_button_clicked), NULL); view_button = gtk_button_new_with_label("View"); g_signal_connect (G_OBJECT(view_button), "clicked", G_CALLBACK (view_button_clicked), NULL); delete_button = gtk_button_new_with_label("Delete"); g_signal_connect (G_OBJECT(delete_button), "clicked", G_CALLBACK (delete_button_clicked), NULL); gtk_container_add(GTK_CONTAINER(hbox), view_button); gtk_container_add(GTK_CONTAINER(hbox), delete_button); gtk_container_add(GTK_CONTAINER(hbox), scratch_button); gtk_box_pack_start(GTK_BOX(vbox), filelist_treeview_sw, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); /* populate files into filelist treeview */ GtkTreeIter iter; struct dirent *ep; char buf[256]; char *file_path = NULL; int len, ext_len = strlen(SCREENSHOT_FILE_EXT); char *fname; struct stat st; DIR *dp = opendir (g_context.screenshot_dir); if (dp == NULL) { if (stat(buf, &st) == 0) warn_dialog("unable to list screenshot files"); } else { while ((ep = readdir (dp))) { fname = ep->d_name; len = strlen(fname); if (ep->d_type == DT_REG && len > ext_len && (strncmp(&fname[len-ext_len], SCREENSHOT_FILE_EXT, ext_len) == 0)) { gtk_list_store_prepend (filelist_store, &iter); file_path = get_full_path(buf, sizeof(buf), fname); add_file_to_list(&iter, file_path, fname); } } closedir (dp); } notebook = gtk_notebook_new(); gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), FALSE); gtk_notebook_set_show_border(GTK_NOTEBOOK(notebook), FALSE); GtkWidget *label; label = gtk_label_new("screen shot list"); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label); GtkWidget *image_box = gtk_vbox_new(FALSE, 0); screenshot_label = gtk_label_new(""); screenshot_image = gtk_image_new(); gtk_box_pack_start(GTK_BOX(image_box), screenshot_label, FALSE, FALSE, 0); GtkWidget *sw = new_scrolled_window (screenshot_image); /* stretch */ gtk_box_pack_start(GTK_BOX(image_box), sw, TRUE, TRUE, 0); label = gtk_label_new("view screen shot"); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), image_box, label); return notebook; }
void create_text_real_tree_view(struct chara_real_clist *cr_clist, GtkTreeView *cr_tree_view, GtkCellRenderer *renderer_text, GtkCellRenderer *renderer_spin) { /* GtkTreeModel *child_model = GTK_TREE_MODEL(user_data);*/ GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeSelection *selection; GtkListStore *child_model; GtkAdjustment *adjust; int i; /* Construct empty list storage */ child_model = gtk_list_store_new(4, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_DOUBLE); g_object_set_data(G_OBJECT(child_model), "selection_list", NULL); /* ソート用のモデルを作成してツリービューにセットする */ model = gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(child_model)); gtk_tree_view_set_model(GTK_TREE_VIEW(cr_tree_view), model); /* First raw */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(cr_tree_view, column); gtk_tree_view_column_set_title(column, "Index"); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_set_attributes(column, renderer, "text", COLUMN_FIELD_INDEX, NULL); g_object_set(renderer, "width", (gint)60, NULL); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_clickable(column, TRUE); g_object_set_data(G_OBJECT(column), "column_id", GINT_TO_POINTER(COLUMN_FIELD_INDEX)); g_signal_connect(G_OBJECT(column), "clicked", G_CALLBACK(column_clicked), cr_tree_view); /* Second row */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(cr_tree_view, column); gtk_tree_view_column_set_title(column, cr_clist->c1_name); g_object_set(G_OBJECT(renderer_text), "editable", TRUE, NULL); gtk_tree_view_column_pack_start(column, renderer_text, TRUE); gtk_tree_view_column_set_attributes(column, renderer_text, "text", COLUMN_FIELD_NAME, NULL); g_object_set(renderer_text, "width", (gint)150, NULL); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_clickable(column, TRUE); g_object_set_data(G_OBJECT(column), "column_id", GINT_TO_POINTER(COLUMN_FIELD_NAME)); g_signal_connect(G_OBJECT(column), "clicked", G_CALLBACK(column_clicked), cr_tree_view); /* Third row */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(cr_tree_view, column); gtk_tree_view_column_set_title(column, cr_clist->r1_name); adjust = gtk_adjustment_new(2.5, -1.0e30, 1.0e30, 0.1, 100, 21474836); g_object_set(G_OBJECT(renderer_spin), "adjustment", adjust, "climb-rate", 0.5, "digits", 3, "editable", TRUE, "width", (gint)150, NULL); gtk_tree_view_column_pack_start(column, renderer_spin, TRUE); gtk_tree_view_column_set_attributes(column, renderer_spin, "text", COLUMN_FIELD_VALUE, NULL); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_clickable(column, TRUE); g_object_set_data(G_OBJECT(column), "column_id", GINT_TO_POINTER(COLUMN_FIELD_VALUE)); g_signal_connect(G_OBJECT(column), "clicked", G_CALLBACK(column_clicked), cr_tree_view); /* 選択モード */ selection = gtk_tree_view_get_selection(cr_tree_view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); /* sort */ column = gtk_tree_view_get_column(cr_tree_view, COLUMN_FIELD_INDEX); gtk_tree_view_column_set_sort_order(column, GTK_SORT_ASCENDING); gtk_tree_view_column_set_sort_indicator(column, TRUE); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), COLUMN_FIELD_INDEX, GTK_SORT_ASCENDING); }
static void create_unused_field_tree_view(GtkWidget *unused_field_tree_view) { /* GtkTreeModel *child_model = GTK_TREE_MODEL(user_data);*/ GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeSelection *selection; GtkListStore *child_model; int i; /* Construct empty list storage */ child_model = gtk_list_store_new(7, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); g_object_set_data(G_OBJECT(child_model), "selection_list", NULL); /* ソート用のモデルを作成してツリービューにセットする */ model = gtk_tree_model_sort_new_with_model(child_model); gtk_tree_view_set_model(GTK_TREE_VIEW(unused_field_tree_view), model); /* First raw */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(unused_field_tree_view), column); gtk_tree_view_column_set_title(column, "Index"); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_set_attributes(column, renderer, "text", COLUMN_FIELD_INDEX, NULL); g_object_set(renderer, "width", (gint)60, NULL); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_clickable(column, TRUE); g_object_set_data(G_OBJECT(column), "unused_column_id", GINT_TO_POINTER(COLUMN_FIELD_INDEX)); g_signal_connect(G_OBJECT(column), "clicked", G_CALLBACK(unused_column_clicked), unused_field_tree_view); /* Second row */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(unused_field_tree_view), column); gtk_tree_view_column_set_title(column, "Field name"); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_set_attributes(column, renderer, "text", COLUMN_FIELD_NAME, NULL); g_object_set(renderer, "width", (gint)150, NULL); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_clickable(column, TRUE); g_object_set_data(G_OBJECT(column), "unused_column_id", GINT_TO_POINTER(COLUMN_FIELD_NAME)); g_signal_connect(G_OBJECT(column), "clicked", G_CALLBACK(unused_column_clicked), unused_field_tree_view); /* 選択モード */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(unused_field_tree_view)); gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); /* 1行毎に背景色を変更 */ gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(unused_field_tree_view), TRUE); /* ソート */ column = gtk_tree_view_get_column(GTK_TREE_VIEW(unused_field_tree_view), COLUMN_FIELD_INDEX); gtk_tree_view_column_set_sort_order(column, GTK_SORT_ASCENDING); gtk_tree_view_column_set_sort_indicator(column, TRUE); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), COLUMN_FIELD_INDEX, GTK_SORT_ASCENDING); /*init_model_data(unused_field_tree_view);*/ for(i=0;i<NUM_FIELD;i++){ if(all_fld_list[i]->iflag_use == 0) {append_model_data(i, child_model);}; } }
void clist_refresh(void) { GtkTreeView *view = GTK_TREE_VIEW(clist_wnd); GtkTreeSelection *selection; GtkTreeViewColumn *col; GtkTreeIter iter; GdkPixbuf *pix1, *pix2, *pix; GList *dirlist; gsize br, bw; gchar *utf8; int i; if(working_mode & MODE_CMD) return; // reparse folders tilp_local_selection_destroy(); tilp_dirlist_local(); selection = gtk_tree_view_get_selection(view); g_signal_handlers_block_by_func(G_OBJECT(selection), tree_selection_changed, NULL); gtk_list_store_clear(list); g_signal_handlers_unblock_by_func(G_OBJECT(selection), tree_selection_changed, NULL); // sort files for(i = 0; i < CLIST_NVCOLS; i++) { col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_sort_indicator(col, FALSE); } switch (options.local_sort) { case SORT_BY_NAME: tilp_file_sort_by_name(); col = gtk_tree_view_get_column(view, COLUMN_NAME); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.local_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; case SORT_BY_TYPE: tilp_file_sort_by_type(); col = gtk_tree_view_get_column(view, COLUMN_TYPE); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.local_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; case SORT_BY_DATE: tilp_file_sort_by_date(); col = gtk_tree_view_get_column(view, COLUMN_DATE); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.local_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; case SORT_BY_SIZE: tilp_file_sort_by_size(); col = gtk_tree_view_get_column(view, COLUMN_SIZE); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.local_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; } pix2 = gtk_widget_render_icon(GTK_WIDGET(view), GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU, NULL); pix1 = gtk_widget_render_icon(GTK_WIDGET(view), GTK_STOCK_GO_UP, GTK_ICON_SIZE_MENU, NULL); for (dirlist = local.dirlist; dirlist != NULL; dirlist = dirlist->next) { FileEntry *fe = (FileEntry *) dirlist->data; gboolean b; CalcModel s = tifiles_file_get_model(fe->name); CalcModel t = options.calc_model; b = options.show_all || S_ISDIR(fe->attrib) || tifiles_file_is_tib(fe->name) || #if 0 tifiles_file_is_tigroup(fe->name) || #else tifiles_file_test(fe->name, TIFILE_TIGROUP, options.calc_model) || #endif tifiles_calc_are_compat(s, t); if(!b) continue; if (S_ISDIR(fe->attrib)) { pix = strcmp(fe->name, "..") ? pix2 : pix1; } else { char icon_name[2048]; strcpy(icon_name, tifiles_file_get_icon(fe->name)); if (!strcmp(icon_name, "")) strcpy(icon_name, "TIicon1"); strcat(icon_name, ".ico"); tilp_file_underscorize(icon_name); pix = create_pixbuf(icon_name); } // filenames are stored in the 'glib filename encoding' and GTK+ uses utf8 utf8 = g_filename_to_utf8(fe->name, -1, &br, &bw, NULL); gtk_list_store_append(list, &iter); gtk_list_store_set(list, &iter, COLUMN_NAME, utf8, COLUMN_TYPE, tilp_file_get_type(fe), COLUMN_SIZE, tilp_file_get_size(fe), COLUMN_DATE, tilp_file_get_date(fe), COLUMN_DATA, (gpointer) fe, COLUMN_ICON, pix, -1); g_free(utf8); } g_object_unref(pix1); g_object_unref(pix2); }
void AP_UnixDialog_ListRevisions::constructWindowContents ( GtkWidget * vbDialog ) { GtkWidget *vbContent; GtkWidget *lbExistingRevisions; GtkWidget *swExistingRevisions; GtkWidget *clExistingRevisions; vbContent = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_widget_show (vbContent); gtk_container_add (GTK_CONTAINER (vbDialog), vbContent); gtk_container_set_border_width (GTK_CONTAINER (vbContent), 5); lbExistingRevisions = gtk_label_new (getLabel1()); gtk_widget_show (lbExistingRevisions); gtk_misc_set_alignment (GTK_MISC (lbExistingRevisions), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (vbContent), lbExistingRevisions, FALSE, FALSE, 0); swExistingRevisions = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (swExistingRevisions); gtk_container_add (GTK_CONTAINER (vbContent), swExistingRevisions); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swExistingRevisions), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); GtkListStore * list_store = gtk_list_store_new(4, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_LONG ); m_treeModel = GTK_WIDGET(list_store); clExistingRevisions = gtk_tree_view_new_with_model (GTK_TREE_MODEL(list_store)); gtk_widget_show (clExistingRevisions); gtk_container_add (GTK_CONTAINER (swExistingRevisions), clExistingRevisions); // Note that columns are displayed in a different order to the model, // data from col2 is shown in the first column in the view. GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); GtkTreeViewColumn *col; // comment column col = gtk_tree_view_column_new_with_attributes(getColumn3Label(), renderer, "text", COL_COMMENT, NULL); gtk_tree_view_column_set_sort_column_id(col, COL_COMMENT); gtk_tree_view_append_column(GTK_TREE_VIEW(clExistingRevisions), col); // revision date column col = gtk_tree_view_column_new_with_attributes(getColumn2Label(), renderer, "text", COL_DATE_STRING, NULL); // we sort on the numerical tt column instead of the human readable text gtk_tree_view_column_set_sort_column_id(col, COL_DATE_AS_TIMET); // later we sort on date desc. gtk_tree_view_column_set_sort_order( col, GTK_SORT_DESCENDING); gtk_tree_view_column_set_fixed_width(col, 80); gtk_tree_view_append_column(GTK_TREE_VIEW(clExistingRevisions), col); // revision # column col = gtk_tree_view_column_new_with_attributes(getColumn1Label(), renderer, "text", COL_REVID, NULL); gtk_tree_view_column_set_fixed_width(col, 80); gtk_tree_view_column_set_sort_column_id(col, COL_REVID); gtk_tree_view_append_column(GTK_TREE_VIEW(clExistingRevisions), col); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(clExistingRevisions), TRUE); // g_object_freeze_notify(G_OBJECT(list_store)); UT_uint32 itemCnt = getItemCount () ; UT_DEBUGMSG(("DOM: %d items\n", itemCnt)); GtkTreeIter iter; for ( UT_uint32 i = 0; i < itemCnt; i++ ) { gchar buf [ 35 ] ; sprintf (buf, "%d", getNthItemId(i)); gtk_list_store_append(list_store, &iter); gchar * txt = getNthItemText(i); const gchar * itemtime = getNthItemTime(i); gtk_list_store_set(list_store, &iter, COL_REVID, getNthItemId(i), COL_DATE_STRING, itemtime?itemtime:"", COL_COMMENT, txt, COL_DATE_AS_TIMET, getNthItemTimeT(i), -1); UT_DEBUGMSG(("appending revision %s : %s, %s\n", itemtime, buf, txt)); FREEP(txt); } // g_object_thaw_notify(G_OBJECT(list_store)); // gtk_clist_select_row (GTK_CLIST (clExistingRevisions), 0, 0); GtkTreeSelection *select = gtk_tree_view_get_selection(GTK_TREE_VIEW(clExistingRevisions)); gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE); g_signal_connect (G_OBJECT(select), "changed", G_CALLBACK(select_row_cb), this); g_signal_connect(G_OBJECT(clExistingRevisions), "row-activated", G_CALLBACK(row_activated_cb), static_cast<gpointer>(this)); gtk_tree_sortable_set_sort_column_id( GTK_TREE_SORTABLE(list_store), 3, GTK_SORT_DESCENDING ); }
void ctree_refresh(void) { GtkTreeView *view = GTK_TREE_VIEW(ctree_wnd); GtkTreeViewColumn *col; GdkPixbuf *pix1, *pix2, *pix3, *pix4, *pix5, *pix6; GdkPixbuf *pix9 = NULL; GtkTreeIter parent_node; GtkTreeIter child_node; GtkIconTheme *theme; GNode *vars, *apps; int i, j; if (remote.var_tree == NULL) return; if(working_mode & MODE_CMD) return; // sort variables for(i = 0; i < CTREE_NVCOLS; i++) { col = gtk_tree_view_get_column(view, i); gtk_tree_view_column_set_sort_indicator(col, FALSE); } switch (options.remote_sort) { case SORT_BY_NAME: tilp_vars_sort_by_name(); col = gtk_tree_view_get_column(view, COLUMN_NAME); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.remote_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; case SORT_BY_INFO: tilp_vars_sort_by_info(); col = gtk_tree_view_get_column(view, COLUMN_ATTR); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.remote_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; case SORT_BY_TYPE: tilp_vars_sort_by_type(); col = gtk_tree_view_get_column(view, COLUMN_TYPE); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.remote_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; case SORT_BY_SIZE: tilp_vars_sort_by_size(); col = gtk_tree_view_get_column(view, COLUMN_SIZE); gtk_tree_view_column_set_sort_indicator(col, TRUE); gtk_tree_view_column_set_sort_order(col, options.remote_sort_order ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING); break; } // place base nodes ctree_set_basetree(); memcpy(&parent_node, &vars_node, sizeof(GtkTreeIter)); // load pixmaps theme = gtk_icon_theme_get_default(); pix1 = gtk_widget_render_icon(GTK_WIDGET(view), GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU, NULL); pix2 = create_pixbuf("TIicon2.ico"); pix3 = gtk_icon_theme_load_icon(theme, "folder-open", 16, 0, NULL); if (pix3 == NULL) { pix3 = create_pixbuf("ctree_open_dir.png"); } pix4 = gtk_icon_theme_load_icon(theme, "emblem-readonly", 16, 0, NULL); if (pix4 == NULL) { pix4 = create_pixbuf("attr_locked.png"); } pix5 = gtk_icon_theme_load_icon(theme, "emblem-system", 16, 0, NULL); if (pix5 == NULL) { pix5 = create_pixbuf("attr_archived.png"); } pix6 = create_pixbuf("TIicon4.ico"); // variables tree vars = remote.var_tree; for (i = 0; i < (int)g_node_n_children(vars); i++) { GNode *parent = g_node_nth_child(vars, i); VarEntry *fe = (VarEntry *) (parent->data); if ((fe != NULL) || (ticalcs_calc_features(calc_handle) & FTS_FOLDER)) { char *utf8 = ticonv_varname_to_utf8(options.calc_model, fe->name, -1); gtk_tree_store_append(tree, &parent_node, &vars_node); gtk_tree_store_set(tree, &parent_node, COLUMN_NAME, utf8, COLUMN_DATA, (gpointer) fe, COLUMN_ICON, pix1, -1); g_free(utf8); } for (j = 0; j < (int)g_node_n_children(parent); j++) { GNode *node = g_node_nth_child(parent, j); gchar **row_text = g_malloc0((CTREE_NCOLS + 1) * sizeof(gchar *)); VarEntry *ve = (VarEntry *) (node->data); char icon_name[256]; row_text[0] = ticonv_varname_to_utf8(options.calc_model, ve->name, ve->type); row_text[2] = g_strdup_printf("%s", tifiles_vartype2string(options.calc_model, ve->type)); tilp_var_get_size(ve, &row_text[3]); strcpy(icon_name, tifiles_vartype2icon(options.calc_model, ve->type)); strcat(icon_name, ".ico"); tilp_file_underscorize(icon_name); pix9 = create_pixbuf(icon_name); // ticonv wrapper tilp_vars_translate(row_text[0]); gtk_tree_store_append(tree, &child_node, &parent_node); gtk_tree_store_set(tree, &child_node, COLUMN_NAME, row_text[0], COLUMN_TYPE, row_text[2], COLUMN_SIZE, row_text[3], COLUMN_DATA, (gpointer) ve, COLUMN_ICON, pix9, COLUMN_FONT, FONT_NAME, -1); switch (ve->attr) { case ATTRB_LOCKED: gtk_tree_store_set(tree, &child_node, COLUMN_ATTR, pix4, -1); break; case ATTRB_ARCHIVED: gtk_tree_store_set(tree, &child_node, COLUMN_ATTR, pix5, -1); break; default: break; } g_object_unref(pix9); g_strfreev(row_text); } } // Appplications tree apps = remote.app_tree; for (i = 0; i < (int)g_node_n_children(apps); i++) { GNode *parent = g_node_nth_child(apps, i); for (j = 0; j < (int)g_node_n_children(parent); j++) { GNode *node = g_node_nth_child(parent, j); gchar **row_text = g_malloc0((CTREE_NCOLS + 1) * sizeof(gchar *)); VarEntry *ve = (VarEntry *) (node->data); char icon_name[256]; row_text[0] = ticonv_varname_to_utf8(options.calc_model, ve->name, ve->type); row_text[2] = g_strdup_printf("%s", tifiles_vartype2string(options.calc_model, ve->type)); row_text[3] = g_strdup_printf("%u", (int) (ve->size)); strcpy(icon_name, tifiles_vartype2icon(options.calc_model, ve->type)); strcat(icon_name, ".ico"); tilp_file_underscorize(icon_name); pix9 = create_pixbuf(icon_name); gtk_tree_store_append(tree, &child_node, &apps_node); gtk_tree_store_set(tree, &child_node, COLUMN_NAME, row_text[0], COLUMN_TYPE, row_text[2], COLUMN_SIZE, row_text[3], COLUMN_DATA, (gpointer) ve, COLUMN_ICON, pix9, COLUMN_FONT, FONT_NAME, -1); g_object_unref(pix9); g_strfreev(row_text); } } gtk_tree_view_expand_all(GTK_TREE_VIEW(ctree_wnd)); g_object_unref(pix1); g_object_unref(pix2); g_object_unref(pix3); g_object_unref(pix4); g_object_unref(pix5); g_object_unref(pix6); tilp_remote_selection_destroy(); }
static GtkWidget * create_replay_pane() { GtkWidget *vbox = gtk_vbox_new(FALSE, 5); /* file list treeview */ filelist_treeview = gtk_tree_view_new (); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (filelist_treeview), TRUE); gtk_tree_view_set_reorderable(GTK_TREE_VIEW (filelist_treeview), FALSE); GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(filelist_treeview)); gtk_tree_selection_set_mode (sel, GTK_SELECTION_SINGLE); g_signal_connect (G_OBJECT(filelist_treeview), "cursor-changed", G_CALLBACK (replay_filelist_treeview_row_selected), NULL); filelist_treeview_sw = new_scrolled_window (NULL); gtk_container_add (GTK_CONTAINER (filelist_treeview_sw), filelist_treeview); /* add columns to the tree view */ GtkCellRenderer *renderer; GtkTreeViewColumn *col; int i; int col_count = sizeof (filelist_treeview_col_names) / sizeof (char *); for (i=0; i<col_count; i++) { renderer = gtk_cell_renderer_text_new(); col = gtk_tree_view_column_new_with_attributes (filelist_treeview_col_names[i], renderer, "text", i, NULL); if (i == 0) { gtk_tree_view_column_set_clickable(col, TRUE); gtk_tree_view_column_set_sort_order(col, GTK_SORT_DESCENDING); gtk_tree_view_column_set_sort_column_id(col, 0); gtk_tree_view_column_set_sort_indicator(col, TRUE); } else { gtk_tree_view_column_set_clickable(col, FALSE); } gtk_tree_view_append_column (GTK_TREE_VIEW(filelist_treeview), col); } filelist_store = gtk_list_store_new (col_count, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT); GtkTreeSortable *sortable = GTK_TREE_SORTABLE(filelist_store); gtk_tree_sortable_set_sort_column_id(sortable, 0, GTK_SORT_DESCENDING); gtk_tree_view_set_model(GTK_TREE_VIEW(filelist_treeview), GTK_TREE_MODEL(filelist_store)); GtkWidget *hbox = gtk_hbox_new(TRUE, 5); replay_button = gtk_button_new_with_label("Replay"); g_signal_connect (G_OBJECT(replay_button), "clicked", G_CALLBACK (replay_button_clicked), NULL); delete_button = gtk_button_new_with_label("Delete"); g_signal_connect (G_OBJECT(delete_button), "clicked", G_CALLBACK (delete_button_clicked), NULL); export_gpx_button = gtk_button_new_with_label("Export .gpx"); g_signal_connect (G_OBJECT( export_gpx_button), "clicked", G_CALLBACK (export_gpx_button_clicked), NULL); gtk_container_add(GTK_CONTAINER(hbox), replay_button); gtk_container_add(GTK_CONTAINER(hbox), delete_button); gtk_container_add(GTK_CONTAINER(hbox), export_gpx_button); gtk_box_pack_start(GTK_BOX(vbox), filelist_treeview_sw, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); /* populate files into filelist treeview */ GtkTreeIter iter; struct dirent *ep; char buf[256]; char *file_path = NULL; int len, ext_len = strlen(TRACK_FILE_EXT); char *fname; DIR *dp = opendir (g_context.track_dir); if (dp == NULL) { warn_dialog("unable to list track record files"); } else { while ((ep = readdir (dp))) { fname = ep->d_name; len = strlen(fname); if (ep->d_type == DT_REG && len > ext_len && (strncmp(&fname[len-ext_len], TRACK_FILE_EXT, ext_len) == 0)) { gtk_list_store_prepend (filelist_store, &iter); file_path = get_full_path(buf, sizeof(buf), fname); add_file_to_list(&iter, file_path, fname); if (replay_file && strcmp(replay_file, fname) == 0) gtk_tree_selection_select_iter (sel, &iter); } } closedir (dp); } return vbox; }
static void create_tree_view_window(GtkButton *button, gpointer user_data) { static gint window_id = 0; /* GtkTreeModel *child_model = GTK_TREE_MODEL(user_data);*/ GtkTreeModel *model; GtkWidget *tree_view; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeSelection *selection; GtkListStore *child_model; GtkTreeIter iter; int i; /* Construct empty list storage */ child_model = gtk_list_store_new(6, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); g_object_set_data(G_OBJECT(child_model), "selection_list", NULL); /* ソート用のモデルを作成してツリービューにセットする */ tree_view = gtk_tree_view_new(); model = gtk_tree_model_sort_new_with_model(child_model); gtk_tree_view_set_model(GTK_TREE_VIEW(tree_view), model); /* First raw */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); gtk_tree_view_column_set_title(column, "Index"); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_set_attributes(column, renderer, "text", COLUMN_FIELD_INDEX, NULL); g_object_set(renderer, "width", (gint)60, NULL); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_clickable(column, TRUE); g_object_set_data(G_OBJECT(column), "column_id", GINT_TO_POINTER(COLUMN_FIELD_INDEX)); g_signal_connect(G_OBJECT(column), "clicked", G_CALLBACK(column_clicked), tree_view); /* Second row */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); gtk_tree_view_column_set_title(column, "Field name"); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_set_attributes(column, renderer, "text", COLUMN_FIELD_NAME, NULL); g_object_set(renderer, "width", (gint)150, NULL); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_clickable(column, TRUE); g_object_set_data(G_OBJECT(column), "column_id", GINT_TO_POINTER(COLUMN_FIELD_NAME)); g_signal_connect(G_OBJECT(column), "clicked", G_CALLBACK(column_clicked), tree_view); /* Third row */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); gtk_tree_view_column_set_title(column, "Component"); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_set_attributes(column, renderer, "text", COLUMN_NUM_COMP, NULL); g_object_set(renderer, "width", (gint)60, NULL); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_clickable(column, TRUE); g_object_set_data(G_OBJECT(column), "column_id", GINT_TO_POINTER(COLUMN_NUM_COMP)); g_signal_connect(G_OBJECT(column), "clicked", G_CALLBACK(column_clicked), tree_view); /* Forth row */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); gtk_tree_view_column_set_title(column, "Field output"); renderer = gtk_cell_renderer_toggle_new(); g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(toggle_viz_switch), tree_view); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_set_attributes(column, renderer, "active", COLUMN_VIZ_FLAG, NULL); g_object_set(renderer, "width", (gint)60, NULL); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_clickable(column, TRUE); g_object_set_data(G_OBJECT(column), "column_id", GINT_TO_POINTER(COLUMN_VIZ_FLAG)); g_signal_connect(G_OBJECT(column), "clicked", G_CALLBACK(column_clicked), tree_view); /* Fifth row */ column = gtk_tree_view_column_new(); gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); gtk_tree_view_column_set_title(column, "Monitor output"); renderer = gtk_cell_renderer_toggle_new(); g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(toggle_monitor_switch), tree_view); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_set_attributes(column, renderer, "active", COLUMN_MONITOR_FLAG, NULL); g_object_set(renderer, "width", (gint)60, NULL); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_clickable(column, TRUE); g_object_set_data(G_OBJECT(column), "column_id", GINT_TO_POINTER(COLUMN_MONITOR_FLAG)); g_signal_connect(G_OBJECT(column), "clicked", G_CALLBACK(column_clicked), tree_view); /* 選択モード */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view)); gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); /* 1行毎に背景色を変更 */ gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree_view), TRUE); /* ソート */ column = gtk_tree_view_get_column(GTK_TREE_VIEW(tree_view), COLUMN_FIELD_INDEX); gtk_tree_view_column_set_sort_order(column, GTK_SORT_ASCENDING); gtk_tree_view_column_set_sort_indicator(column, TRUE); gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), COLUMN_FIELD_INDEX, GTK_SORT_ASCENDING); /*init_model_data(tree_view);*/ for(i=0;i<NUM_FIELD;i++){ if(all_fld_list[i]->iflag_use > 0){ gtk_list_store_append(GTK_LIST_STORE(child_model), &iter); gtk_list_store_set(GTK_LIST_STORE(child_model), &iter, COLUMN_FIELD_INDEX, i, COLUMN_FIELD_NAME, all_fld_list[i]->field_name, COLUMN_VIZ_FLAG, (gboolean) all_fld_list[i]->iflag_viz, COLUMN_MONITOR_FLAG, (gboolean) all_fld_list[i]->iflag_monitor, COLUMN_NUM_COMP, all_fld_list[i]->num_comp, -1); }; } /* ウィンドウ作成 */ create_window(tree_view, ++window_id); }