FileRobot/interface.py
Ayxan Shahsuvarov 4ef60ab898 version_1
2021-08-11 00:26:25 +03:00

314 lines
13 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from PyQt6 import QtGui, QtWidgets
from PyQt6.QtWidgets import QMainWindow, QFileDialog, QMessageBox, QWidget
from MainWindow import Ui_MainWindow
import sys
import os
import main as mn
import webbrowser
from Form import Ui_Form
import rc_icons
class Window2(QWidget):
def __init__(self):
super().__init__()
self.x = Ui_Form()
self.x.setupUi(self)
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.fr = Window2()
#tab1<
self.ui.combo.addItems(['PDF', 'TXT', 'PPTX', 'PPT', 'XLSX', 'DOCX',
'DOC', 'MP4', 'MP3', 'PNG', 'JPG', 'JPEG', 'ICO'])
self.exception_folder = []
self.exception_folder_print = []
self.exception_files = []
self.exception_files_print = []
self.directory = ''
self.new_folder = ''
self.ui.actionGitHub.triggered.connect(lambda : webbrowser.open("https://github.com/Ayxan3-14/Projects"))
self.ui.select_radio_btn.clicked.connect(self.select_radio_btn_def)
self.ui.search_btn.clicked.connect(self.file_sh)
self.ui.open_btn.clicked.connect(self.file_open)
self.ui.includ_radio_btn.clicked.connect(self.includ_radio_btn_def)
self.ui.exception_folder_btn.clicked.connect(self.exception_folder_def)
self.ui.exception_file_btn.clicked.connect(self.exception_file_def)
self.ui.delete_btn.clicked.connect(self.delete_def)
self.ui.create_btn.clicked.connect(self.create_folder)
self.ui.copy_btn.clicked.connect(self.copy_def)
self.ui.clear_btn.clicked.connect(self.clear_def)
self.ui.actionHaqq_nda.triggered.connect(self.about)
#tab1>
#tab2<
self.directory_tab2 = ''
self.ui.pushButton_3.clicked.connect(self.file_sh_tab2)
self.ui.pushButton.clicked.connect(self.file_open_tab2)
self.ui.pushButton_4.clicked.connect(self.clear_def_tab2)
self.ui.pushButton_6.clicked.connect(self.delete_def_tab2)
self.ui.pushButton_2.clicked.connect(self.goto_file)
#tab2>
def clear_def_tab2(self):
self.ui.lineEdit.clear()
self.ui.checkBox.setChecked(False)
self.directory_tab2 = ''
self.ui.label_3.setText('Seçilməyib')
self.ui.pushButton_6.setDisabled(True)
def goto_file(self):
if self.ui.lineEdit_2.text():
try:
os.startfile(self.ui.lineEdit_2.text())
except FileNotFoundError:
QMessageBox.warning(self, 'Adres düzgün dəyil!', 'Qovluq (fayl) adresi düzgün dəyil')
else:
QMessageBox.warning(self, 'Qovluq adresi daxil etməlisiniz!', 'Qovluq (fayl) adresi daxil etməmisiniz')
def delete_def_tab2(self):
icon = ":/icons/icons/Google-Noto-Emoji-Symbols-73028-warning.ico"
text = f'{self.d.cnt} ədəd {self.d.file_name} faylını silmək istəyirsiniz?'
result = self.notification_screen(icon, 'Fayllar silinir', text, 'Yox', '')
if result == 16384:
self.d.file_delete()
self.ui.pushButton_6.setDisabled(True)
st = '{} qovluğundakı\n{} ədəd {} faylı silindi.'
st = st.format(self.directory_print_tab2, self.d.cnt, self.d.file_name)
QMessageBox.information(self, 'Fayllar Silindi', st)
def file_open_tab2(self):
x = str(QFileDialog.getExistingDirectory(self, "Axtarılacaq qovluğu seçin", os.getenv('HOME')))
if x:
self.ui.pushButton_6.setDisabled(True)
self.directory_tab2 = x.replace('/','\\')
self.directory_print_tab2 = os.path.split(self.directory_tab2)[1]
self.ui.label_3.setText(self.directory_print_tab2)
def file_sh_tab2(self):
if not self.ui.lineEdit.text():
QMessageBox.warning(self, 'Fayl adı daxil etməlisiniz!', 'Fayl adı daxil etməmisiniz')
elif not self.directory_tab2:
QMessageBox.warning(self, 'Axtarılacaq qovluq seçməlisiniz!', 'Axtarılacaq qovluq seçməmisiniz')
else:
self.d = mn.Search_file(self.ui.lineEdit.text(), self.directory_tab2)
if self.ui.checkBox_2.isChecked() and self.ui.checkBox.isChecked():
self.d.file_search_extention()
elif not self.ui.checkBox_2.isChecked() and not self.ui.checkBox.isChecked():
self.d.file_search_lower()
elif self.ui.checkBox.isChecked():
self.d.file_search()
elif self.ui.checkBox_2.isChecked():
self.d.file_search_lower_extention()
if self.d.cnt != 0:
self.ui.pushButton_6.setDisabled(False)
text = '{} qovluğunda\n{} ədəd {} faylı tapıldı.'
text = text.format(self.directory_print_tab2, self.d.cnt, self.d.file_name)
icon = ":/icons/icons/Custom-Icon-Design-Flatastic-1-Information.ico"
text = f'{self.d.cnt} ədəd {self.d.file_name} faylı tapıldı'
result = self.notification_screen(icon, 'Fayl tapıldı', text, 'Bağla', 'Göstər')
if result == 16384:
self.fr.show()
self.fr.setWindowIcon(QtGui.QIcon(":/icons/icons/Custom-Icon-Design-Flatastic-1-Information.ico"))
file_print = [i for i in self.d.l]
self.fr.x.textBrowser.setText(('\n'+'-'*90).join(file_print))
else:
QMessageBox.information(self, 'Fayl tapılmadı!', f'{self.d.file_name} adında fayl tapılmadı')
def about(self):
text = '''<font size = 4><b>Ayxan Şahsuvarov</b> tərəfindən hazırlandı.
<br><br>
Bütün boğuşdurma haqları sərbəstdi.
<br><br>
<br><br>
</font>
<font size = 2>© Hüquqları qorunmur</font>
'''
QMessageBox.about(self, 'Haqqında', text)
def clear_def(self):
self.ui.exception_folder_lbl.setText('Seçilməyib')
self.ui.exception_file_lbl.setText('Seçilməyib')
self.ui.create_file_lbl.setText('Seçilməyib')
self.ui.open_lbl.setText('Seçilməyib')
self.directory = ''
self.new_folder = ''
self.exception_folder = []
self.exception_folder_print = []
self.exception_files = []
self.exception_files_print = []
self.ui.include_line_edit.clear()
self.ui.exception_folder_btn.setDisabled(True)
self.ui.exception_file_btn.setDisabled(True)
self.ui.copy_btn.setDisabled(True)
self.ui.delete_btn.setDisabled(True)
self.ui.create_btn.setDisabled(True)
self.ui.select_radio_btn.setChecked(True)
self.ui.combo.setDisabled(False)
self.ui.include_line_edit.setDisabled(True)
self.ui.include_line_edit.setPlaceholderText('')
self.ui.combo.setCurrentIndex(0)
def select_radio_btn_def(self):
self.ui.combo.setDisabled(False)
self.ui.include_line_edit.setDisabled(True)
self.ui.include_line_edit.setPlaceholderText('')
self.ui.combo.showPopup()
def includ_radio_btn_def(self):
self.ui.combo.setDisabled(True)
self.ui.include_line_edit.setDisabled(False)
self.ui.include_line_edit.setPlaceholderText('Fayl tipini daxil edin')
def file_open(self):
x = str(QFileDialog.getExistingDirectory(self, "Axtarılacaq qovluğu seçin", os.getenv('HOME')))
if x:
self.ui.copy_btn.setDisabled(True)
self.ui.delete_btn.setDisabled(True)
self.directory = x.replace('/','\\')
self.directory_print = os.path.split(self.directory)[1]
self.ui.open_lbl.setText(os.path.split(self.directory_print)[1])
self.ui.exception_folder_btn.setDisabled(False)
self.ui.exception_file_btn.setDisabled(False)
def create_folder(self):
x = QFileDialog.getExistingDirectory(self, 'Faylların kopyalanacağı yeri seçin', os.getenv('HOME'))
if x:
self.new_folder = x.replace('/','\\')
self.ui.create_file_lbl.setText(os.path.split(self.new_folder)[1])
def exception_folder_def(self):
x = str(QFileDialog.getExistingDirectory(self, "İstisna olunacaq qovluq seçin", self.directory))
if x:
x = x.replace('/','\\')
if x not in self.exception_folder:
self.ui.copy_btn.setDisabled(True)
self.ui.delete_btn.setDisabled(True)
self.exception_folder.append(x)
self.exception_folder_print.append(os.path.split(x)[1])
self.ui.exception_folder_lbl.setText('\n'.join(self.exception_folder_print))
def exception_file_def(self):
x = QFileDialog.getOpenFileName(self, "İstisna olunacaq fayl seçin", self.directory)[0]
if x:
x = x.replace('/','\\')
if x not in self.exception_files:
self.ui.copy_btn.setDisabled(True)
self.ui.delete_btn.setDisabled(True)
self.exception_files.append(x)
self.exception_files_print.append(os.path.split(x)[1])
self.ui.exception_file_lbl.setText('\n'.join(self.exception_files_print))
def file_sh(self):
if not self.directory:
QMessageBox.warning(self, 'Axtarılacaq qovluq seçməlisiniz!', 'Axtarılacaq qovluq seçməmisiniz')
else:
if self.ui.select_radio_btn.isChecked():
file_name = self.ui.combo.currentText()
self.file_sh_print(file_name)
elif self.ui.includ_radio_btn.isChecked():
file_name = self.ui.include_line_edit.text()
if file_name:
self.file_sh_print(file_name)
else:
QMessageBox.warning(self, 'Fayl tipini daxil etməlisiniz!', 'Fayl tipini daxil etməmisiz')
def file_sh_print(self, file_name):
self.c = mn.Copy_file(file_name.upper(), self.directory,
self.exception_folder, self.exception_files)
if self.c.cnt != 0:
self.ui.copy_btn.setDisabled(False)
self.ui.delete_btn.setDisabled(False)
self.ui.create_btn.setDisabled(False)
icon = ":/icons/icons/Custom-Icon-Design-Flatastic-1-Information.ico"
text = f'{self.c.cnt} ədəd {self.c.file_name} faylı tapıldı'
result = self.notification_screen(icon, 'Fayllar tapıldı', text, 'Bağla', 'Göstər')
if result == 16384:
self.fr.show()
self.fr.setWindowIcon(QtGui.QIcon(":/icons/icons/Custom-Icon-Design-Flatastic-1-Information.ico"))
file_print = [k for i,k,j in self.c.d]
self.fr.x.textBrowser.setText(('\n'+'-'*88).join(file_print))
else:
QMessageBox.information(self, 'Fayl tapılmadı!', f'{self.c.file_name} tipində fayl tapılmadı')
def copy_def(self):
if not self.new_folder:
QMessageBox.warning(self, 'Faylların kopyalanacağı yer seçməlisiniz!', 'Faylların kopyalanacağı yer seçməmisiniz')
else:
self.c.file_copy(self.new_folder)
st = '{} qovluğundakı {} ədəd {} faylının\n{} dənəsi {} qovluğuna kopyalandı.'
st = st.format(self.directory_print, self.c.cnt,
self.c.file_name, len(self.c),
os.path.split(self.new_folder)[1]+'\\'+os.path.split(self.c.doc_address)[1])
QMessageBox.information(self, 'Fayllar Kopyalandı', st)
def notification_screen(self, icon, windowtitle, text, btn_no_text, btn_yes_text):
mb = QMessageBox()
mb.setWindowIcon(QtGui.QIcon(icon))
mb.setWindowTitle(windowtitle)
mb.setText(text)
mb.setStandardButtons(QMessageBox.StandardButton.Yes |
QMessageBox.StandardButton.No)
mb.setEscapeButton(QMessageBox.StandardButton.No)
btn_no = mb.button(QMessageBox.StandardButton.No)
btn_no.setText(btn_no_text)
btn_yes = mb.button(QMessageBox.StandardButton.Yes)
btn_yes.setText(btn_yes_text)
result = mb.exec()
return result
def delete_def(self):
icon = ":/icons/icons/Google-Noto-Emoji-Symbols-73028-warning.ico"
text = f'{self.c.cnt} ədəd {self.c.file_name} faylını silmək istəyirsiniz?'
result = self.notification_screen(icon, 'Fayllar silinir', text, 'Yox', '')
if result == 16384:
self.c.file_delete()
self.ui.copy_btn.setDisabled(True)
self.ui.delete_btn.setDisabled(True)
st = '{} qovluğundakı\n{} ədəd {} faylı silindi.'
st = st.format(self.directory_print, self.c.cnt, self.c.file_name)
QMessageBox.information(self, 'Fayllar Silindi', st)
app = QtWidgets.QApplication(sys.argv)
wnd = Window()
wnd.show()
sys.exit(app.exec())