Skip to content

Instantly share code, notes, and snippets.

/FileExplorer.ui Secret

Created August 3, 2016 19:45
Show Gist options
  • Save anonymous/f741ffdbf5521d94395bbfbb4bfa471d to your computer and use it in GitHub Desktop.
Save anonymous/f741ffdbf5521d94395bbfbb4bfa471d to your computer and use it in GitHub Desktop.
wykop_wyzwaniepython_zadanie3_trudne
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FileExplorerWindow</class>
<widget class="QMainWindow" name="FileExplorerWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>486</width>
<height>456</height>
</rect>
</property>
<property name="windowTitle">
<string>File explorer</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QListView" name="filesList">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>50</y>
<width>361</width>
<height>221</height>
</rect>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
</widget>
<widget class="QPushButton" name="levelUpButton">
<property name="geometry">
<rect>
<x>390</x>
<y>10</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>▲ Level up</string>
</property>
<property name="shortcut">
<string>Backspace</string>
</property>
</widget>
<widget class="QLineEdit" name="pathLineEdit">
<property name="geometry">
<rect>
<x>20</x>
<y>10</y>
<width>361</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QPlainTextEdit" name="fileInfoTextEdit">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>280</y>
<width>441</width>
<height>121</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="newFileButton">
<property name="geometry">
<rect>
<x>390</x>
<y>50</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>New file</string>
</property>
</widget>
<widget class="QPushButton" name="removeButton">
<property name="geometry">
<rect>
<x>390</x>
<y>80</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Remove</string>
</property>
</widget>
<widget class="QPushButton" name="moveButton">
<property name="geometry">
<rect>
<x>390</x>
<y>110</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Move</string>
</property>
</widget>
<widget class="QPushButton" name="copyButton">
<property name="geometry">
<rect>
<x>390</x>
<y>140</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Copy</string>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>486</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '.\FileExplorer.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_FileExplorerWindow(object):
def setupUi(self, FileExplorerWindow):
FileExplorerWindow.setObjectName(_fromUtf8("FileExplorerWindow"))
FileExplorerWindow.resize(486, 456)
self.centralwidget = QtGui.QWidget(FileExplorerWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.filesList = QtGui.QListView(self.centralwidget)
self.filesList.setEnabled(True)
self.filesList.setGeometry(QtCore.QRect(20, 50, 361, 221))
self.filesList.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.filesList.setObjectName(_fromUtf8("filesList"))
self.levelUpButton = QtGui.QPushButton(self.centralwidget)
self.levelUpButton.setGeometry(QtCore.QRect(390, 10, 75, 23))
self.levelUpButton.setObjectName(_fromUtf8("levelUpButton"))
self.pathLineEdit = QtGui.QLineEdit(self.centralwidget)
self.pathLineEdit.setGeometry(QtCore.QRect(20, 10, 361, 20))
self.pathLineEdit.setObjectName(_fromUtf8("pathLineEdit"))
self.fileInfoTextEdit = QtGui.QPlainTextEdit(self.centralwidget)
self.fileInfoTextEdit.setEnabled(False)
self.fileInfoTextEdit.setGeometry(QtCore.QRect(20, 280, 441, 121))
self.fileInfoTextEdit.setObjectName(_fromUtf8("fileInfoTextEdit"))
self.newFileButton = QtGui.QPushButton(self.centralwidget)
self.newFileButton.setGeometry(QtCore.QRect(390, 50, 75, 23))
self.newFileButton.setObjectName(_fromUtf8("newFileButton"))
self.removeButton = QtGui.QPushButton(self.centralwidget)
self.removeButton.setGeometry(QtCore.QRect(390, 80, 75, 23))
self.removeButton.setObjectName(_fromUtf8("removeButton"))
self.moveButton = QtGui.QPushButton(self.centralwidget)
self.moveButton.setGeometry(QtCore.QRect(390, 110, 75, 23))
self.moveButton.setObjectName(_fromUtf8("moveButton"))
self.copyButton = QtGui.QPushButton(self.centralwidget)
self.copyButton.setGeometry(QtCore.QRect(390, 140, 75, 23))
self.copyButton.setObjectName(_fromUtf8("copyButton"))
FileExplorerWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(FileExplorerWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 486, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
FileExplorerWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(FileExplorerWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
FileExplorerWindow.setStatusBar(self.statusbar)
self.retranslateUi(FileExplorerWindow)
QtCore.QMetaObject.connectSlotsByName(FileExplorerWindow)
def retranslateUi(self, FileExplorerWindow):
FileExplorerWindow.setWindowTitle(_translate("FileExplorerWindow", "File explorer", None))
self.levelUpButton.setText(_translate("FileExplorerWindow", "▲ Level up", None))
self.levelUpButton.setShortcut(_translate("FileExplorerWindow", "Backspace", None))
self.newFileButton.setText(_translate("FileExplorerWindow", "New file", None))
self.removeButton.setText(_translate("FileExplorerWindow", "Remove", None))
self.moveButton.setText(_translate("FileExplorerWindow", "Move", None))
self.copyButton.setText(_translate("FileExplorerWindow", "Copy", None))
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FileNameDialog</class>
<widget class="QDialog" name="FileNameDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>353</width>
<height>80</height>
</rect>
</property>
<property name="windowTitle">
<string>Enter file name</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>0</x>
<y>40</y>
<width>341</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QLineEdit" name="filenameLineEdit">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>331</width>
<height>20</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>FileNameDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>FileNameDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '.\FileName.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_FileNameDialog(object):
def setupUi(self, FileNameDialog):
FileNameDialog.setObjectName(_fromUtf8("FileNameDialog"))
FileNameDialog.resize(353, 80)
self.buttonBox = QtGui.QDialogButtonBox(FileNameDialog)
self.buttonBox.setGeometry(QtCore.QRect(0, 40, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
self.filenameLineEdit = QtGui.QLineEdit(FileNameDialog)
self.filenameLineEdit.setGeometry(QtCore.QRect(10, 10, 331, 20))
self.filenameLineEdit.setObjectName(_fromUtf8("filenameLineEdit"))
self.retranslateUi(FileNameDialog)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), FileNameDialog.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), FileNameDialog.reject)
QtCore.QMetaObject.connectSlotsByName(FileNameDialog)
def retranslateUi(self, FileNameDialog):
FileNameDialog.setWindowTitle(_translate("FileNameDialog", "Enter file name", None))
from sys import stdin
import os
import datetime
import shutil
def print_working_directory():
return os.path.abspath(os.curdir)
def change_directory(path):
if os.path.isdir(path):
os.chdir(path)
return None
else:
return FileNotFoundError()
def copy(path1, path2):
if os.path.exists(path1):
if os.path.isdir(path1):
shutil.copytree(path1, path2)
else:
shutil.copy(path1, path2)
return None
else:
return "'{}' does not exist".format(path)
def move(path1, path2):
shutil.move(path1, path2)
return None
def info(path):
result = []
abs_path = os.path.abspath("{}\{}".format(os.curdir, path))
if os.path.isfile(abs_path):
type = "plik"
elif os.path.isdir(abs_path):
type = "katalog"
else:
type = "inny"
result.append("typ: {}".format(type))
result.append("sciezka: {}".format(abs_path))
result.append("rozmiar: {}".format(os.path.getsize(abs_path)))
if os.path.isdir(abs_path):
numberOfFiles = len([name for name in os.listdir(abs_path) if os.path.isfile(name)])
result.append("liczba_plikow: {}".format(numberOfFiles))
ctime = datetime.datetime.fromtimestamp(os.path.getctime(abs_path))
mtime = datetime.datetime.fromtimestamp(os.path.getmtime(abs_path))
result.append("ctime: {}".format(ctime.date()))
result.append("mtime: {}".format(mtime.date()))
return "\n".join(result)
def list_files():
filesList = os.listdir(os.curdir)
filesString = "\n".join(filesList)
return filesString
def remove(path):
if os.path.exists(path):
if os.path.isdir(path):
shutil.rmtree(path)
else:
os.remove(path)
return None
else:
return "'{}' does not exist".format(path)
def touch(filename):
with open(filename, 'a'):
os.utime(filename)
return None
def parse(cmd, *args, **kwargs):
if cmd == "pwd":
return print_working_directory()
elif cmd == "cd":
return change_directory(args[0])
elif cmd == "cp":
return copy(args[0], args[1])
elif cmd == "mv":
return move(args[0], args[1])
elif cmd == "info":
return info(args[0])
elif cmd == "ls":
return list_files()
elif cmd == "rm":
return remove(args[0])
elif cmd == "touch":
return touch(args[0])
else:
return None
def main():
while True:
line = stdin.readline()
arguments = line.split()
if len(arguments) > 0:
result = parse(*arguments)
if result is not None:
print(result)
if __name__ == "__main__":
main()
import sys
from PyQt4 import QtCore, QtGui
from FileExplorerUi import Ui_FileExplorerWindow
from PyQt4.QtGui import QStandardItemModel, QStandardItem, QItemSelection, QDialog
from zadanie3 import print_working_directory, change_directory, list_files, info, touch, copy, remove, move
from FileNameUi import Ui_FileNameDialog
class StartQT(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
ui = Ui_FileExplorerWindow()
self.ui = ui
self.ui.setupUi(self)
ui.pathLineEdit.textChanged.connect(self.refresh)
ui.pathLineEdit.setText(print_working_directory())
ui.filesList.doubleClicked.connect(self.changeDir)
ui.levelUpButton.clicked.connect(self.levelUp)
ui.newFileButton.clicked.connect(self.newFile)
ui.copyButton.clicked.connect(self.copyFile)
ui.moveButton.clicked.connect(self.moveFile)
ui.removeButton.clicked.connect(self.removeFile)
def refresh(self):
model = QStandardItemModel(self.ui.filesList)
filesList = list_files().split("\n")
for file in filesList:
item = QStandardItem(file)
model.appendRow(item)
self.ui.filesList.setModel(model)
self.ui.filesList.selectionModel().selectionChanged.connect(self.fileInfo)
def fileInfo(self, selected, deselected):
if len(selected.indexes()) > 0:
index = selected.indexes()[0]
elif len(deselected.indexes()) > 0:
index = deselected.indexes()[0]
path = self.ui.filesList.model().itemData(index)[0]
fileInfo = info(path)
self.ui.fileInfoTextEdit.clear()
self.ui.fileInfoTextEdit.insertPlainText(fileInfo)
def changeDir(self, index):
path = self.ui.filesList.model().itemData(index)[0]
result = change_directory(path)
if not isinstance(result, FileNotFoundError):
self.ui.pathLineEdit.setText(print_working_directory())
self.ui.fileInfoTextEdit.clear()
def levelUp(self):
change_directory("../")
self.ui.pathLineEdit.setText(print_working_directory())
def showDialog(self, function, *args):
dialog = QDialog()
dialog.ui = Ui_FileNameDialog()
dialog.ui.setupUi(dialog)
dialog.ui.filenameLineEdit.setFocus()
result = dialog.exec_()
if result == QDialog.Accepted:
filename = dialog.ui.filenameLineEdit.text()
args += (filename,)
function(*args)
self.refresh()
def newFile(self):
self.showDialog(touch)
def copyFile(self):
filesList = self.ui.filesList
if len(filesList.selectedIndexes()) == 1:
path = filesList.model().itemData(filesList.selectedIndexes()[0])[0]
self.showDialog(copy, path)
def moveFile(self):
filesList = self.ui.filesList
if len(filesList.selectedIndexes()) == 1:
path = filesList.model().itemData(filesList.selectedIndexes()[0])[0]
self.showDialog(move, path)
def removeFile(self):
filesList = self.ui.filesList
if len(filesList.selectedIndexes()) == 1:
path = filesList.model().itemData(filesList.selectedIndexes()[0])[0]
remove(path)
self.refresh()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = StartQT()
myapp.show()
sys.exit(app.exec_())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment