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