Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hide keyword_tree #1632

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/bar-keywords.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1489,10 +1489,11 @@ GtkWidget *bar_pane_keywords_new(const gchar *id, const gchar *title, const gcha
g_signal_connect(G_OBJECT(pkd->autocomplete), "activate",
G_CALLBACK(autocomplete_activate_cb), pkd);

if (!keyword_tree || !gtk_tree_model_get_iter_first(GTK_TREE_MODEL(keyword_tree), &iter))
GtkTreeStore *keyword_tree = keyword_tree_get_or_new();
if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(keyword_tree), &iter))
{
/* keyword tree does not exist or is empty - fill with defaults */
keyword_tree_new_default();
/* keyword tree is empty - fill with defaults */
keyword_tree_set_default(keyword_tree);
}

store = gtk_tree_model_filter_new(GTK_TREE_MODEL(keyword_tree), nullptr);
Expand Down
19 changes: 9 additions & 10 deletions src/metadata.cc
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ constexpr std::array<const gchar *, 22> group_keys{
"Xmp.xmp.Rating",
};

GtkTreeStore *keyword_tree;

gint metadata_cache_entry_compare_key(const MetadataCacheEntry *entry, const gchar *key)
{
return strcmp(entry->key, key);
Expand Down Expand Up @@ -1055,10 +1057,6 @@ void meta_data_connect_mark_with_keyword(GtkTreeModel *keyword_tree, GtkTreeIter
*-------------------------------------------------------------------
*/



GtkTreeStore *keyword_tree;

gchar *keyword_get_name(GtkTreeModel *keyword_tree, GtkTreeIter *iter)
{
gchar *name;
Expand Down Expand Up @@ -1584,11 +1582,12 @@ void keyword_show_set_in(GtkTreeStore *keyword_tree, gpointer id, GList *keyword
}


void keyword_tree_new()
GtkTreeStore *keyword_tree_get_or_new()
{
if (keyword_tree) return;
if (!keyword_tree)
keyword_tree = gtk_tree_store_new(KEYWORD_COLUMN_COUNT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_POINTER);

keyword_tree = gtk_tree_store_new(KEYWORD_COLUMN_COUNT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_POINTER);
return keyword_tree;
}

static GtkTreeIter keyword_tree_default_append(GtkTreeStore *keyword_tree, GtkTreeIter *parent, const gchar *name, gboolean is_keyword)
Expand All @@ -1599,13 +1598,13 @@ static GtkTreeIter keyword_tree_default_append(GtkTreeStore *keyword_tree, GtkTr
return iter;
}

void keyword_tree_new_default()
void keyword_tree_set_default(GtkTreeStore *keyword_tree)
{
if (!keyword_tree) return;

GtkTreeIter i1;
GtkTreeIter i2;

if (!keyword_tree) keyword_tree_new();

i1 = keyword_tree_default_append(keyword_tree, nullptr, _("People"), TRUE);
i2 = keyword_tree_default_append(keyword_tree, &i1, _("Family"), TRUE);
i2 = keyword_tree_default_append(keyword_tree, &i1, _("Free time"), TRUE);
Expand Down
6 changes: 2 additions & 4 deletions src/metadata.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,6 @@ enum {
KEYWORD_COLUMN_COUNT
};

extern GtkTreeStore *keyword_tree;

void meta_data_connect_mark_with_keyword(GtkTreeModel *keyword_tree, GtkTreeIter *kw_iter, gint mark);


Expand Down Expand Up @@ -111,8 +109,8 @@ void keyword_revert_hidden_in(GtkTreeStore *keyword_tree, gpointer id);
void keyword_hide_unset_in(GtkTreeStore *keyword_tree, gpointer id, GList *keywords);
void keyword_show_set_in(GtkTreeStore *keyword_tree, gpointer id, GList *keywords);

void keyword_tree_new_default();
void keyword_tree_new();
void keyword_tree_set_default(GtkTreeStore *keyword_tree);
GtkTreeStore *keyword_tree_get_or_new();

void keyword_tree_write_config(GString *outstr, gint indent);
GtkTreeIter *keyword_add_from_config(GtkTreeStore *keyword_tree, GtkTreeIter *parent, const gchar **attribute_names, const gchar **attribute_values);
Expand Down
12 changes: 6 additions & 6 deletions src/rcfile.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1392,8 +1392,8 @@ static void options_parse_keyword(GQParserData *parser_data, const gchar *elemen
{
if (g_ascii_strcasecmp(element_name, "keyword") == 0)
{
auto iter_ptr = static_cast<GtkTreeIter *>(data);
GtkTreeIter *child = keyword_add_from_config(keyword_tree, iter_ptr, attribute_names, attribute_values);
GtkTreeStore *keyword_tree = keyword_tree_get_or_new();
GtkTreeIter *child = keyword_add_from_config(keyword_tree, static_cast<GtkTreeIter *>(data), attribute_names, attribute_values);
parser_data->func_push(options_parse_keyword, options_parse_keyword_end, child);
}
else
Expand All @@ -1405,11 +1405,11 @@ static void options_parse_keyword(GQParserData *parser_data, const gchar *elemen



static void options_parse_keyword_tree(GQParserData *parser_data, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer)
static void options_parse_keyword_tree(GQParserData *parser_data, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer data)
{
if (g_ascii_strcasecmp(element_name, "keyword") == 0)
{
GtkTreeIter *iter_ptr = keyword_add_from_config(keyword_tree, nullptr, attribute_names, attribute_values);
GtkTreeIter *iter_ptr = keyword_add_from_config(GTK_TREE_STORE(data), nullptr, attribute_names, attribute_values);
parser_data->func_push(options_parse_keyword, options_parse_keyword_end, iter_ptr);
}
else
Expand Down Expand Up @@ -1442,8 +1442,8 @@ static void options_parse_global(GQParserData *parser_data, const gchar *element
}
else if (g_ascii_strcasecmp(element_name, "keyword_tree") == 0)
{
if (!keyword_tree) keyword_tree_new();
parser_data->func_push(options_parse_keyword_tree, nullptr, nullptr);
GtkTreeStore *keyword_tree = keyword_tree_get_or_new();
parser_data->func_push(options_parse_keyword_tree, nullptr, keyword_tree);
}
else if (g_ascii_strcasecmp(element_name, "disabled_plugins") == 0)
{
Expand Down