이미지를 가지고 있는 폴더도 소스리스트에 추가할 수 있게 함.

This commit is contained in:
2024-11-29 03:12:38 +09:00
parent bae6a8add3
commit c0998d0289
2 changed files with 52 additions and 30 deletions

64
UI.py
View File

@@ -106,6 +106,9 @@ class MyApp(QMainWindow):
# 폴더 선택 창을 띄움
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
# 이름은 폴더
FolderName = util.GetParentDirName(folder_path, 0)
item = QListWidgetItem(FolderName)
# 폴더 경로를 따로 저장
item.setData(Qt.UserRole, folder_path)
self.list_ArcList.addItem(item)
# 이미지 파일이 들어있다고 알려오면...
if True == isContainImg:
# 이름은 폴더
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,22 +163,33 @@ class MyApp(QMainWindow):
self.list_Infos.clear()
self.dataCurSel = ""
pathTarget = None
for item in items:
self.dataCurSel = item.data(Qt.UserRole)
pathTarget = item.data(Qt.UserRole)
fileExt = util.GetExtStr(self.dataCurSel)
# 압축파일이 들어있다면...
if fileExt.lower() in [".zip", ".cbz", ".rar"]:
if False == os.path.exists(pathTarget):
return
dataCurSel
# 압축파일일 경우...
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"])
listZipConts = util.GetZipContentList(self.pathCurSelZip)
self.list_Infos.addItem( QListWidgetItem(self.pathCurSelZip) )
self.list_Infos.addItem( QListWidgetItem( f"{len(listZipConts)}" ) )
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):
@@ -186,14 +197,21 @@ class MyApp(QMainWindow):
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)

View File

@@ -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