Update .gitignore, StoreXLS.py, and 4 more files...
This commit is contained in:
176
UI.py
Normal file
176
UI.py
Normal file
@@ -0,0 +1,176 @@
|
||||
import sys
|
||||
import os
|
||||
import UtilPack as util
|
||||
|
||||
from io import BytesIO
|
||||
|
||||
from PyQt5.QtCore import Qt, QUrl, QSettings, QSize, QPoint, QByteArray
|
||||
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton, QVBoxLayout, QLineEdit, QHBoxLayout, QListWidget, QListWidgetItem, QLabel, QFileDialog
|
||||
from PyQt5.QtGui import QPixmap, QKeyEvent
|
||||
|
||||
QApplication.setAttribute(Qt.AA_ShareOpenGLContexts)
|
||||
|
||||
class MyApp(QMainWindow):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.initUI()
|
||||
self.loadINI()
|
||||
|
||||
|
||||
def closeEvent(self, event):
|
||||
self.saveINI()
|
||||
event.accept()
|
||||
|
||||
|
||||
def initUI(self):
|
||||
layout = self.MakeUI()
|
||||
|
||||
# 레이아웃을 윈도우에 적용
|
||||
central_widget = QWidget()
|
||||
central_widget.setLayout(layout)
|
||||
self.setCentralWidget(central_widget)
|
||||
self.setWindowTitle('Manga Database')
|
||||
self.move(10, 10)
|
||||
self.show()
|
||||
|
||||
|
||||
def loadINI(self):
|
||||
settings = QSettings('MyApp', 'settings')
|
||||
|
||||
window_size = settings.value('window/size', '800, 600')
|
||||
window_position = settings.value('window/position', '100, 100')
|
||||
|
||||
|
||||
def saveINI(self):
|
||||
settings = QSettings('MyApp', 'settings')
|
||||
|
||||
# 키-값 형식으로 데이터 저장
|
||||
settings.setValue('window/size', "1024,768")
|
||||
settings.setValue('window/position', "100,100")
|
||||
|
||||
|
||||
def MakeUI_Left(self):
|
||||
self.list_SrcPath = QListWidget()
|
||||
|
||||
btn_Add = QPushButton("Add", self)
|
||||
btn_Add.clicked.connect(self.on_click_SrcAdd)
|
||||
btn_Del = QPushButton("Del", self)
|
||||
btn_Del.clicked.connect(self.on_click_SrcDel)
|
||||
btn_Read = QPushButton("Read!", self)
|
||||
btn_Read.clicked.connect(self.on_click_SrcRead)
|
||||
layout_Btns = QHBoxLayout()
|
||||
layout_Btns.addWidget(btn_Add)
|
||||
layout_Btns.addWidget(btn_Del)
|
||||
layout_Btns.addWidget(btn_Read)
|
||||
|
||||
layout_Top = QVBoxLayout()
|
||||
layout_Top.addWidget(self.list_SrcPath)
|
||||
layout_Top.addLayout(layout_Btns)
|
||||
|
||||
self.list_ArcList = QListWidget(self)
|
||||
self.list_ArcList.itemSelectionChanged.connect(self.on_Item_SelChanged_listArc)
|
||||
self.list_Infos = QListWidget(self)
|
||||
|
||||
layout = QVBoxLayout()
|
||||
layout.addLayout(layout_Top)
|
||||
layout.addWidget(self.list_ArcList)
|
||||
layout.addWidget(self.list_Infos)
|
||||
|
||||
return layout
|
||||
|
||||
|
||||
def MakeUI(self):
|
||||
layout_L = self.MakeUI_Left()
|
||||
|
||||
# show Image in middle Layout
|
||||
self.label_Image = QLabel(self)
|
||||
|
||||
# Load Default Image
|
||||
pixmap = QPixmap("layoutImg.jpeg")
|
||||
scaled_Pix = pixmap.scaledToHeight(600)
|
||||
self.label_Image.setPixmap(scaled_Pix)
|
||||
|
||||
self.list_Items = QListWidget(self)
|
||||
self.list_Items.itemSelectionChanged.connect(self.on_Item_SelChanged_Items)
|
||||
|
||||
# 레이아웃 설정
|
||||
layout = QHBoxLayout()
|
||||
layout.addLayout(layout_L)
|
||||
layout.addWidget(self.label_Image)
|
||||
layout.addWidget(self.list_Items)
|
||||
|
||||
return layout
|
||||
|
||||
|
||||
def on_click_SrcAdd(self):
|
||||
# 폴더 선택 창을 띄움
|
||||
folder_path = QFileDialog.getExistingDirectory(self, '폴더 선택', '')
|
||||
self.list_SrcPath.addItem(folder_path)
|
||||
|
||||
listFiles = util.ListContainFiles(folder_path)
|
||||
for pathFile in listFiles:
|
||||
filename = util.GetParentDirName(pathFile, 0)
|
||||
fileExt = util.GetExtStr(filename)
|
||||
|
||||
if not fileExt.lower() in [".zip", ".cbz"]:
|
||||
continue
|
||||
|
||||
item = QListWidgetItem(filename)
|
||||
item.setData(Qt.UserRole, pathFile)
|
||||
self.list_ArcList.addItem(item)
|
||||
|
||||
|
||||
def on_click_SrcDel(self):
|
||||
items = self.list_SrcPath.selectedItems()
|
||||
|
||||
if not items:
|
||||
return
|
||||
|
||||
for item in items:
|
||||
row = self.list_SrcPath.row(item)
|
||||
self.list_SrcPath.takeItem(row)
|
||||
|
||||
|
||||
def on_click_SrcRead(self):
|
||||
pass
|
||||
|
||||
|
||||
def on_Item_SelChanged_listArc(self):
|
||||
items = self.list_ArcList.selectedItems()
|
||||
|
||||
self.list_Infos.clear()
|
||||
|
||||
self.pathCurSelZip = ""
|
||||
for item in items:
|
||||
self.pathCurSelZip = item.data(Qt.UserRole)
|
||||
|
||||
listZipConts = util.GetZipContentList(self.pathCurSelZip)
|
||||
self.list_Infos.addItem( QListWidgetItem(self.pathCurSelZip) )
|
||||
self.list_Infos.addItem( QListWidgetItem( f"{len(listZipConts)}" ) )
|
||||
|
||||
self.list_Items.clear()
|
||||
self.list_Items.addItems( listZipConts )
|
||||
|
||||
|
||||
def on_Item_SelChanged_Items(self):
|
||||
items = self.list_Items.selectedItems()
|
||||
if 0 >= len(items):
|
||||
return
|
||||
|
||||
data = util.GetZippedFileByte(self.pathCurSelZip, items[0].text())
|
||||
imageIO = BytesIO(data)
|
||||
pixmap = QPixmap()
|
||||
pixmap.loadFromData( QByteArray( imageIO.getvalue() ) )
|
||||
|
||||
self.label_Image.setPixmap(pixmap)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
app.setQuitOnLastWindowClosed(True)
|
||||
main_window = MyApp()
|
||||
#main_window.show()
|
||||
|
||||
sys.exit(app.exec_())
|
||||
|
||||
Reference in New Issue
Block a user