Skip to content

Commit de966c5

Browse files
author
mananapr
committed
v0.5: Added image viewer in the GUI and made the taglist resizable
1 parent f8df2f9 commit de966c5

File tree

2 files changed

+69
-10
lines changed

2 files changed

+69
-10
lines changed

akari/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
__version__ = '0.4'
1+
__version__ = '0.5'
22
__license__ = 'MIT'
33
__author__ = 'Manan Singh'

akari/gui.py

Lines changed: 68 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import sys
22
from akari.utils import loadDB, commit_changes
3-
from PyQt5.QtCore import QSize
3+
from PyQt5.QtCore import QSize, Qt
44
from PyQt5.QtGui import QIcon, QColor, QFont, QPixmap
5-
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QListWidget, QListWidgetItem, QListView, QHBoxLayout, QVBoxLayout, QAbstractItemView, QMenu, QInputDialog, QLineEdit
5+
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QListWidget, QListWidgetItem, QListView, QHBoxLayout, QVBoxLayout, QAbstractItemView, QMenu, QInputDialog, QLineEdit, QMainWindow, QLabel, QDesktopWidget, QSplitter
66

77
class Main(QWidget):
88
def __init__(self):
@@ -11,23 +11,32 @@ def __init__(self):
1111
self.setWindowIcon(QIcon('static/icon.jpg'))
1212
self.db = None
1313

14+
self.imageViewer = imageViewer()
15+
1416
self.mainLayout = QHBoxLayout()
1517

18+
self.splitter = QSplitter(Qt.Horizontal)
19+
self.leftSplitterWidget = QWidget()
20+
self.rightSplitterWidget = QWidget()
21+
self.splitter.addWidget(self.rightSplitterWidget)
22+
self.splitter.addWidget(self.leftSplitterWidget)
23+
1624
self.sidePanel = QVBoxLayout()
1725
self.tagList = QListWidget()
1826
self.filerButton = QPushButton("Filter")
1927
self.clearFilerButton = QPushButton("Reset")
2028
self.sidePanel.addWidget(self.tagList)
29+
self.rightSplitterWidget.setLayout(self.sidePanel)
2130

2231
self.imagePanel = QVBoxLayout()
2332
self.imageList = QListWidget()
2433
self.imagePanelOptions = QHBoxLayout()
25-
self.miscButton1 = QPushButton("Misc Option 1")
26-
self.miscButton2 = QPushButton("Misc Option 2")
34+
self.fsToggle = QPushButton("View Images in FullScreen")
35+
self.quitButton = QPushButton("Quit")
2736
self.imagePanel.addWidget(self.imageList)
37+
self.leftSplitterWidget.setLayout(self.imagePanel)
2838

29-
self.mainLayout.addLayout(self.sidePanel)
30-
self.mainLayout.addLayout(self.imagePanel)
39+
self.mainLayout.addWidget(self.splitter)
3140
self.setLayout(self.mainLayout)
3241

3342
self.initUI()
@@ -42,8 +51,8 @@ def initUI(self):
4251
self.imageList.installEventFilter(self)
4352

4453
self.imagePanel.addLayout(self.imagePanelOptions)
45-
self.imagePanelOptions.addWidget(self.miscButton1)
46-
self.imagePanelOptions.addWidget(self.miscButton2)
54+
self.imagePanelOptions.addWidget(self.fsToggle)
55+
self.imagePanelOptions.addWidget(self.quitButton)
4756

4857
self.addEventHandlers()
4958
self.show()
@@ -54,10 +63,12 @@ def updateDB(self, db):
5463
def addEventHandlers(self):
5564
self.filerButton.clicked.connect(self.filterButton_pressed)
5665
self.clearFilerButton.clicked.connect(self.clearFilterButton_pressed)
66+
self.fsToggle.clicked.connect(self.fsToggle_pressed)
67+
self.quitButton.clicked.connect(self.close)
5768

5869
def addTagEditingButtons(self):
5970
self.addTagsButton = QPushButton("Add New Tag")
60-
self.removeTagsButton = QPushButton("Remove Tags")
71+
self.removeTagsButton = QPushButton("Remove Selected Tags")
6172
self.sidePanel.addWidget(self.addTagsButton)
6273
self.sidePanel.addWidget(self.removeTagsButton)
6374
self.addTagsButton.clicked.connect(self.addTagsButton_pressed)
@@ -77,6 +88,15 @@ def refreshTagListForImage(self, image):
7788
for tag in self.db[image]:
7889
self.tagList.addItem(tag)
7990

91+
def fsToggle_pressed(self):
92+
self.imageViewer.set_imageNumber(0)
93+
imageViewer_list = []
94+
for x in range(self.imageList.count()):
95+
imageViewer_list.append(self.imageList.item(x).data(0))
96+
self.imageViewer.set_imageViewerList(imageViewer_list)
97+
self.imageViewer.addImage(imageViewer_list[0])
98+
self.imageViewer.showFullScreen()
99+
80100
def addTagsButton_pressed(self):
81101
image = self.imageList.item(0).data(0)
82102
tag, okPressed = QInputDialog.getText(self, "Enter Tag","Enter Tag", QLineEdit.Normal, "")
@@ -169,6 +189,45 @@ def addTags(self):
169189
tagList.append(str(self.db['akari-tags'][tag]) + ' ' + tag)
170190
self.tagList.addItems(tagList)
171191

192+
class imageViewer(QLabel):
193+
def __init__(self):
194+
super().__init__()
195+
self.setWindowTitle("Image Viewer")
196+
self.imageViewer_list = []
197+
self.imageNumber = None
198+
199+
def set_imageViewerList(self, imgList):
200+
self.imageViewer_list = imgList
201+
202+
def set_imageNumber(self, imageNumber):
203+
self.imageNumber = imageNumber
204+
205+
def keyPressEvent(self, event):
206+
key = event.key()
207+
if key == Qt.Key_Right:
208+
try:
209+
self.addImage(self.imageViewer_list[self.imageNumber+1])
210+
self.imageNumber = self.imageNumber + 1
211+
except:
212+
self.imageNumber = 0
213+
self.addImage(self.imageViewer_list[self.imageNumber])
214+
elif key == Qt.Key_Left:
215+
try:
216+
self.addImage(self.imageViewer_list[self.imageNumber-1])
217+
self.imageNumber = self.imageNumber - 1
218+
except:
219+
self.imageNumber = len(self.imageViewer_list)-1
220+
self.addImage(self.imageViewer_list[self.imageNumber])
221+
elif key == Qt.Key_Q:
222+
self.hide()
223+
224+
def addImage(self, image):
225+
pixmap = QPixmap(image)
226+
self.screenSize = QDesktopWidget().screenGeometry(0)
227+
self.setPixmap(pixmap.scaled(self.screenSize.width(), self.screenSize.height(), Qt.KeepAspectRatio))
228+
self.setAlignment(Qt.AlignCenter)
229+
self.setStyleSheet("QLabel { background-color : black; }")
230+
172231
def init_gui():
173232
db = loadDB()
174233
app = QApplication(sys.argv)

0 commit comments

Comments
 (0)