Compare commits

..

No commits in common. "master" and "VIS-31" have entirely different histories.

7 changed files with 20 additions and 90 deletions

View File

View File

@ -0,0 +1 @@
test txt file

Binary file not shown.

View File

@ -6,7 +6,7 @@ from datetime import datetime
import time import time
from PyQt5 import QtCore from PyQt5 import QtCore
from PyQt5.QtWidgets import * from PyQt5.QtWidgets import *
from PyQt5.QtGui import * from PyQt5.QtGui import QIcon, QPixmap, QMovie
from PyQt5.QtCore import * from PyQt5.QtCore import *
scriptPath = os.path.dirname(os.path.realpath(__file__)) scriptPath = os.path.dirname(os.path.realpath(__file__))
@ -17,33 +17,15 @@ LIB_RAW = 0
LIB_VIS = 1 LIB_VIS = 1
stylesheet = """
MainWindow {
background: qlineargradient(x1:0 y1:0, x2:1 y2:0, stop:0 rgba(255,218,113,1), stop:0.5 rgba(215,137,255,1), stop:1 rgba(105,126,255,1));
}
"""
def files(path): def files(path):
for subdir, dirs, files_list in os.walk(path): for subdir, dirs, files_list in os.walk(path):
for file in files_list: for file in files_list:
yield os.path.join(subdir, file) yield os.path.join(subdir, file)
def delete_file(file):
os.remove(file)
def save_input(oldpath): def save_input(oldpath):
# add timestamp to the filename, so it wouln't overwrite but the user still knows which file's which # make timestampt the filename, so it wouln't overwrite
timestamp = str(int(time.time())) timestamp = str(int(time.time()))
basename = os.path.basename(oldpath) filename = timestamp + '.' + oldpath.split('.')[-1]
try:
index_of_dot = basename.index('.')
basename_no_extension = basename[:index_of_dot]
extension = basename[index_of_dot:]
except ValueError:
basename_no_extension = basename
extension = ''
filename = basename_no_extension + '_' + timestamp + extension
newpath = inputFilePath + '\\' + filename newpath = inputFilePath + '\\' + filename
shutil.copy(oldpath, newpath) shutil.copy(oldpath, newpath)
return newpath return newpath
@ -63,7 +45,7 @@ class analizePopup(QMessageBox):
super(analizePopup, self).__init__(parent) super(analizePopup, self).__init__(parent)
self.setStyleSheet("QLabel{min-width: 100px; max-width: 100px; qproperty-alignment: AlignCenter;}"); self.setStyleSheet("QLabel{min-width: 100px; max-width: 100px; qproperty-alignment: AlignCenter;}");
self.setWindowIcon(QIcon(scriptPath + os.path.sep + 'static/v_logo.jpg')) self.setWindowIcon(QIcon(scriptPath + os.path.sep + 'static/v_logo.jpg'))
self.setText("Analyzing file...") self.setText("Analizing file...")
self.setWindowTitle("File analysis") self.setWindowTitle("File analysis")
# create Label # create Label
self.setIconPixmap(QPixmap(scriptPath + os.path.sep + 'static/loading.gif')) self.setIconPixmap(QPixmap(scriptPath + os.path.sep + 'static/loading.gif'))
@ -77,7 +59,7 @@ class analizePopup(QMessageBox):
class LibraryTableButtons(QWidget): class LibraryTableButtons(QWidget):
def __init__(self, file, table, type, mainWindow, parent=None): def __init__(self, file, table, type, parent=None):
super(LibraryTableButtons,self).__init__(parent) super(LibraryTableButtons,self).__init__(parent)
def viewFile(): def viewFile():
@ -87,8 +69,8 @@ class LibraryTableButtons(QWidget):
self.exPopup = deletePopup() self.exPopup = deletePopup()
ret = self.exPopup.exec() ret = self.exPopup.exec()
if ret == self.exPopup.Yes: if ret == self.exPopup.Yes:
delete_file(file) os.remove(file)
table.fillTable(type, mainWindow) table.fillTable(type)
def analyzeFile(): def analyzeFile():
self.exPopup = analizePopup() self.exPopup = analizePopup()
@ -101,7 +83,6 @@ class LibraryTableButtons(QWidget):
pass pass
#popen.wait() #popen.wait()
self.exPopup.close() self.exPopup.close()
# mainWindow.showVisualisation(file) <- ALWAYS shows even if you cancel the process and we don't have time to fix that now
layout = QHBoxLayout() layout = QHBoxLayout()
@ -126,11 +107,11 @@ class LibraryTableButtons(QWidget):
class LibraryTable(QTableWidget): class LibraryTable(QTableWidget):
def __init__(self, type, mainWindow, singleFilePath = None, parent = None): def __init__(self, type, singleFilePath = None, parent = None):
QTableWidget.__init__(self) QTableWidget.__init__(self)
self.fillTable(type, mainWindow, singleFilePath) self.fillTable(type, singleFilePath)
def fillTable(self, type, mainWindow, singleFilePath = None): def fillTable(self, type, singleFilePath = None):
self.setColumnCount(3) self.setColumnCount(3)
if singleFilePath != None: if singleFilePath != None:
@ -145,7 +126,7 @@ class LibraryTable(QTableWidget):
self.setItem(0,0,QTableWidgetItem(str(datetime.fromtimestamp(os.path.getmtime(singleFilePath))))) self.setItem(0,0,QTableWidgetItem(str(datetime.fromtimestamp(os.path.getmtime(singleFilePath)))))
self.setItem(0,1,QTableWidgetItem(str(os.path.basename(singleFilePath)))) self.setItem(0,1,QTableWidgetItem(str(os.path.basename(singleFilePath))))
self.setCellWidget(0,2,LibraryTableButtons(singleFilePath, self, type, mainWindow)) self.setCellWidget(0,2,LibraryTableButtons(singleFilePath, self, type))
else: else:
@ -172,7 +153,7 @@ class LibraryTable(QTableWidget):
for index, date in enumerate(dates): for index, date in enumerate(dates):
self.setItem(index,0,date) self.setItem(index,0,date)
self.setItem(index,1,names[index]) self.setItem(index,1,names[index])
self.setCellWidget(index,2,LibraryTableButtons(names[index].text(), self, type, mainWindow)) self.setCellWidget(index,2,LibraryTableButtons(names[index].text(), self, type))
class formatHelp(QLabel): class formatHelp(QLabel):
@ -182,7 +163,7 @@ class formatHelp(QLabel):
with open(scriptPath + os.path.sep + 'static/help.txt', 'r', encoding='utf-8') as file: with open(scriptPath + os.path.sep + 'static/help.txt', 'r', encoding='utf-8') as file:
help_text = file.read().replace('\n', '') help_text = file.read().replace('\n', '')
self.setText(help_text) self.setText(help_text)
self.setStyleSheet("padding-left: 20px; padding-right: 20px; padding-top: 10px; padding-bottom: 10px; font-size:32px; background-color: white;") self.setStyleSheet("padding-left: 20px; padding-right: 20px; padding-top: 10px; padding-bottom: 10px; font-size:32px;")
self.adjustSize() self.adjustSize()
@ -199,33 +180,14 @@ class MainWindow(QMainWindow):
label = formatHelp() label = formatHelp()
self.setCentralWidget(label) self.setCentralWidget(label)
def showHomepage(self):
# Upload file button + instructions on homepage
label = QLabel('Welcome to VisionScore! Use the button below to upload a file and start analyzing it. If you need further help, please click the "help" item in the menu above.', self)
label.setFont(QFont('Arial', 14))
label.setStyleSheet('color: white;')
label.adjustSize()
label.move(200,200)
shadow = QGraphicsDropShadowEffect()
shadow.setBlurRadius(10)
shadow.setOffset(2)
label.setGraphicsEffect(shadow)
button = QPushButton('Upload file', self)
button.setToolTip('This is an example button')
button.move(850,270)
button.setFixedSize(220, 50)
button.clicked.connect(self.showUploadFile)
# Show raw uploaded files # Show raw uploaded files
def showInputLibrary(self): def showInputLibrary(self):
libTable = LibraryTable(LIB_RAW, self) libTable = LibraryTable(LIB_RAW)
self.setCentralWidget(libTable) self.setCentralWidget(libTable)
# Show visualisations # Show visualisations
def showVisualisationsLibrary(self): def showVisualisationsLibrary(self):
libTable = LibraryTable(LIB_VIS, self) libTable = LibraryTable(LIB_VIS)
self.setCentralWidget(libTable) self.setCentralWidget(libTable)
def showUploadFile(self): def showUploadFile(self):
@ -235,19 +197,13 @@ class MainWindow(QMainWindow):
if dialog.exec_(): if dialog.exec_():
file_path = dialog.selectedFiles()[0] # ['C:/Users/agatha/Desktop/SYI/VisionScore/win_venv/requirements.txt'] file_path = dialog.selectedFiles()[0] # ['C:/Users/agatha/Desktop/SYI/VisionScore/win_venv/requirements.txt']
newPath = save_input(file_path) newPath = save_input(file_path)
singleFileTable = LibraryTable(LIB_RAW, self, newPath) singleFileTable = LibraryTable(LIB_RAW, newPath)
self.setCentralWidget(singleFileTable) self.setCentralWidget(singleFileTable)
def showVisualisation(self, path):
singleFileTable = LibraryTable(LIB_VIS, self, path)
self.setCentralWidget(singleFileTable)
def initUI(self): def initUI(self):
self.setGeometry(0, 0, 600, 400) self.setGeometry(0, 0, 600, 400)
self.setWindowTitle('VisionScore') self.setWindowTitle('VisionScore')
scriptDir = os.path.dirname(os.path.realpath(__file__)) self.setWindowIcon(QIcon(scriptPath + os.path.sep + 'static/v_logo.jpg'))
self.setWindowIcon(QIcon(scriptDir + os.path.sep + 'static/v_logo.jpg'))
self.showHomepage()
# File menu # File menu
menuBar = self.menuBar() menuBar = self.menuBar()
@ -290,7 +246,6 @@ class MainWindow(QMainWindow):
def main(): def main():
app = QApplication(sys.argv) app = QApplication(sys.argv)
app.setStyleSheet(stylesheet)
w = MainWindow() w = MainWindow()
sys.exit(app.exec_()) sys.exit(app.exec_())

