1
1
import sys
2
2
from akari .utils import loadDB , commit_changes
3
- from PyQt5 .QtCore import QSize
3
+ from PyQt5 .QtCore import QSize , Qt
4
4
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
6
6
7
7
class Main (QWidget ):
8
8
def __init__ (self ):
@@ -11,23 +11,32 @@ def __init__(self):
11
11
self .setWindowIcon (QIcon ('static/icon.jpg' ))
12
12
self .db = None
13
13
14
+ self .imageViewer = imageViewer ()
15
+
14
16
self .mainLayout = QHBoxLayout ()
15
17
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
+
16
24
self .sidePanel = QVBoxLayout ()
17
25
self .tagList = QListWidget ()
18
26
self .filerButton = QPushButton ("Filter" )
19
27
self .clearFilerButton = QPushButton ("Reset" )
20
28
self .sidePanel .addWidget (self .tagList )
29
+ self .rightSplitterWidget .setLayout (self .sidePanel )
21
30
22
31
self .imagePanel = QVBoxLayout ()
23
32
self .imageList = QListWidget ()
24
33
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 " )
27
36
self .imagePanel .addWidget (self .imageList )
37
+ self .leftSplitterWidget .setLayout (self .imagePanel )
28
38
29
- self .mainLayout .addLayout (self .sidePanel )
30
- self .mainLayout .addLayout (self .imagePanel )
39
+ self .mainLayout .addWidget (self .splitter )
31
40
self .setLayout (self .mainLayout )
32
41
33
42
self .initUI ()
@@ -42,8 +51,8 @@ def initUI(self):
42
51
self .imageList .installEventFilter (self )
43
52
44
53
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 )
47
56
48
57
self .addEventHandlers ()
49
58
self .show ()
@@ -54,10 +63,12 @@ def updateDB(self, db):
54
63
def addEventHandlers (self ):
55
64
self .filerButton .clicked .connect (self .filterButton_pressed )
56
65
self .clearFilerButton .clicked .connect (self .clearFilterButton_pressed )
66
+ self .fsToggle .clicked .connect (self .fsToggle_pressed )
67
+ self .quitButton .clicked .connect (self .close )
57
68
58
69
def addTagEditingButtons (self ):
59
70
self .addTagsButton = QPushButton ("Add New Tag" )
60
- self .removeTagsButton = QPushButton ("Remove Tags" )
71
+ self .removeTagsButton = QPushButton ("Remove Selected Tags" )
61
72
self .sidePanel .addWidget (self .addTagsButton )
62
73
self .sidePanel .addWidget (self .removeTagsButton )
63
74
self .addTagsButton .clicked .connect (self .addTagsButton_pressed )
@@ -77,6 +88,15 @@ def refreshTagListForImage(self, image):
77
88
for tag in self .db [image ]:
78
89
self .tagList .addItem (tag )
79
90
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
+
80
100
def addTagsButton_pressed (self ):
81
101
image = self .imageList .item (0 ).data (0 )
82
102
tag , okPressed = QInputDialog .getText (self , "Enter Tag" ,"Enter Tag" , QLineEdit .Normal , "" )
@@ -169,6 +189,45 @@ def addTags(self):
169
189
tagList .append (str (self .db ['akari-tags' ][tag ]) + ' ' + tag )
170
190
self .tagList .addItems (tagList )
171
191
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
+
172
231
def init_gui ():
173
232
db = loadDB ()
174
233
app = QApplication (sys .argv )
0 commit comments