Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJRG 2 <jrg2@ubuntu.(none)>2013-12-16 18:51:05 (GMT)
committer JRG 2 <jrg2@ubuntu.(none)>2013-12-16 18:51:05 (GMT)
commitf40a9272509ab60693a5deca4e5a27771740ab9d (patch)
tree976247e0281fee107f8a17c92307d47eb3271d16
parent9edae7442740aa7cde27a4abacd01b0bb5745700 (diff)
reorder_boxesreorder_boxes
-rw-r--r--historietaactivity.py16
-rw-r--r--reorderwindow.py97
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)