def __init__(self): Gtk.Layout.__init__(self) self.thumbCache = {} self.layoutEngine = LayoutEngine() self.loading_pixbuf = GdkPixbuf.Pixbuf.new_from_file( 'data/gfx/refresh.png') self.selection = selection self.thumbnail_pixbufs = {} self.exif_tags = {} self.height = 100 self.width = 100 self.visible = Rectangle(0, 0, 1, 1) self.connect('draw', self.on_draw_event) self.connect('key-press-event', self.on_key_press) self.set_can_focus(True) self.items = [] self.update_layout() selection.add_notify_callback(self.notify_selection_change) self.hdl = None vadj = self.get_vadjustment() hadj = self.get_hadjustment() vadj.connect('value-changed', self.on_adjustment_value_changed) hadj.connect('value-changed', self.on_adjustment_value_changed) Gtk.Scrollable.set_vadjustment(self, vadj) Gtk.Scrollable.set_hadjustment(self, hadj)
def test_size(self): le = LayoutEngine() le.updateWidth(20) le.updateCells(40, 10, 10) area = Rectangle(0, 0, 20, 20) cells = le.getVisibleCells(area) exp = { 0: Rectangle(0, 0, 10, 10), 1: Rectangle(10, 0, 10, 10), 2: Rectangle(0, 10, 10, 10), 3: Rectangle(10, 10, 10, 10) } self.assertEqual(200, le.getHeight()) self.assertDictEqual(exp, cells) le.updateWidth(30) area = Rectangle(0, 1, 13, 20) cells = le.getVisibleCells(area) exp = { 0: Rectangle(0, 0, 10, 10), 1: Rectangle(10, 0, 10, 10), 3: Rectangle(0, 10, 10, 10), 4: Rectangle(10, 10, 10, 10), 6: Rectangle(0, 20, 10, 10), 7: Rectangle(10, 20, 10, 10) } self.assertEqual(140, le.getHeight()) self.assertDictEqual(cells, exp) cells = le.getVisibleCells(Rectangle(15, 15, 3, 3)) self.assertDictEqual(cells, {4: Rectangle(10, 10, 10, 10)}) # test layout with spacing le.updateWidth(23) cells = le.getVisibleCells(Rectangle(0, 0, 23, 5)) self.assertDictEqual(cells, { 0: Rectangle(0, 0, 10, 10), 1: Rectangle(10, 0, 10, 10) }) # test not full layout le.updateCells(3, 10, 20) le.updateWidth(20) cells = le.getVisibleCells(Rectangle(0, 20, 20, 15)) self.assertDictEqual(cells, {2: Rectangle(0, 20, 10, 20)})
def __init__(self): self.counter = 0 super().__init__() self.thumbWidth = 100 self.thumbHeight = 80 self.thumbs = {} self.items = [] self.cellsInView = {} self.noThumbPixmap = QPixmap('data/gfx/noThumb.png') self.noThumbPixmap = self.resizeImage( self.noThumbPixmap, (self.thumbWidth, self.thumbHeight)) self.canvas = GScrollArea() self.canvas.setResizeEventCallback(self.canvasResizeEvent) self.w = QWidget() self.w.paintEvent = self.canvasPaintEvent self.canvas.setWidget(self.w) self.canvas.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)) label = QLabel('Thumbnails view') layout = QGridLayout() layout.addWidget(label, 0, 0, 1, 1) layout.addWidget(self.canvas, 1, 0, 1, 1) self.setLayout(layout) self.cnt = 0 self.width = 500 self.layoutEngine = LayoutEngine() self.layoutEngine.updateCells(0, 100, 100) self.layoutEngine.updateWidth(self.width) self.setCanvasSize(self.width, self.layoutEngine.getHeight())