View File

@ -1,4 +0,0 @@
testing
more testing

View File

@ -22,7 +22,6 @@ class savingFileTest(unittest.TestCase):
new_file_content += line new_file_content += line
self.assertEqual(old_file_content, new_file_content) self.assertEqual(old_file_content, new_file_content)
os.remove(newpath)
# test using mock checking if a file with analysis had been generated # test using mock checking if a file with analysis had been generated
@ -30,33 +29,12 @@ class generetingOutputFile(unittest.TestCase):
def test_output_file(self): def test_output_file(self):
print('Mock testing outputfile') print('Moock testing outputfile')
m = Mock() m = Mock()
m.output_file_path = scriptPath + '\\files\\output\\test.pdf' m.output_file_path = scriptPath + '\\files\\output\\test.pdf'
assert Path(m.output_file_path).is_file() assert Path(m.output_file_path).is_file()
# test deleting input file
class testDeleteFile(unittest.TestCase):
def test_delete_file(self):
print('Testing deleting the file')
new_file = inputFilePath + os.path.sep + 'new_file.txt'
with open(new_file, 'w') as file:
file.write('teeeest')
with open(new_file) as f:
content = f.read()
assert os.path.exists(new_file)
self.assertEqual(content, 'teeeest')
delete_file(new_file)
self.assertFalse(os.path.exists(new_file))
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()