From c0998d0289f4f91f0c2d36af050446f1140f4622 Mon Sep 17 00:00:00 2001 From: user01 Date: Fri, 29 Nov 2024 03:12:38 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=EB=A5=BC=20?= =?UTF-8?q?=EA=B0=80=EC=A7=80=EA=B3=A0=20=EC=9E=88=EB=8A=94=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=EB=8F=84=20=EC=86=8C=EC=8A=A4=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EC=97=90=20=EC=B6=94=EA=B0=80=ED=95=A0=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EA=B2=8C=20=ED=95=A8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UI.py | 72 +++++++++++++++++++++++++++++++++-------------------- UtilPack.py | 10 +++++--- 2 files changed, 52 insertions(+), 30 deletions(-) diff --git a/UI.py b/UI.py index 7803f9e..7441ad1 100644 --- a/UI.py +++ b/UI.py @@ -105,6 +105,9 @@ class MyApp(QMainWindow): def on_click_SrcAdd(self): # 폴더 선택 창을 띄움 folder_path = QFileDialog.getExistingDirectory(self, '폴더 선택', '') + + if None == folder_path or True == util.IsEmptyStr(folder_path): + return # 폴더 목록에 추가 self.list_SrcPath.addItem(folder_path) @@ -132,16 +135,13 @@ class MyApp(QMainWindow): # 이미지 파일이 들어있다면... if fileExt.lower() in [".jpg", ".webp", ".jpeg", ".png", ".gif"]: - isContainImg = True - - # 이미지 파일이 들어있다고 알려오면... - if True == isContainImg: - # 이름은 폴더 - FolderName = util.GetParentDirName(folder_path, 0) - item = QListWidgetItem(FolderName) - # 폴더 경로를 따로 저장 - item.setData(Qt.UserRole, folder_path) - self.list_ArcList.addItem(item) + # 이름은 폴더 + FolderName = util.GetParentDirName(folder_path, 0) + item = QListWidgetItem(FolderName) + # 폴더 경로를 따로 저장 + item.setData(Qt.UserRole, folder_path) + self.list_ArcList.addItem(item) + def on_click_SrcDel(self): items = self.list_SrcPath.selectedItems() @@ -163,36 +163,54 @@ class MyApp(QMainWindow): self.list_Infos.clear() - self.dataCurSel = "" + pathTarget = None for item in items: - self.dataCurSel = item.data(Qt.UserRole) - - fileExt = util.GetExtStr(self.dataCurSel) - # 압축파일이 들어있다면... - if fileExt.lower() in [".zip", ".cbz", ".rar"]: - - dataCurSel + pathTarget = item.data(Qt.UserRole) - listZipConts = util.GetZipContentList(self.pathCurSelZip) - self.list_Infos.addItem( QListWidgetItem(self.pathCurSelZip) ) - self.list_Infos.addItem( QListWidgetItem( f"{len(listZipConts)}" ) ) + if False == os.path.exists(pathTarget): + return + + # 압축파일일 경우... + listContents = [] + if True == os.path.isfile(pathTarget): + fileExt = util.GetExtStr(pathTarget) + # 일단 zip 만... + if fileExt.lower() in [".zip", ".cbz"]: + listContents = util.GetZipContentList(pathTarget) + print("zip") + elif fileExt.lower() == ".rar": + listContents = [] + elif True == os.path.isdir(pathTarget): + print("folder") + listContents = util.ListFileExtRcr(pathTarget, [".jpg", ".jpeg", ".png", ".webp"]) + + + self.list_Infos.addItem( QListWidgetItem(pathTarget) ) + self.list_Infos.addItem( QListWidgetItem( f"{len(listContents)}" ) ) self.list_Items.clear() - self.list_Items.addItems( listZipConts ) + self.list_Items.addItems( listContents ) 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) + + selItemText = items[0].text() + pixmap = QPixmap() - pixmap.loadFromData( QByteArray( imageIO.getvalue() ) ) + pathTarget = self.list_Infos.item(0).text() + + if True == os.path.isfile(pathTarget): + data = util.GetZippedFileByte(pathTarget, selItemText) + imageIO = BytesIO(data) + pixmap.loadFromData( QByteArray( imageIO.getvalue() ) ) + elif True == os.path.isdir(pathTarget): + if True == os.path.exists(selItemText): + pixmap.load(selItemText) szLabel = self.label_Image.size() - self.label_Image.setPixmap(pixmap) diff --git a/UtilPack.py b/UtilPack.py index a6903d9..e90e488 100644 --- a/UtilPack.py +++ b/UtilPack.py @@ -80,14 +80,18 @@ def ListContainFiles(pathDir): return listRet -def ListFileExtRcr(pathTrg, strExt): +def ListFileExtRcr(pathTrg, listExt): listRet= [] + if False == isinstance(listExt, list): + print("ext must list") + return + # pathTrg의 하위 디렉토리 및 파일 목록을 얻음 for dirpath, dirnames, filenames in os.walk(pathTrg): for file in filenames: - extTmp = GetExtStr(file, False) - if extTmp.lower() == strExt and file.startswith('.'): + extTmp = GetExtStr(file) + if extTmp.lower() in listExt and not file.startswith('.'): listRet.append(os.path.join(dirpath, file)) return listRet