diff options
author | JRG 2 <jrg2@ubuntu.(none)> | 2013-12-16 18:51:05 (GMT) |
---|---|---|
committer | JRG 2 <jrg2@ubuntu.(none)> | 2013-12-16 18:51:05 (GMT) |
commit | f40a9272509ab60693a5deca4e5a27771740ab9d (patch) | |
tree | 976247e0281fee107f8a17c92307d47eb3271d16 | |
parent | 9edae7442740aa7cde27a4abacd01b0bb5745700 (diff) |
reorder_boxesreorder_boxes
-rw-r--r-- | historietaactivity.py | 16 | ||||
-rw-r--r-- | reorderwindow.py | 97 |
2 files changed, 113 insertions, 0 deletions
diff --git a/historietaactivity.py b/historietaactivity.py index 16b334f..e9e4e90 100644 --- a/historietaactivity.py +++ b/historietaactivity.py @@ -21,6 +21,7 @@ from toolbar import TextToolbar from toolbar import GlobesManager from slideview import SlideView +from reorderwindow import ReorderView import time from sugar3.datastore import datastore @@ -85,6 +86,13 @@ class HistorietaActivity(activity.Activity): slideview_btn.connect('clicked', self._switch_view_mode, text_button) toolbar_box.toolbar.insert(text_button, -1) + reorder_img_btn = ToolButton('thumbs-view') + reorder_img_btn.set_icon_name('thumbs-view') + reorder_img_btn.set_tooltip(_('Change image order')) + reorder_img_btn.connect('clicked', self.__image_order_cb) + toolbar_box.toolbar.insert(reorder_img_btn, -1) + reorder_img_btn.show() + separator = Gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) @@ -265,6 +273,10 @@ class HistorietaActivity(activity.Activity): self._show_journal_alert(_('Success'), _('A image was created in the Journal')) + def __image_order_cb(self, button): + reorderwin = ReorderView(self) + reorderwin.show_all() + def _save_as_pdf(self, widget): file_name = os.path.join(self.get_activity_root(), 'instance', @@ -608,8 +620,12 @@ class ComicBox(Gtk.EventBox): if (not self.image_name.startswith(instance_path)): pixbuf = GdkPixbuf.Pixbuf.new_from_file( os.path.join(instance_path, self.image_name)) + self.thumbnail = GdkPixbuf.Pixbuf.new_from_file_at_size( + os.path.join(instance_path, self.image_name), 200, 200) else: pixbuf = GdkPixbuf.Pixbuf.new_from_file(self.image_name) + self.thumbnail = GdkPixbuf.Pixbuf.new_from_file_at_size( + self.image_name, 200, 200) width_pxb = pixbuf.get_width() height_pxb = pixbuf.get_height() scale = (self.width) / (1.0 * width_pxb) diff --git a/reorderwindow.py b/reorderwindow.py new file mode 100644 index 0000000..5bb2f10 --- /dev/null +++ b/reorderwindow.py @@ -0,0 +1,97 @@ +from gi.repository import Gtk +from gi.repository import Gdk +from gi.repository import GObject +from sugar3.graphics import style +from sugar3.graphics.toolbutton import ToolButton +from gi.repository.GdkPixbuf import Pixbuf + +import gettext +_ = lambda msg: gettext.dgettext('sugar', msg) + + +class ReorderView(Gtk.Window): + def __init__(self, activity): + GObject.GObject.__init__(self) + self.set_default_size(400, 400) + self.set_border_width(style.LINE_WIDTH) + self.set_position(Gtk.WindowPosition.CENTER_ALWAYS) + self.set_decorated(False) + self.set_resizable(False) + self.set_size_request(400, 400) + + self.separator = Gtk.SeparatorToolItem() + self.separator.props.draw = False + self.separator.set_expand(True) + + self.toolbar = Gtk.Toolbar() + self.toolbar.insert(self.separator, -1) + + self.stop = ToolButton(icon_name='dialog-cancel') + self.stop.set_tooltip(_('Cancel')) + self.stop.connect('clicked', self.__stop_clicked_cb) + self.toolbar.insert(self.stop, -1) + self.stop.show() + + self.confirm = ToolButton(icon_name='dialog-ok') + self.confirm.set_tooltip(_('Done')) + self.confirm.connect('clicked', self.__ok_clicked_cb) + self.toolbar.insert(self.confirm, -1) + self.confirm.show() + + self.scrollwin = ReorderObjects(activity) + self.vbox = Gtk.VBox() + self.vbox.pack_start(self.toolbar, False, False, 0) + self.vbox.pack_start(self.scrollwin, True, True, 0) + self.add(self.vbox) + self.scrollwin.show() + + def __stop_clicked_cb(self, button): + self.destroy() + + def __ok_clicked_cb(self, button): + self.scrollwin.reorder_comicboxs() + self.scrollwin.display_comicboxs() + self.destroy() + + +class ReorderObjects(Gtk.ScrolledWindow): + def __init__(self, activity): + GObject.GObject.__init__(self) + self.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS) + self.activity = activity + self.comicboxes = self.activity.page.boxs + + self.liststore = Gtk.ListStore(Pixbuf) + self.iconview = Gtk.IconView.new() + self.iconview.set_columns(2) + self.iconview.set_property('item-width', 200) + self.iconview.set_model(self.liststore) + self.iconview.set_pixbuf_column(0) + self.iconview.set_reorderable(True) + + for comicbox in self.comicboxes[1:]: + try: + self.liststore.append([comicbox.thumbnail]) + except: + print 'Error' + + self.add(self.iconview) + + def reorder_comicboxs(self): + sorted_list = [] + for row in self.liststore: + for comicbox in self.comicboxes[1:]: + if row[0] is comicbox.thumbnail: + self.activity.page.table.remove(comicbox) + sorted_list.append(comicbox) + break + sorted_list.insert(0, self.comicboxes[0]) + self.comicboxes = sorted_list + self.activity.page.boxs = self.comicboxes + + def display_comicboxs(self): + for i in range(0, len(self.comicboxes[1:])): + reng = int(i / 2) + column = i - (reng * 2) + self.activity.page.table.attach( + self.comicboxes[i+1], column, column + 1, reng, reng + 1) |