From 1f47a395d4d5eeb74ccbf80cdb531f39ac6a584b Mon Sep 17 00:00:00 2001 From: tirilane Date: Wed, 18 Jun 2008 19:26:48 +0000 Subject: [PATCH] Finished! The exception handling is not great, but unless you writes it wrong on purpose, it should be okay. --- egon.db | Bin 23552 -> 23552 bytes egon.py | 385 ++++++++++++++++++++++++++++++-------------------------- 2 files changed, 208 insertions(+), 177 deletions(-) diff --git a/egon.db b/egon.db index 04331296eac3e301f7b0ca6715fbd3115b174d88..ca150ebd6e73d0be21d531d32f3ec3cd8018d82d 100644 GIT binary patch delta 486 zcmZqJ!Pu~aae_2s?M9gw+yX4jiVV!BnI|%bGb=JZV_LnjaTZg3nKUD>x+IgXiMgS% zu7M#CDHxhq8CY5w7=*Zlm>8NEu=?efC?u98X67U&<)k{6mXzk^vEN`|V6eub)zr$! z7@?I7t5y>h4r8EJc}XTCgL(rCT_7?B+G+&UhtSI6h;E|=GguqYu|@_!Ery0bq+n=h z1w?SSGGn#Sf(b>Zftjw6p#s=4s|>hSCahYG8Npg*p_T%*8k#E@npv43`I6BsGcU6^ zBQ*sUHeA5KVPQVO!2F5%3G+4P6U@7qcWoAAnavz1!w3shHlP|l7>|vWmqnTp#$#bY S<}ouP^O%^Bd5nyUL_7fFcXTKK delta 22 ecmZqJ!Pu~aae_2s>_(Xv+?!cM{;)3+@c;l|oCpX2 diff --git a/egon.py b/egon.py index 3dd9017..74ff2c2 100755 --- a/egon.py +++ b/egon.py @@ -18,7 +18,7 @@ from pysqlite2 import dbapi2 as sqlite from qrc_resources import * -__version__ = "0.0.2" +__version__ = "0.9.0" main = None @@ -66,7 +66,7 @@ class MainWindow(QMainWindow): self.calendarDockWidget.setObjectName("CalendarDockWidget") self.calendarDockWidget.setAllowedAreas(Qt.LeftDockWidgetArea|Qt.RightDockWidgetArea|Qt.BottomDockWidgetArea) self.calendar = QCalendarWidget() - self.calendar.setFirstDayOfWeek(Qt.Monday) + self.calendar.setFirstDayOfWeek(Qt.Monday) self.calendarLayout = QVBoxLayout() self.calendarLayout.addWidget(self.calendar) self.calendarFrame.setLayout(self.calendarLayout) @@ -75,8 +75,8 @@ class MainWindow(QMainWindow): # The semesters global semester, semesters, termList - termList = QStringList() - termList.append(self.trUtf8("Spring")) + termList = QStringList() + termList.append(self.trUtf8("Spring")) termList.append(self.trUtf8("Autumn")) semesters = getSemestersFromDB() semester = self.getLatestSemester(semesters) @@ -121,7 +121,6 @@ class MainWindow(QMainWindow): self.connect(self.reading.readingDoneButton, SIGNAL("pressed()"), self.doneReading) self.connect(self.schedule.addScheduleButton, SIGNAL("pressed()"), self.addLesson) self.connect(self.schedule.deleteScheduleButton, SIGNAL("pressed()"), self.deleteLesson) - self.connect(self.calendar, SIGNAL("selectionChanged()"), self.changeDay) # The toolbars fileToolbar = self.addToolBar("File") @@ -134,23 +133,33 @@ class MainWindow(QMainWindow): # Set the title self.setMainWindowTitle() - # The courses + # The courses courses = getCourses() makeCoursesString() # This window global main main = self - + # Semester + ## Open the New dialog + def fileNew(self): + self.nsdlg = NewSemesterDlg() + self.nsdlg.show() + + ## Open the Open dialog + def fileOpen(self): + self.osdlg = OpenSemesterDlg() + self.osdlg.show() + ## Return the latest semester def getLatestSemester(self, semesters): if len(semesters) == 0: return None global termList max = semesters[0] - for s in semesters: + for s in semesters: if s.getYear() > max.getYear(): max = s if s.getYear() == max.getYear(): @@ -183,10 +192,10 @@ class MainWindow(QMainWindow): def completeAssignment(self, completionLevel): course, number = self.getCourseAndNumber() table, row = self.getAssignmentTableAndRow() - updateAssignmentCompletion(course, number, completionLevel) + updateAssignmentCompletion(course, number, completionLevel) item = QTableWidgetItem(QString(completionLevel)) item.setBackground(self.assignment.makeBrush(completionLevel)) - table.setItem(row, 4, item) + table.setItem(row, 4, item) table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) ## Return the assignment table and its current row @@ -202,7 +211,7 @@ class MainWindow(QMainWindow): numberItem = table.item(row, 2) courseFull = courseItem.text() number = numberItem.text() - course = getCourseCode(courseFull) + course = getCourseCode(courseFull) return course, number # Reading @@ -235,11 +244,11 @@ class MainWindow(QMainWindow): table.setItem(row, 6, item) table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) week = (table.item(row, 0).text().toInt())[0] - courseFull = table.item(row, 1).text() - courseCode = QString(getCourseCode(courseFull)) + courseFull = table.item(row, 1).text() + courseCode = QString(getCourseCode(courseFull)) bookTitle = table.item(row, 2).text() - book = getBookWithTitleFromDB(bookTitle) - bookIsbn = book.getIsbn() + book = getBookWithTitleFromDB(bookTitle) + bookIsbn = book.getIsbn() updateReadingDone(week, courseCode, bookIsbn, True) ## Return the reading table and its current row @@ -327,24 +336,14 @@ class MainWindow(QMainWindow): ## Make and open the About dialog def helpAbout(self): QMessageBox.about(self, "About %s" % self.title, u""" - %s v %s -

