static GtkTreeIter * fill_list(GtkWidget *main_w) { WS_DIR *dir; /* scanned directory */ WS_DIRENT *file; /* current file */ GList *fl_entry; profile_def *profile; GtkTreeView *profile_l; GtkListStore *store; GtkTreeIter iter, *l_select = NULL; const gchar *profile_name = get_profile_name (); const gchar *profiles_dir, *name; gchar *filename; profile_l = GTK_TREE_VIEW(g_object_get_data(G_OBJECT(main_w), E_PROF_PROFILE_L_KEY)); store = GTK_LIST_STORE(gtk_tree_view_get_model(profile_l)); fl_entry = add_to_profile_list(DEFAULT_PROFILE, DEFAULT_PROFILE, PROF_STAT_DEFAULT); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, DEFAULT_PROFILE, 1, fl_entry, -1); if (strcmp (profile_name, DEFAULT_PROFILE)==0) { l_select = g_memdup(&iter, sizeof(iter)); } /* fill in data */ profiles_dir = get_profiles_dir(); if ((dir = ws_dir_open(profiles_dir, 0, NULL)) != NULL) { while ((file = ws_dir_read_name(dir)) != NULL) { name = ws_dir_get_name(file); filename = g_strdup_printf ("%s%s%s", profiles_dir, G_DIR_SEPARATOR_S, name); if (test_for_directory(filename) == EISDIR) { fl_entry = add_to_profile_list(name, name, PROF_STAT_EXISTS); profile = (profile_def *) fl_entry->data; gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, profile->name, 1, fl_entry, -1); if (profile->name) { if (strcmp(profile_name, profile->name) == 0) { /* * XXX - We're assuming that we can just copy a GtkTreeIter * and use it later without any crashes. This may not be a * valid assumption. */ l_select = g_memdup(&iter, sizeof(iter)); } } } g_free (filename); } ws_dir_close (dir); } /* Make the current list and the edited list equal */ copy_profile_list (); return l_select; }
void ProfileDialog::on_copyToolButton_clicked() { QTreeWidgetItem *cur_item = pd_ui_->profileTreeWidget->currentItem(); profile_def *cur_profile = (profile_def *) cur_item->data(0, Qt::UserRole).value<GList *>()->data; if (!cur_item || !cur_profile) return; QTreeWidgetItem *new_item = new QTreeWidgetItem(); GList *fl_entry; const gchar *parent; gchar *new_name; profile_def *new_profile; if (cur_profile->is_global) { parent = cur_profile->name; } else { parent = get_profile_parent (cur_profile->name); } if (cur_profile->is_global && !profile_exists (parent, FALSE)) { new_name = g_strdup (cur_profile->name); } else { new_name = g_strdup_printf ("%s (copy)", cur_profile->name); } /* Add a new entry to the profile list. */ fl_entry = add_to_profile_list(new_name, parent, PROF_STAT_COPY, FALSE, cur_profile->from_global); new_profile = (profile_def *) fl_entry->data; new_item->setText(0, new_profile->name); new_item->setData(0, Qt::UserRole, qVariantFromValue(fl_entry)); new_item->setFlags(new_item->flags() | Qt::ItemIsEditable); pd_ui_->profileTreeWidget->addTopLevelItem(new_item); pd_ui_->profileTreeWidget->setCurrentItem(new_item); pd_ui_->profileTreeWidget->editItem(new_item, 0); }
void init_profile_list(void) { WS_DIR *dir; /* scanned directory */ WS_DIRENT *file; /* current file */ const gchar *profiles_dir, *name; gchar *filename; empty_profile_list(TRUE); /* Default entry */ add_to_profile_list(DEFAULT_PROFILE, DEFAULT_PROFILE, PROF_STAT_DEFAULT, FALSE, FALSE); /* Local (user) profiles */ profiles_dir = get_profiles_dir(); if ((dir = ws_dir_open(profiles_dir, 0, NULL)) != NULL) { while ((file = ws_dir_read_name(dir)) != NULL) { name = ws_dir_get_name(file); filename = g_strdup_printf ("%s%s%s", profiles_dir, G_DIR_SEPARATOR_S, name); if (test_for_directory(filename) == EISDIR) { /*fl_entry =*/ add_to_profile_list(name, name, PROF_STAT_EXISTS, FALSE, FALSE); } g_free (filename); } ws_dir_close (dir); } /* Global profiles */ profiles_dir = get_global_profiles_dir(); if ((dir = ws_dir_open(profiles_dir, 0, NULL)) != NULL) { while ((file = ws_dir_read_name(dir)) != NULL) { name = ws_dir_get_name(file); filename = g_strdup_printf ("%s%s%s", profiles_dir, G_DIR_SEPARATOR_S, name); if (test_for_directory(filename) == EISDIR) { /*fl_entry =*/ add_to_profile_list(name, name, PROF_STAT_EXISTS, TRUE, TRUE); /*profile = (profile_def *) fl_entry->data;*/ } g_free (filename); } ws_dir_close (dir); } /* Make the current list and the edited list equal */ copy_profile_list (); }
void ProfileDialog::on_newToolButton_clicked() { QTreeWidgetItem *item = new QTreeWidgetItem(); profile_def *profile; const gchar *name = "New profile"; GList *fl_entry = add_to_profile_list(name, "", PROF_STAT_NEW, FALSE, FALSE); profile = (profile_def *) fl_entry->data; item->setText(0, profile->name); item->setData(0, Qt::UserRole, qVariantFromValue(fl_entry)); item->setFlags(item->flags() | Qt::ItemIsEditable); pd_ui_->profileTreeWidget->addTopLevelItem(item); pd_ui_->profileTreeWidget->setCurrentItem(item); pd_ui_->profileTreeWidget->editItem(item, 0); }