summaryrefslogtreecommitdiff
path: root/src/gui/iconSelectWindow.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/iconSelectWindow.vala')
-rw-r--r--src/gui/iconSelectWindow.vala107
1 files changed, 21 insertions, 86 deletions
diff --git a/src/gui/iconSelectWindow.vala b/src/gui/iconSelectWindow.vala
index d7e5062..6776288 100644
--- a/src/gui/iconSelectWindow.vala
+++ b/src/gui/iconSelectWindow.vala
@@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
-// Copyright (c) 2011-2016 by Simon Schneegans
+// Copyright (c) 2011-2017 by Simon Schneegans
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -106,7 +106,6 @@ public class IconSelectWindow : GLib.Object {
private class ListEntry {
public string name;
- public IconContext context;
public Gdk.Pixbuf pixbuf;
}
@@ -119,20 +118,6 @@ public class IconSelectWindow : GLib.Object {
private GLib.AsyncQueue<ListEntry?> load_queue;
/////////////////////////////////////////////////////////////////////
- /// Possible icon types.
- /////////////////////////////////////////////////////////////////////
-
- private enum IconContext {
- ALL,
- APPS,
- ACTIONS,
- PLACES,
- FILES,
- EMOTES,
- OTHER
- }
-
- /////////////////////////////////////////////////////////////////////
/// C'tor, creates a new IconSelectWindow.
/////////////////////////////////////////////////////////////////////
@@ -141,9 +126,8 @@ public class IconSelectWindow : GLib.Object {
this.load_queue = new GLib.AsyncQueue<ListEntry?>();
if (IconSelectWindow.icon_list == null) {
- IconSelectWindow.icon_list = new Gtk.ListStore(3, typeof(string), // icon name
- typeof(IconContext), // icon type
- typeof(Gdk.Pixbuf)); // the icon itself
+ IconSelectWindow.icon_list = new Gtk.ListStore(2, typeof(string), // icon name
+ typeof(Gdk.Pixbuf)); // the icon itself
// disable sorting until all icons are loaded
// else loading becomes horribly slow
@@ -175,26 +159,6 @@ public class IconSelectWindow : GLib.Object {
(builder.get_object("ok-button") as Gtk.Button).clicked.connect(on_ok_button_clicked);
(builder.get_object("cancel-button") as Gtk.Button).clicked.connect(on_cancel_button_clicked);
- var combo_box = builder.get_object("combo-box") as Gtk.Box;
-
- // context combo
- var context_combo = new Gtk.ComboBoxText();
- context_combo.append_text(_("All icons"));
- context_combo.append_text(_("Applications"));
- context_combo.append_text(_("Actions"));
- context_combo.append_text(_("Places"));
- context_combo.append_text(_("File types"));
- context_combo.append_text(_("Emotes"));
- context_combo.append_text(_("Miscellaneous"));
-
- context_combo.set_active(0);
-
- context_combo.changed.connect(() => {
- this.icon_list_filtered.refilter();
- });
-
- combo_box.pack_start(context_combo, false, false);
-
// string filter entry
var filter = builder.get_object("filter-entry") as Gtk.Entry;
@@ -202,21 +166,16 @@ public class IconSelectWindow : GLib.Object {
// and whose name contains the text entered in the entry
this.icon_list_filtered.set_visible_func((model, iter) => {
string name = "";
- IconContext context = IconContext.ALL;
model.get(iter, 0, out name);
- model.get(iter, 1, out context);
-
if (name == null) return false;
-
- return (context_combo.get_active() == context ||
- context_combo.get_active() == IconContext.ALL) &&
- name.down().contains(filter.text.down());
+ return name.down().contains(filter.text.down());
});
// clear when the users clicks on the "clear" icon
filter.icon_release.connect((pos, event) => {
- if (pos == Gtk.EntryIconPosition.SECONDARY)
+ if (pos == Gtk.EntryIconPosition.SECONDARY) {
filter.text = "";
+ }
});
// refilter on input
@@ -231,7 +190,7 @@ public class IconSelectWindow : GLib.Object {
this.icon_view = new Gtk.IconView.with_model(this.icon_list_filtered);
this.icon_view.item_width = 32;
this.icon_view.item_padding = 2;
- this.icon_view.pixbuf_column = 2;
+ this.icon_view.pixbuf_column = 1;
this.icon_view.tooltip_column = 0;
// set active_icon if selection changes
@@ -376,8 +335,7 @@ public class IconSelectWindow : GLib.Object {
Gtk.TreeIter current;
IconSelectWindow.icon_list.append(out current);
IconSelectWindow.icon_list.set(current, 0, new_entry.name,
- 1, new_entry.context,
- 2, new_entry.pixbuf);
+ 1, new_entry.pixbuf);
}
// enable sorting of the icon_view if loading finished
@@ -397,44 +355,20 @@ public class IconSelectWindow : GLib.Object {
private async void load_all() {
var icon_theme = Gtk.IconTheme.get_default();
+ foreach (var icon in icon_theme.list_icons(null)) {
+ Idle.add(load_all.callback);
+ yield;
- foreach (var context in icon_theme.list_contexts()) {
- if (!disabled_contexts.contains(context)) {
- foreach (var icon in icon_theme.list_icons(context)) {
-
- IconContext icon_context = IconContext.OTHER;
- switch(context) {
- case "Apps": case "Applications":
- icon_context = IconContext.APPS; break;
- case "Emotes":
- icon_context = IconContext.EMOTES; break;
- case "Places": case "Devices":
- icon_context = IconContext.PLACES; break;
- case "Mimetypes":
- icon_context = IconContext.FILES; break;
- case "Actions":
- icon_context = IconContext.ACTIONS; break;
- default: break;
- }
-
- Idle.add(load_all.callback);
- yield;
-
- try {
- // create a new entry for the queue
- var new_entry = new ListEntry();
- new_entry.name = icon;
- new_entry.context = icon_context;
- new_entry.pixbuf = icon_theme.load_icon(icon, 32, 0);
+ try {
+ // create a new entry for the queue
+ var new_entry = new ListEntry();
+ new_entry.name = icon;
+ new_entry.pixbuf = icon_theme.load_icon(icon, 32, Gtk.IconLookupFlags.FORCE_SIZE);
- // some icons have only weird sizes... do not include them
- if (new_entry.pixbuf.width == 32)
- this.load_queue.push(new_entry);
+ this.load_queue.push(new_entry);
- } catch (GLib.Error e) {
- warning("Failed to load image " + icon);
- }
- }
+ } catch (GLib.Error e) {
+ warning("Failed to load image " + icon);
}
}
@@ -442,8 +376,9 @@ public class IconSelectWindow : GLib.Object {
IconSelectWindow.loading = false;
// hide the spinner
- if (spinner != null)
+ if (spinner != null) {
spinner.visible = false;
+ }
}
}