Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/IconDialog.py
diff options
context:
space:
mode:
Diffstat (limited to 'IconDialog.py')
-rw-r--r--IconDialog.py124
1 files changed, 49 insertions, 75 deletions
diff --git a/IconDialog.py b/IconDialog.py
index 637889c..1087d8a 100644
--- a/IconDialog.py
+++ b/IconDialog.py
@@ -21,13 +21,15 @@ from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GdkPixbuf
from jarabe.journal.model import get_documents_path
+from sugar3.activity.activity import get_bundle_path
from sugar3.graphics.toolbutton import ToolButton
from sugar3.graphics.toolbarbox import ToolbarBox
-from sugar3.graphics import style
from gettext import gettext as _
import os
-SUGAR_ARTWORK = [_('Actions'), _('Emblems'), _('Documents')]
+DEFAULT_NAME = "default-pippy.svg"
+DEFAULT_ICON = os.path.join(get_bundle_path(), 'activity',
+ 'activity-default.svg')
def get_document_icons():
@@ -39,55 +41,41 @@ def get_document_icons():
return icons_
-SUGAR_ICONS = {
- _('Actions'): ['media-playlist-repeat-insensitive',
- 'media-playlist-shuffle-insensitive',
- 'format-justify-left',
- 'cell-height',
- 'media-playback-stop-insensitive',
- 'select-all', 'format-columns-triple', 'column-insert',
- 'go-right', 'cell-format', 'format-justify-right', 'row-insert',
- 'entry-search', 'invite', 'format-text-underline', 'entry-stop',
- 'view-return', 'transfer-from-text-uri-list', 'cell-size', 'column-remove',
- 'insert-image', 'edit-clear', 'view-radial', 'view-lastedit',
- 'media-seek-forward-insensitive', 'row-remove', 'zoom-home',
- 'zoom-best-fit', 'media-playlist-repeat', 'media-eject-insensitive',
- 'view-fullscreen', 'format-text-leading', 'transfer-from-text-x-generic',
- 'select-none', 'toolbar-view', 'media-playback-pause', 'format-text-bold',
- 'media-playback-start-insensitive', 'go-home', 'view-freeform', 'go-next',
- 'transfer-from-image-x-generic', 'media-seek-backward', 'list-add',
- 'edit-description', 'toolbar-colors', 'cell-width',
- 'transfer-from-audio-x-generic', 'zoom-in', 'zoom-groups',
- 'media-seek-forward', 'go-up', 'view-list', 'format-justify-center',
- 'transfer-from', 'media-playback-pause-insensitive', 'media-playback-stop',
- 'go-previous', 'go-left', 'transfer-from-video-x-generic',
- 'media-playlist-shuffle', 'zoom-out', 'toolbar-edit', 'go-next-paired',
- 'system-logout', 'view-source', 'tray-hide', 'edit-copy', 'insert-table',
- 'view-size', 'format-justify-fill', 'go-down', 'format-columns-single',
- 'transfer-to-text-uri-list', 'activity-stop',
- 'transfer-to-audio-x-generic', 'view-box', 'zoom-original',
- 'edit-undo', 'document-send', 'view-refresh',
- 'document-save', 'system-shutdown', 'entry-refresh', 'dialog-cancel',
- 'system-search', 'transfer-to-image-x-generic',
- 'transfer-from-application-octet-stream',
- 'media-seek-backward-insensitive', 'dialog-ok', 'edit-redo',
- 'view-created', 'activity-start', 'format-text-size', 'view-triangle',
- 'entry-cancel', 'media-eject', 'edit-paste', 'tray-show',
- 'transfer-to-video-x-generic', 'transfer-to', 'view-details',
- 'system-restart', 'zoom-activity', 'media-record',
- 'transfer-to-text-x-generic', 'zoom-to-width', 'format-columns-double',
- 'format-text-italic', 'tray-favourite', 'list-remove',
- 'transfer-to-application-octet-stream', 'view-spiral',
- 'media-record-insensitive', 'edit-delete', 'toolbar-help',
- 'edit-duplicate', 'media-playback-start', 'zoom-neighborhood',
- 'go-previous-paired'],
- _('Emblems'): ['emblem-busy', 'emblem-charging', 'emblem-downloads',
- 'emblem-favorite', 'emblem-locked', 'emblem-notification',
- 'emblem-outofrange', 'emblem-question', 'emblem-view-source',
- 'emblem-warning'],
- _('Documents'): get_document_icons()
-}
+def get_user_path():
+ user = os.path.expanduser("~")
+ path = os.path.join(user, ".icons")
+ if not os.path.exists(path):
+ os.mkdir(path)
+ if os.path.exists(DEFAULT_NAME):
+ os.remove(DEFAULT_NAME)
+ shutil.copy(DEFAULT_ICON, os.path.join(path, DEFAULT_NAME))
+ return path
+
+
+def get_usericons_icons():
+ path = get_user_path()
+ icons = os.listdir(path)
+ icons_ = []
+ for icon in icons:
+ if icon.endswith('.svg'):
+ icons_.append(icon[:-4])
+
+ return icons_
+
+
+def get_user_icons():
+ home = get_usericons_icons()
+ documents = get_document_icons()
+ final = []
+
+ for x in home:
+ final.append(x)
+
+ for x in documents:
+ final.append(x)
+
+ return final
class IconDialog(Gtk.Window):
@@ -150,49 +138,38 @@ class IconDialog(Gtk.Window):
scroll = Gtk.ScrolledWindow()
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
- grid = Gtk.Grid()
- current = 0
- for icon in SUGAR_ARTWORK:
- expander = self.build_icons(icon)
- grid.attach(expander, 0, current, 1, 1)
- current += 1
+ icons = self.build_icons()
scroll.set_size_request(self.x, self.y)
- scroll.add_with_viewport(grid)
+ scroll.add_with_viewport(icons)
return scroll
- def build_icons(self, category):
- icons = SUGAR_ICONS[category]
-
- if len(icons) < 1:
- return Gtk.EventBox()
-
+ def build_icons(self):
store = Gtk.ListStore(GdkPixbuf.Pixbuf, str, str)
-
icon_view = Gtk.IconView.new_with_model(store)
icon_view.set_selection_mode(Gtk.SelectionMode.SINGLE)
icon_view.connect('selection-changed', self.set_icon, store)
icon_view.set_pixbuf_column(0)
icon_view.modify_bg(Gtk.StateType.NORMAL, Gdk.color_parse('#D5D5D5'))
- for icon in icons:
+ for icon in get_user_icons():
info = self.theme.lookup_icon(icon, 55,
Gtk.IconLookupFlags.FORCE_SVG)
if not info:
continue
- icon_path = info.get_filename()
- if category == _('Documents'):
+ icon_path = os.path.join(get_user_path(), icon + ".svg")
+ if not os.path.exists(icon_path):
icon_path = os.path.join(get_documents_path(), icon + ".svg")
+ if not os.path.exists(icon_path):
+ icon_path = info.get_filename()
+
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(
icon_path, 55, 55)
store.insert(-1, [pixbuf, icon, icon_path])
- expand = Gtk.Expander()
- expand.set_label(category)
- expand.add(icon_view)
- return expand
+ return icon_view
def set_icon(self, widget, model):
try:
@@ -202,7 +179,4 @@ class IconDialog(Gtk.Window):
icon_path = model.get(iter_, 2)[0]
self._icon = icon_path
- self.destroy()
-
- def get_icon(self):
- return self._icon
+ self.destroy() \ No newline at end of file