예제 #1
0
    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)
예제 #2
0
    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)})
예제 #3
0
    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())