Copyright © 2008 Tiril Anette Langfeldt Rødland. No rights reserved. -

You may modify and redistribute the program under the terms of the GPL. The license can be found here: http://www.gnu.org/licenses/gpl.html + %s v %s +

Copyright © 2008 Tiril Anette Langfeldt Rødland. No rights reserved. +

You may modify and redistribute the program under the terms of the GPL. The license can be found here: http://www.gnu.org/licenses/gpl.html

This application is mainly for use by students, and can be used to keep track of assignments, planned readings and the schedule.

Python %s - Qt %s - PyQt %s on %s -

Developer: Tiril Anette Langfeldt Rødland, tirilane@pvv.ntnu.no - """ % (self.title, __version__, platform.python_version(), QT_VERSION_STR, PYQT_VERSION_STR, platform.system())) - - ## Open the New dialog - def fileNew(self): - self.nsdlg = NewSemesterDlg() - self.nsdlg.show() - - ## Open the Open dialog - def fileOpen(self): - self.osdlg = OpenSemesterDlg() - self.osdlg.show() - +

Developer: Tiril Anette Langfeldt Rødland, tirilane@pvv.ntnu.no + """ % (self.title, __version__, platform.python_version(), QT_VERSION_STR, PYQT_VERSION_STR, platform.system())) + ## Updates the File menu def updateFileMenu(self): self.fileMenu.clear() @@ -402,15 +401,15 @@ class NewSemesterDlg(QDialog): self.termLabel = QLabel(self.trUtf8("Term")) self.yearLabel = QLabel(self.trUtf8("Year")) - # Widgets - self.termEdit = QComboBox() + # Widgets + self.termEdit = QComboBox() self.yearEdit = QSpinBox() self.termEdit.addItems(getMain().getTermList()) self.yearEdit.setRange(2000, 2050) self.yearEdit.setSingleStep(1) self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) - - # Layout + + # Layout layout = QGridLayout() layout.addWidget(self.termLabel, 0, 0) layout.addWidget(self.termEdit, 0, 1) @@ -425,14 +424,14 @@ class NewSemesterDlg(QDialog): # Set the title self.setWindowTitle(self.trUtf8("New semester")) - + ## Accept the dialog and add the specified semester def accept(self): term = unicode(self.termEdit.currentText()) year = self.yearEdit.value() - global semester - semester = SemesterModel(term, year) - addNewSemesterToDB(term, year) + global semester + semester = SemesterModel(term, year) + addNewSemesterToDB(term, year) getMain().load(semester) getMain().setMainWindowTitle() self.close() @@ -458,7 +457,7 @@ class OpenSemesterDlg(QDialog): layout = QVBoxLayout() layout.addWidget(self.semesterList) layout.addStretch() - layout.addWidget(self.buttonBox) + layout.addWidget(self.buttonBox) self.setLayout(layout) # Connect statements @@ -467,7 +466,7 @@ class OpenSemesterDlg(QDialog): # Set the title self.setWindowTitle(self.trUtf8("Open semester")) - + ## Accept the dialog and open the specified semester def accept(self): text = self.semesterList.currentItem().text() @@ -552,13 +551,13 @@ class AssignmentTab(QWidget): # Widgets self.addAssignmentButton = QPushButton("Add assignment") - self.completeAssignmentBox = QComboBox() + self.completeAssignmentBox = QComboBox() self.deleteAssignmentButton = QPushButton("Delete assignment") completeTypes = [self.trUtf8("Not available"), self.trUtf8("Available"), self.trUtf8("Begun"), self.trUtf8("Finished"), self.trUtf8("Delivered"), self.trUtf8("Approved"), self.trUtf8("Not approved")] self.completeAssignmentBox.addItems(completeTypes) # Make the table - self.makeTable() + self.makeTable() # Layout self.vlayout = QVBoxLayout() @@ -576,31 +575,31 @@ class AssignmentTab(QWidget): self.assignmentTable = QTableWidget(0, 5, self) self.assignmentTable.clear() - self.assignmentHeaderList = QStringList() - self.assignmentHeaderList.append(self.trUtf8("Date")) - self.assignmentHeaderList.append(self.trUtf8("Course")) - self.assignmentHeaderList.append(self.trUtf8("Number")) - self.assignmentHeaderList.append(self.trUtf8("Description")) - self.assignmentHeaderList.append(self.trUtf8("Complete")) - - self.assignmentTable.setHorizontalHeaderLabels(self.assignmentHeaderList) + self.assignmentHeaderList = QStringList() + self.assignmentHeaderList.append(self.trUtf8("Date")) + self.assignmentHeaderList.append(self.trUtf8("Course")) + self.assignmentHeaderList.append(self.trUtf8("Number")) + self.assignmentHeaderList.append(self.trUtf8("Description")) + self.assignmentHeaderList.append(self.trUtf8("Complete")) + + self.assignmentTable.setHorizontalHeaderLabels(self.assignmentHeaderList) self.assignmentTable.setAlternatingRowColors(True) self.assignmentTable.setEditTriggers(QAbstractItemView.NoEditTriggers) self.assignmentTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.assignmentTable.setSelectionMode(QAbstractItemView.SingleSelection) - selected = None + selected = None ## Add the assignments of the semester to the table def updateTable(self, semester, current=None): self.assignments = getAssignmentsFromDB(semester) rows = len(self.assignments) - self.assignmentTable.setRowCount(rows) - - for row in range(rows): + self.assignmentTable.setRowCount(rows) + + for row in range(rows): self.addAssignmentToTable(row) - self.assignmentTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) + self.assignmentTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) self.assignmentTable.sortItems(0, Qt.AscendingOrder) ## Add new assignment to Table @@ -608,15 +607,15 @@ class AssignmentTab(QWidget): if assignment == None: assignment = self.assignments[row] - complete = QString(assignment.getComplete()) + complete = QString(assignment.getComplete()) brush = self.makeBrush(complete) - self.assignmentTable.setItem(row, 0, QTableWidgetItem(QString(assignment.getDate().toString("yyyy-MM-dd hh:mm, ddd")))) + self.assignmentTable.setItem(row, 0, QTableWidgetItem(QString(assignment.getDate().toString("yyyy-MM-dd hh:mm, ddd")))) self.assignmentTable.setItem(row, 1, QTableWidgetItem(QString(assignment.getCourse().getFull()))) self.assignmentTable.setItem(row, 2, QTableWidgetItem(QString("%i" % assignment.getNumber()))) self.assignmentTable.setItem(row, 3, QTableWidgetItem(QString("%s" % assignment.getDescription()))) - completeItem = QTableWidgetItem(complete) + completeItem = QTableWidgetItem(complete) completeItem.setBackground(brush) self.assignmentTable.setItem(row, 4, completeItem) @@ -643,7 +642,7 @@ class AssignmentTab(QWidget): brush.setColor(QColor(Qt.red)) else: brush.setStyle(Qt.NoBrush) - return brush + return brush ### The Add Assignment dialog @@ -653,53 +652,53 @@ class AssignmentDlg(QDialog): def __init__(self, parent=None): super(AssignmentDlg, self).__init__(parent) - # Labels + # Labels self.dateLabel = QLabel(self.trUtf8("&Date")) self.courseLabel = QLabel(self.trUtf8("&Course")) - self.numberLabel = QLabel(self.trUtf8("&Number")) + self.numberLabel = QLabel(self.trUtf8("&Number")) self.descriptionLabel = QLabel(self.trUtf8("De&scription")) self.completeLabel = QLabel(self.trUtf8("&Complete")) # Widgets - self.dateEdit = QLineEdit("DD.MM.YYYY HH:MM") - self.dateEdit.setSelection(0, 16) + self.dateEdit = QLineEdit("DD.MM.YYYY HH:MM") + self.dateEdit.setSelection(0, 16) self.courseEdit = QComboBox() - self.courseEdit.addItems(makeCoursesString()) - self.numberEdit = QSpinBox() - self.numberEdit.setRange(1, 20) + self.courseEdit.addItems(makeCoursesString()) + self.numberEdit = QSpinBox() + self.numberEdit.setRange(1, 20) self.descriptionEdit = QLineEdit() self.completeEdit = QComboBox() - completeTypes = [self.trUtf8("Not available"), self.trUtf8("Available"), self.trUtf8("Begun"), self.trUtf8("Finished"), self.trUtf8("Delivered"), self.trUtf8("Approved"), self.trUtf8("Not approved")] - self.completeEdit.addItems(completeTypes) + completeTypes = [self.trUtf8("Not available"), self.trUtf8("Available"), self.trUtf8("Begun"), self.trUtf8("Finished"), self.trUtf8("Delivered"), self.trUtf8("Approved"), self.trUtf8("Not approved")] + self.completeEdit.addItems(completeTypes) self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) - # Buddies + # Buddies self.dateLabel.setBuddy(self.dateEdit) self.courseLabel.setBuddy(self.courseEdit) - self.numberLabel.setBuddy(self.numberEdit) + self.numberLabel.setBuddy(self.numberEdit) self.descriptionLabel.setBuddy(self.descriptionEdit) self.completeLabel.setBuddy(self.completeEdit) - # Layout + # Layout self.layout = QGridLayout() self.layout.addWidget(self.dateLabel, 0, 0) self.layout.addWidget(self.courseLabel, 1, 0) - self.layout.addWidget(self.numberLabel, 2, 0) + self.layout.addWidget(self.numberLabel, 2, 0) self.layout.addWidget(self.descriptionLabel, 3, 0) self.layout.addWidget(self.completeLabel, 4, 0) self.layout.addWidget(self.dateEdit, 0, 1) self.layout.addWidget(self.courseEdit, 1, 1) - self.layout.addWidget(self.numberEdit, 2, 1) + self.layout.addWidget(self.numberEdit, 2, 1) self.layout.addWidget(self.descriptionEdit, 3, 1) self.layout.addWidget(self.completeEdit, 4, 1) self.layout.addWidget(self.buttonBox, 5, 0, 1, 2) self.setLayout(self.layout) - # Connect statements + # Connect statements self.connect(self.buttonBox, SIGNAL("accepted()"), self, SLOT("accept()")) - self.connect(self.buttonBox, SIGNAL("rejected()"), self, SLOT("reject()")) + self.connect(self.buttonBox, SIGNAL("rejected()"), self, SLOT("reject()")) - # Set the title + # Set the title self.setWindowTitle(self.trUtf8("Add new assignment")) ## Return an array with the values of the widgets @@ -721,6 +720,13 @@ class AssignmentDlg(QDialog): description = assignmentList[3] complete = assignmentList[4] + regex = QRegExp(r"[01-31].[01-12].[2000-2050] [00-23]:[00-60]") + validator = QRegExpValidator(regex, self) + valid = validator.validate(dateString, 16) + if valid == QValidator.Invalid: + regexMessage = QErrorMessage() + regexMessage.showMessage(QString(self.trUtf8("The date is not in a correct format."))) + if len(dateString) <= 11: dateList = dateString.split('.') timeList = ['00', '00'] @@ -728,23 +734,48 @@ class AssignmentDlg(QDialog): dateTime = dateString.split() dateList = dateTime[0].split('.') timeList = dateTime[1].split(':') - - date = QDate(string.atoi(dateList[2]), string.atoi(dateList[1]), string.atoi(dateList[0])) - time = QTime(string.atoi(timeList[0]), string.atoi(timeList[1])) - datetime = QDateTime(date, time) + print dateList, timeList - course = getCourseFromDB(getCourseCode(courseFull)) + if dateList[1] > '13': + dateMessage = QErrorMessage() + dateMessage.showMessage(QString(self.trUtf8("The month is not valid. Please enter a valid date."))) + print dateList[1] + elif dateList[0] > '31': + dateMessage = QErrorMessage() + dateMessage.showMessage(QString(self.trUtf8("The day is not valid. Please enter a valid date."))) + print dateList[0] + elif timeList[0] > '23': + dateMessage = QErrorMessage() + dateMessage.showMessage(QString(self.trUtf8("The hour is not valid. Please enter a valid time."))) + print timeList[0] + elif timeList[1] > '59': + dateMessage = QErrorMessage() + dateMessage.showMessage(QString(self.trUtf8("The minutes are not valid. Please enter a valid time."))) + print timeList[1] + else: + try: + date = QDate(string.atoi(dateList[2]), string.atoi(dateList[1]), string.atoi(dateList[0])) + time = QTime(string.atoi(timeList[0]), string.atoi(timeList[1])) + datetime = QDateTime(date, time) + except ValueError, e: + valueMessage = QErrorMessage() + valueMessage.showMessage(QString(self.trUtf8("The date is not valid. Please enter a date on the DD.MM.YYYY HH:MM form."))) - global semester - addNewAssignmentToDB(semester, datetime, course, number, description, complete) + course = getCourseFromDB(getCourseCode(courseFull)) - assignment = AssignmentModel(datetime, course, number, description, complete) - table = getMain().assignment.assignmentTable - row = table.rowCount() - table.insertRow(row) - getMain().assignment.addAssignmentToTable(row, assignment) - table.sortItems(0, Qt.AscendingOrder) + try: + global semester + addNewAssignmentToDB(semester, datetime, course, number, description, complete) + assignment = AssignmentModel(datetime, course, number, description, complete) + except UnboundLocalError, e: + pass + table = getMain().assignment.assignmentTable + row = table.rowCount() + table.insertRow(row) + getMain().assignment.addAssignmentToTable(row, assignment) + table.sortItems(0, Qt.AscendingOrder) + self.close() @@ -798,7 +829,7 @@ class ReadingTab(QWidget): self.deleteReadingButton = QPushButton(self.trUtf8("Delete pages")) self.readingDoneButton = QPushButton(self.trUtf8("Done")) - # Make the table + # Make the table self.makeTable() # Layout @@ -816,15 +847,15 @@ class ReadingTab(QWidget): def makeTable(self, current=None): self.readingTable = QTableWidget(0, 7, self) self.readingTable.clear() - self.readingHeaderList = QStringList() - self.readingHeaderList.append(self.trUtf8("Week")) - self.readingHeaderList.append(self.trUtf8("Course")) - self.readingHeaderList.append(self.trUtf8("Book")) - self.readingHeaderList.append(self.trUtf8("Chapter")) - self.readingHeaderList.append(self.trUtf8("Pages")) - self.readingHeaderList.append(self.trUtf8("Number of pages")) + self.readingHeaderList = QStringList() + self.readingHeaderList.append(self.trUtf8("Week")) + self.readingHeaderList.append(self.trUtf8("Course")) + self.readingHeaderList.append(self.trUtf8("Book")) + self.readingHeaderList.append(self.trUtf8("Chapter")) + self.readingHeaderList.append(self.trUtf8("Pages")) + self.readingHeaderList.append(self.trUtf8("Number of pages")) self.readingHeaderList.append(self.trUtf8("Done")) - self.readingTable.setHorizontalHeaderLabels(self.readingHeaderList) + self.readingTable.setHorizontalHeaderLabels(self.readingHeaderList) self.readingTable.setAlternatingRowColors(True) self.readingTable.setEditTriggers(QAbstractItemView.NoEditTriggers) self.readingTable.setSelectionBehavior(QAbstractItemView.SelectRows) @@ -851,7 +882,7 @@ class ReadingTab(QWidget): if reading.getDone(): doneString = self.trUtf8("Done") - brush.setColor(Qt.green) + brush.setColor(Qt.green) else: doneString = self.trUtf8("Not done") brush.setColor(Qt.red) @@ -859,12 +890,12 @@ class ReadingTab(QWidget): self.readingTable.setItem(row, 0, QTableWidgetItem(QString("%02s" % reading.getWeek()))) self.readingTable.setItem(row, 1, QTableWidgetItem(QString(reading.getCourse().getFull()))) self.readingTable.setItem(row, 2, QTableWidgetItem(QString(reading.getBook().getTitle()))) - self.readingTable.setItem(row, 3, QTableWidgetItem(QString(reading.getChapter()))) + self.readingTable.setItem(row, 3, QTableWidgetItem(QString(reading.getChapter()))) self.readingTable.setItem(row, 4, QTableWidgetItem(QString(reading.getPages()))) - self.readingTable.setItem(row, 5, QTableWidgetItem(QString("%i" % reading.getNumberOfPages()))) + self.readingTable.setItem(row, 5, QTableWidgetItem(QString("%i" % reading.getNumberOfPages()))) - item = QTableWidgetItem(QString(doneString)) - item.setBackground(brush) + item = QTableWidgetItem(QString(doneString)) + item.setBackground(brush) self.readingTable.setItem(row, 6, item) @@ -875,14 +906,14 @@ class ReadingDlg(QDialog): def __init__(self, parent=None): super(ReadingDlg, self).__init__(parent) - # Labels + # Labels self.weekLabel = QLabel(self.trUtf8("&Week")) self.courseLabel = QLabel(self.trUtf8("&Course")) self.bookLabel = QLabel(self.trUtf8("&Book")) self.chapterLabel = QLabel(self.trUtf8("Cha&pter")) self.pagesLabel = QLabel(self.trUtf8("&Pages")) - # Widgets + # Widgets self.weekEdit = QSpinBox() self.weekEdit.setRange(1, 52) self.courseEdit = QComboBox() @@ -896,19 +927,19 @@ class ReadingDlg(QDialog): books = makeBooksString() for book in books: booksStringList.append(book) - self.bookEdit.addItems(booksStringList) + self.bookEdit.addItems(booksStringList) self.chapterEdit = QLineEdit() self.pagesEdit = QLineEdit() self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) - # Buddies + # Buddies self.weekLabel.setBuddy(self.weekEdit) self.courseLabel.setBuddy(self.courseEdit) self.bookLabel.setBuddy(self.bookEdit) self.chapterLabel.setBuddy(self.chapterEdit) self.pagesLabel.setBuddy(self.pagesEdit) - # Layout + # Layout self.layout = QGridLayout() self.layout.addWidget(self.weekLabel, 0, 0) self.layout.addWidget(self.courseLabel, 1, 0) @@ -938,20 +969,20 @@ class ReadingDlg(QDialog): chapter = unicode(self.chapterEdit.text()) pages = unicode(self.pagesEdit.text()) - self.close() + self.close() course = getCourseFromDB(getCourseCode(courseFull)) - book = getBookWithTitleFromDB(bookTitle) + book = getBookWithTitleFromDB(bookTitle) global semester - addNewReadingToDB(semester, week, course, book, chapter, pages, False) + addNewReadingToDB(semester, week, course, book, chapter, pages, False) reading = ReadingModel(week, course, book, chapter, pages, False) table = getMain().reading.readingTable row = table.rowCount() - table.insertRow(row) - getMain().reading.addReadingToTable(row, reading) - table.sortItems(0, Qt.AscendingOrder) + table.insertRow(row) + getMain().reading.addReadingToTable(row, reading) + table.sortItems(0, Qt.AscendingOrder) ### The reading model @@ -1020,11 +1051,11 @@ class ScheduleTab(QWidget): def __init__(self, parent=None): super(ScheduleTab, self).__init__(parent) - # Widgets + # Widgets self.addScheduleButton = QPushButton("Add lesson") self.deleteScheduleButton = QPushButton("Delete lesson") - # Make the table + # Make the table self.makeTable() # Layout @@ -1032,7 +1063,7 @@ class ScheduleTab(QWidget): self.hlayout = QHBoxLayout() self.hlayout.addWidget(self.addScheduleButton) self.hlayout.addWidget(self.deleteScheduleButton) - self.hlayout.addStretch() + self.hlayout.addStretch() self.vlayout.addWidget(self.scheduleTable) self.vlayout.addLayout(self.hlayout) self.setLayout(self.vlayout) @@ -1058,7 +1089,7 @@ class ScheduleTab(QWidget): self.scheduleTable.setSelectionBehavior(QAbstractItemView.SelectItems) self.scheduleTable.setSelectionMode(QAbstractItemView.SingleSelection) selected = None - + ## Add the lessons of the semester to the table def updateTable(self, semester): self.schedule = getLessonsFromDB(semester) @@ -1072,21 +1103,21 @@ class ScheduleTab(QWidget): def addLessonToTable(self, lesson): row = lesson.getTime() - 8 column = self.getColumn(lesson.getDay()) - course = lesson.getCourse().getFull() - type = lesson.getType() - room = lesson.getRoom() - olditem = self.scheduleTable.item(row, column) + course = lesson.getCourse().getFull() + type = lesson.getType() + room = lesson.getRoom() + olditem = self.scheduleTable.item(row, column) newtext = "%s\n%s\n%s" % (course, type, room) if olditem: oldtext = olditem.text() - text = QString(oldtext + "\n" + newtext) - collision = True + text = QString(oldtext + "\n" + newtext) + collision = True else: text = QString(newtext) - collision = False + collision = False item = QTableWidgetItem(text) - item.setBackground(self.getBackground(QString("%s" % type), lesson.getCourse(), collision)) - self.scheduleTable.setItem(row, column, item) + item.setBackground(self.getBackground(QString("%s" % type), lesson.getCourse(), collision)) + self.scheduleTable.setItem(row, column, item) ## Return the column specified by the day def getColumn(self, dayString): @@ -1134,7 +1165,7 @@ class ScheduleDlg(QDialog): def __init__(self, parent=None): super(ScheduleDlg, self).__init__(parent) - # Labels + # Labels self.dayLabel = QLabel(self.trUtf8("&Day")) self.fromLabel = QLabel(self.trUtf8("&From")) self.toLabel = QLabel(self.trUtf8("&To")) @@ -1142,7 +1173,7 @@ class ScheduleDlg(QDialog): self.typeLabel = QLabel(self.trUtf8("Ty&pe")) self.roomLabel = QLabel(self.trUtf8("&Room")) - # Widgets + # Widgets self.dayEdit = QComboBox() self.dayEdit.addItems(getMain().days) self.fromEdit = QSpinBox() @@ -1153,17 +1184,17 @@ class ScheduleDlg(QDialog): self.toEdit.setSingleStep(01.00) self.courseEdit = QComboBox() courses = makeCoursesString() - coursesStringList = QStringList() + coursesStringList = QStringList() for course in courses: coursesStringList.append(course) self.courseEdit.addItems(coursesStringList) self.typeEdit = QComboBox() - types = [self.trUtf8("Lecture"), self.trUtf8("Assignment lecture"), self.trUtf8("Assignment help"), self.trUtf8("Lab"), self.trUtf8("Seminar"), self.trUtf8("Other")] - self.typeEdit.addItems(types) + types = [self.trUtf8("Lecture"), self.trUtf8("Assignment lecture"), self.trUtf8("Assignment help"), self.trUtf8("Lab"), self.trUtf8("Seminar"), self.trUtf8("Other")] + self.typeEdit.addItems(types) self.roomEdit = QLineEdit() self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) - # Buddies + # Buddies self.dayLabel.setBuddy(self.dayEdit) self.fromLabel.setBuddy(self.fromEdit) self.toLabel.setBuddy(self.toEdit) @@ -1171,7 +1202,7 @@ class ScheduleDlg(QDialog): self.typeLabel.setBuddy(self.typeEdit) self.roomLabel.setBuddy(self.roomEdit) - # Layout + # Layout self.layout = QGridLayout() self.layout.addWidget(self.dayLabel, 0, 0) self.layout.addWidget(self.fromLabel, 1, 0) @@ -1192,17 +1223,17 @@ class ScheduleDlg(QDialog): self.connect(buttonBox, SIGNAL("accepted()"), self, SLOT("accept()")) self.connect(buttonBox, SIGNAL("rejected()"), self, SLOT("reject()")) - # Set the title + # Set the title self.setWindowTitle(self.trUtf8("Add new lesson")) ## Accept the dialog and add the specified lesson def accept(self): day = unicode(self.dayEdit.currentText()) - fromtime = self.fromEdit.value() - totime = self.toEdit.value() + fromtime = self.fromEdit.value() + totime = self.toEdit.value() courseFull = unicode(self.courseEdit.currentText()) type = unicode(self.typeEdit.currentText()) - room = unicode(self.roomEdit.text()) + room = unicode(self.roomEdit.text()) course = getCourseFromDB(getCourseCode(courseFull)) @@ -1210,7 +1241,7 @@ class ScheduleDlg(QDialog): for t in range(fromtime, totime): addNewLessonToDB(semester, day, t, course, type, room) getMain().schedule.addLessonToTable(ScheduleModel(day, t, course, type, room)) - + self.close() @@ -1249,7 +1280,7 @@ class ScheduleModel(): ## Return the room the lesson is in def getRoom(self): - return self.room + return self.room ### The Add Course dialog @@ -1259,7 +1290,7 @@ class CourseDlg(QDialog): def __init__(self, parent=None): super(CourseDlg, self).__init__(parent) - # The books + # The books self.books = [] # Labels @@ -1273,13 +1304,13 @@ class CourseDlg(QDialog): self.titleEdit = QLineEdit() self.shortEdit = QLineEdit() self.booksEdit = QListWidget() - self.updateList() + self.updateList() self.booksEdit.setSelectionMode(QAbstractItemView.ExtendedSelection) self.newBook = QPushButton("Add new book") self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) # Buddies - self.codeLabel.setBuddy(self.codeEdit) + self.codeLabel.setBuddy(self.codeEdit) self.titleLabel.setBuddy(self.titleEdit) self.shortLabel.setBuddy(self.shortEdit) self.booksLabel.setBuddy(self.booksEdit) @@ -1289,22 +1320,22 @@ class CourseDlg(QDialog): self.layout.addWidget(self.codeLabel, 0, 0) self.layout.addWidget(self.titleLabel, 1, 0) self.layout.addWidget(self.shortLabel, 2, 0) - self.layout.addWidget(self.booksLabel, 3, 0) + self.layout.addWidget(self.booksLabel, 3, 0) self.layout.addWidget(self.codeEdit, 0, 1) self.layout.addWidget(self.titleEdit, 1, 1) self.layout.addWidget(self.shortEdit, 2, 1) - self.layout.addWidget(self.booksEdit, 3, 1) - self.layout.addWidget(self.newBook, 4, 0) + self.layout.addWidget(self.booksEdit, 3, 1) + self.layout.addWidget(self.newBook, 4, 0) self.layout.addWidget(self.buttonBox, 4, 1, 1, 2) self.setLayout(self.layout) # Connect statements - self.connect(self.newBook, SIGNAL("pressed()"), getMain().addBook) + self.connect(self.newBook, SIGNAL("pressed()"), getMain().addBook) self.connect(getMain(), SIGNAL("newBook"), self.updateList) self.connect(self.buttonBox, SIGNAL("accepted()"), self, SLOT("accept()")) self.connect(self.buttonBox, SIGNAL("rejected()"), self, SLOT("reject()")) - # Set the title + # Set the title self.setWindowTitle(self.trUtf8("Add new course")) ## Update the book list @@ -1327,14 +1358,14 @@ class CourseDlg(QDialog): courseCode = unicode(self.codeEdit.text()) courseTitle = unicode(self.titleEdit.text()) courseShort = unicode(self.shortEdit.text()) - courseBooks = self.booksEdit.selectedItems() - color = getRandomColor() - global colors + courseBooks = self.booksEdit.selectedItems() + color = getRandomColor() + global colors while color in colors: color = getRandomColor() colors.append(color) books = [] - for book in courseBooks: + for book in courseBooks: books.append(getBookWithTitleFromDB("%s" % book.text())) course = CourseModel(courseCode, courseTitle, courseShort, color, books) addNewCourseToDB(courseCode, courseTitle, courseShort, color, books) @@ -1343,7 +1374,7 @@ class CourseDlg(QDialog): ### The course model class CourseModel(): - + code = "" title = "" short = "" @@ -1366,7 +1397,7 @@ class CourseModel(): ## Return the title of the course def getTitle(self): return self.title - + ## Return the short form of the course def getShort(self): return self.short @@ -1399,13 +1430,13 @@ class BookDlg(QDialog): def __init__(self, parent=None): super(BookDlg, self).__init__(parent) - # Labels + # Labels self.titleLabel = QLabel(self.trUtf8("&Title")) self.authorLabel = QLabel(self.trUtf8("&Author")) self.editionLabel = QLabel(self.trUtf8("&Edition")) self.isbnLabel = QLabel(self.trUtf8("&ISBN")) - # Widgets + # Widgets self.titleEdit = QLineEdit() self.authorEdit = QLineEdit() self.editionEdit = QSpinBox() @@ -1413,13 +1444,13 @@ class BookDlg(QDialog): self.isbnEdit = QLineEdit() self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) - # Buddies + # Buddies self.titleLabel.setBuddy(self.titleEdit) self.authorLabel.setBuddy(self.authorEdit) self.editionLabel.setBuddy(self.editionEdit) self.isbnLabel.setBuddy(self.isbnEdit) - # Layout + # Layout self.layout = QGridLayout() self.layout.addWidget(self.titleLabel, 0, 0) self.layout.addWidget(self.authorLabel, 1, 0) @@ -1436,7 +1467,7 @@ class BookDlg(QDialog): self.connect(self.buttonBox, SIGNAL("accepted()"), self, SLOT("accept()")) self.connect(self.buttonBox, SIGNAL("rejected()"), self, SLOT("reject()")) - # Set the title + # Set the title self.setWindowTitle(self.trUtf8("Add new book")) # Accept the dialog and add the specified book @@ -1460,10 +1491,10 @@ class BookModel(): ## Initialize the book model def __init__(self, isbn, title, author, edition): - self.isbn = isbn + self.isbn = isbn self.title = title - self.author = author - self.edition = edition + self.author = author + self.edition = edition # Return the ISBN number of the book def getIsbn(self): @@ -1521,11 +1552,11 @@ def initAssignmentDB(cursor): cursor.execute(''' CREATE TABLE Assignment ( date DATETIME, - course TEXT, + course TEXT, number INT, - description TEXT, - complete TEXT, - term TEXT, + description TEXT, + complete TEXT, + term TEXT, year INT, PRIMARY KEY (course, number) ) @@ -1536,8 +1567,8 @@ def initReadingDB(cursor): cursor.execute(''' CREATE TABLE Reading ( week INT, - course TEXT, - book INT, + course TEXT, + book INT, chapter TEXT, pages TEXT, done BOOLEAN, @@ -1553,7 +1584,7 @@ def initScheduleDB(cursor): CREATE TABLE Lesson ( day TEXT, time INT, - course TEXT, + course TEXT, type TEXT, room TEXT, term TEXT, @@ -1592,8 +1623,8 @@ def initCourseUsesBook(cursor): CREATE TABLE CourseUsesBook ( courseCode TEXT, bookIsbn TEXT, - PRIMARY KEY (courseCode, bookIsbn) - ) + PRIMARY KEY (courseCode, bookIsbn) + ) ''') # Add things to the database @@ -1624,7 +1655,7 @@ def addNewAssignmentToDB(semester, datetime, course, number, description, comple cursor.execute(''' INSERT INTO Assignment (date, course, number, description, complete, term, year) - VALUES (datetime(?), ?, ?, ?, ?, ?, ?) + VALUES (datetime(?), ?, ?, ?, ?, ?, ?) ''', (timestring, course.getCode(), number, description, complete, term, year)) exitDB(conn) @@ -1785,15 +1816,15 @@ def getCoursesFromDB(): courses = [] for row in cursor.fetchall(): - courses.append(CourseModel(row[0], row[1], row[2], QColor(row[3], row[4], row[5]), [])) + courses.append(CourseModel(row[0], row[1], row[2], QColor(row[3], row[4], row[5]), [])) for course in courses: cursor.execute(''' SELECT bookIsbn FROM CourseUsesBook - WHERE courseCode = ? + WHERE courseCode = ? ''', (course.getCode(),)) - fetched = cursor.fetchall() + fetched = cursor.fetchall() for fetchedRow in fetched: cursor.execute(''' SELECT * @@ -1850,7 +1881,7 @@ def getBooksFromDB(): books = [] for row in cursor.fetchall(): - books.append(BookModel(row[0], row[1], row[2], row[3])) + books.append(BookModel(row[0], row[1], row[2], row[3])) exitDB(conn)