Egon is (almost) done. The printing function (not really important) is not implemented, and it needs documentation. But now it can actually be used.
This commit is contained in:
parent
3616dd3394
commit
6d5deaa787
447
egon.py
447
egon.py
|
@ -25,12 +25,15 @@ __version__ = "0.0.2"
|
||||||
|
|
||||||
|
|
||||||
main = None
|
main = None
|
||||||
|
semesters = []
|
||||||
|
semester = None
|
||||||
courses = []
|
courses = []
|
||||||
coursesString = []
|
coursesString = []
|
||||||
books = []
|
books = []
|
||||||
booksString = []
|
booksString = []
|
||||||
chosenDay = QDate()
|
chosenDay = QDate()
|
||||||
colors = []
|
colors = []
|
||||||
|
termList = None
|
||||||
|
|
||||||
class MainWindow(QMainWindow):
|
class MainWindow(QMainWindow):
|
||||||
|
|
||||||
|
@ -75,11 +78,20 @@ class MainWindow(QMainWindow):
|
||||||
self.calendarFrame.hide()
|
self.calendarFrame.hide()
|
||||||
self.calendarDockWidget.setWidget(self.calendarFrame)
|
self.calendarDockWidget.setWidget(self.calendarFrame)
|
||||||
|
|
||||||
|
# The semesters
|
||||||
|
global semester, semesters, termList
|
||||||
|
termList = QStringList()
|
||||||
|
termList.append(self.trUtf8("Spring"))
|
||||||
|
termList.append(self.trUtf8("Autumn"))
|
||||||
|
semesters = getSemestersFromDB()
|
||||||
|
semester = self.getLatestSemester(semesters)
|
||||||
|
if semester:
|
||||||
|
print semester.getTerm(), semester.getYear()
|
||||||
|
self.load(semester)
|
||||||
|
|
||||||
# Actions
|
# Actions
|
||||||
fileNewAction = self.createAction("&New", self.fileNew, QKeySequence.New, "filenew", "Create a new semester plan")
|
fileNewAction = self.createAction("&New", self.fileNew, QKeySequence.New, "filenew", "Create a new semester plan")
|
||||||
fileOpenAction = self.createAction("&Open", self.fileOpen, QKeySequence.Open, "fileopen", "Open an existing semester plan")
|
fileOpenAction = self.createAction("&Open", self.fileOpen, QKeySequence.Open, "fileopen", "Open an existing semester plan")
|
||||||
fileSaveAction = self.createAction("&Save", self.fileSave, QKeySequence.Save, "filesave", "Save semester plan")
|
|
||||||
fileSaveAsAction = self.createAction("Save as...", self.fileSaveAs, None, "filesaveas", "Save plan as...")
|
|
||||||
filePrintAction = self.createAction("&Print", self.filePrint, QKeySequence.Print, "fileprint", "Print plan")
|
filePrintAction = self.createAction("&Print", self.filePrint, QKeySequence.Print, "fileprint", "Print plan")
|
||||||
fileQuitAction = self.createAction("&Quit", self.close, "Ctrl+Q", "filequit", "Quit program")
|
fileQuitAction = self.createAction("&Quit", self.close, "Ctrl+Q", "filequit", "Quit program")
|
||||||
editAddCourse = self.createAction("Add &course", self.addCourse, "Ctrl+C", None, "Add a new course")
|
editAddCourse = self.createAction("Add &course", self.addCourse, "Ctrl+C", None, "Add a new course")
|
||||||
|
@ -96,7 +108,7 @@ class MainWindow(QMainWindow):
|
||||||
self.helpMenu = self.menuBar().addMenu("&Help")
|
self.helpMenu = self.menuBar().addMenu("&Help")
|
||||||
|
|
||||||
# Add actions to the menus
|
# Add actions to the menus
|
||||||
self.addActions(self.fileMenu, (fileNewAction, fileOpenAction, None, fileSaveAction, fileSaveAsAction, None, filePrintAction, None, fileQuitAction))
|
self.addActions(self.fileMenu, (fileNewAction, fileOpenAction, None, filePrintAction, None, fileQuitAction))
|
||||||
self.addActions(self.editMenu, (editAddCourse, editAddBook, None, editAddAssignment, None, editAddReading, None, editAddLesson, None, editShowCalendar))
|
self.addActions(self.editMenu, (editAddCourse, editAddBook, None, editAddAssignment, None, editAddReading, None, editAddLesson, None, editShowCalendar))
|
||||||
self.addActions(self.helpMenu, (helpAboutScheduler, None))
|
self.addActions(self.helpMenu, (helpAboutScheduler, None))
|
||||||
|
|
||||||
|
@ -121,7 +133,7 @@ class MainWindow(QMainWindow):
|
||||||
# The toolbars
|
# The toolbars
|
||||||
fileToolbar = self.addToolBar("File")
|
fileToolbar = self.addToolBar("File")
|
||||||
fileToolbar.setObjectName("FileToolBar")
|
fileToolbar.setObjectName("FileToolBar")
|
||||||
self.addActions(fileToolbar, (fileNewAction, fileOpenAction, None, fileSaveAction, fileSaveAsAction, None, filePrintAction, None, fileQuitAction))
|
self.addActions(fileToolbar, (fileNewAction, fileOpenAction, None, filePrintAction, None, fileQuitAction))
|
||||||
editToolbar = self.addToolBar("Edit")
|
editToolbar = self.addToolBar("Edit")
|
||||||
editToolbar.setObjectName("EditToolBar")
|
editToolbar.setObjectName("EditToolBar")
|
||||||
self.addActions(editToolbar, (editAddCourse, editAddBook, None, editShowCalendar))
|
self.addActions(editToolbar, (editAddCourse, editAddBook, None, editShowCalendar))
|
||||||
|
@ -147,6 +159,7 @@ class MainWindow(QMainWindow):
|
||||||
def deleteAssignment(self):
|
def deleteAssignment(self):
|
||||||
course, number = self.getCourseAndNumber()
|
course, number = self.getCourseAndNumber()
|
||||||
table, row = self.getAssignmentTableAndRow()
|
table, row = self.getAssignmentTableAndRow()
|
||||||
|
global semester
|
||||||
removeAssignmentFromDB(course, number)
|
removeAssignmentFromDB(course, number)
|
||||||
table.removeRow(row)
|
table.removeRow(row)
|
||||||
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||||
|
@ -181,6 +194,7 @@ class MainWindow(QMainWindow):
|
||||||
def deleteReading(self):
|
def deleteReading(self):
|
||||||
week, course, book = self.getWeekCourseAndBook()
|
week, course, book = self.getWeekCourseAndBook()
|
||||||
table, row = self.getReadingTableAndRow()
|
table, row = self.getReadingTableAndRow()
|
||||||
|
global semester
|
||||||
removeReadingFromDB(week, course, book)
|
removeReadingFromDB(week, course, book)
|
||||||
table.removeRow(row)
|
table.removeRow(row)
|
||||||
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||||
|
@ -228,6 +242,7 @@ class MainWindow(QMainWindow):
|
||||||
def deleteLesson(self):
|
def deleteLesson(self):
|
||||||
table, row, column = self.getScheduleTableRowAndColumn()
|
table, row, column = self.getScheduleTableRowAndColumn()
|
||||||
day, course, time = self.getDayCourseAndTime()
|
day, course, time = self.getDayCourseAndTime()
|
||||||
|
global semester
|
||||||
removeLessonFromDB(day, course, time)
|
removeLessonFromDB(day, course, time)
|
||||||
table.setItem(row, column, QTableWidgetItem())
|
table.setItem(row, column, QTableWidgetItem())
|
||||||
|
|
||||||
|
@ -251,6 +266,23 @@ class MainWindow(QMainWindow):
|
||||||
def getDayFromTable(self, column):
|
def getDayFromTable(self, column):
|
||||||
return self.days[column]
|
return self.days[column]
|
||||||
|
|
||||||
|
def getLatestSemester(self, semesters):
|
||||||
|
if len(semesters) == 0:
|
||||||
|
return None
|
||||||
|
global termList
|
||||||
|
max = semesters[0]
|
||||||
|
for s in semesters:
|
||||||
|
if s.getYear() > max.getYear():
|
||||||
|
max = s
|
||||||
|
if s.getYear() == max.getYear():
|
||||||
|
if s.getTerm() == self.trUtf8("Autumn"):
|
||||||
|
max = s
|
||||||
|
return max
|
||||||
|
|
||||||
|
def getTermList(self):
|
||||||
|
global termList
|
||||||
|
return termList
|
||||||
|
|
||||||
def helpAbout(self):
|
def helpAbout(self):
|
||||||
QMessageBox.about(self, "About %s" % self.title, u"""
|
QMessageBox.about(self, "About %s" % self.title, u"""
|
||||||
<b>%s</b> v %s
|
<b>%s</b> v %s
|
||||||
|
@ -273,16 +305,12 @@ class MainWindow(QMainWindow):
|
||||||
chosenDay = self.calendar
|
chosenDay = self.calendar
|
||||||
|
|
||||||
def fileNew(self):
|
def fileNew(self):
|
||||||
pass
|
self.nsdlg = NewSemesterDlg()
|
||||||
|
self.nsdlg.show()
|
||||||
|
|
||||||
def fileOpen(self):
|
def fileOpen(self):
|
||||||
pass
|
self.osdlg = OpenSemesterDlg()
|
||||||
|
self.osdlg.show()
|
||||||
def fileSave(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def fileSaveAs(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def filePrint(self):
|
def filePrint(self):
|
||||||
pass
|
pass
|
||||||
|
@ -314,9 +342,11 @@ class MainWindow(QMainWindow):
|
||||||
else:
|
else:
|
||||||
self.addDockWidget(Qt.BottomDockWidgetArea, self.calendarDockWidget)
|
self.addDockWidget(Qt.BottomDockWidgetArea, self.calendarDockWidget)
|
||||||
self.calendarDockWidget.setVisible(True)
|
self.calendarDockWidget.setVisible(True)
|
||||||
|
|
||||||
def refreshTable(self):
|
def load(self, semester):
|
||||||
pass
|
self.assignment.updateTable(semester)
|
||||||
|
self.reading.updateTable(semester)
|
||||||
|
self.schedule.updateTable(semester)
|
||||||
|
|
||||||
|
|
||||||
class AssignmentTab(QWidget):
|
class AssignmentTab(QWidget):
|
||||||
|
@ -332,22 +362,21 @@ class AssignmentTab(QWidget):
|
||||||
|
|
||||||
self.makeTable()
|
self.makeTable()
|
||||||
|
|
||||||
vlayout = QVBoxLayout()
|
self.vlayout = QVBoxLayout()
|
||||||
hlayout = QHBoxLayout()
|
self.hlayout = QHBoxLayout()
|
||||||
|
|
||||||
hlayout.addWidget(self.addAssignmentButton)
|
self.hlayout.addWidget(self.addAssignmentButton)
|
||||||
hlayout.addWidget(self.deleteAssignmentButton)
|
self.hlayout.addWidget(self.deleteAssignmentButton)
|
||||||
hlayout.addWidget(self.completeAssignmentBox)
|
self.hlayout.addWidget(self.completeAssignmentBox)
|
||||||
hlayout.addStretch()
|
self.hlayout.addStretch()
|
||||||
|
|
||||||
vlayout.addWidget(self.assignmentTable)
|
|
||||||
vlayout.addLayout(hlayout)
|
|
||||||
|
|
||||||
self.setLayout(vlayout)
|
self.vlayout.addWidget(self.assignmentTable)
|
||||||
|
self.vlayout.addLayout(self.hlayout)
|
||||||
|
|
||||||
|
self.setLayout(self.vlayout)
|
||||||
|
|
||||||
def makeTable(self, current=None):
|
def makeTable(self, current=None):
|
||||||
self.assignments = getAssignmentsFromDB()
|
self.assignmentTable = QTableWidget(0, 5, self)
|
||||||
self.assignmentTable = QTableWidget(len(self.assignments), 5, self)
|
|
||||||
self.assignmentTable.clear()
|
self.assignmentTable.clear()
|
||||||
self.assignmentHeaderList = QStringList()
|
self.assignmentHeaderList = QStringList()
|
||||||
self.assignmentHeaderList.append(self.trUtf8("Date"))
|
self.assignmentHeaderList.append(self.trUtf8("Date"))
|
||||||
|
@ -361,10 +390,12 @@ class AssignmentTab(QWidget):
|
||||||
self.assignmentTable.setSelectionBehavior(QAbstractItemView.SelectRows)
|
self.assignmentTable.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||||
self.assignmentTable.setSelectionMode(QAbstractItemView.SingleSelection)
|
self.assignmentTable.setSelectionMode(QAbstractItemView.SingleSelection)
|
||||||
selected = None
|
selected = None
|
||||||
self.updateTable()
|
|
||||||
|
|
||||||
def updateTable(self, current=None):
|
def updateTable(self, semester, current=None):
|
||||||
for row in range(len(self.assignments)):
|
self.assignments = getAssignmentsFromDB(semester)
|
||||||
|
rows = len(self.assignments)
|
||||||
|
self.assignmentTable.setRowCount(rows)
|
||||||
|
for row in range(rows):
|
||||||
self.addAssignmentToTable(row)
|
self.addAssignmentToTable(row)
|
||||||
self.assignmentTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
self.assignmentTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||||
self.assignmentTable.sortItems(0, Qt.AscendingOrder)
|
self.assignmentTable.sortItems(0, Qt.AscendingOrder)
|
||||||
|
@ -495,7 +526,8 @@ class AddAssignmentDlg(AssignmentDlg):
|
||||||
|
|
||||||
course = getCourseFromDB(getCourseCode(courseFull))
|
course = getCourseFromDB(getCourseCode(courseFull))
|
||||||
|
|
||||||
addNewAssignmentToDB(datetime, course, number, description, complete)
|
global semester
|
||||||
|
addNewAssignmentToDB(semester, datetime, course, number, description, complete)
|
||||||
|
|
||||||
assignment = AssignmentModel(datetime, course, number, description, complete)
|
assignment = AssignmentModel(datetime, course, number, description, complete)
|
||||||
table = getMain().assignment.assignmentTable
|
table = getMain().assignment.assignmentTable
|
||||||
|
@ -593,22 +625,21 @@ class ReadingTab(QWidget):
|
||||||
|
|
||||||
self.makeTable()
|
self.makeTable()
|
||||||
|
|
||||||
vlayout = QVBoxLayout()
|
self.vlayout = QVBoxLayout()
|
||||||
hlayout = QHBoxLayout()
|
self.hlayout = QHBoxLayout()
|
||||||
|
|
||||||
hlayout.addWidget(self.addReadingButton)
|
self.hlayout.addWidget(self.addReadingButton)
|
||||||
hlayout.addWidget(self.deleteReadingButton)
|
self.hlayout.addWidget(self.deleteReadingButton)
|
||||||
hlayout.addWidget(self.readingDoneButton)
|
self.hlayout.addWidget(self.readingDoneButton)
|
||||||
hlayout.addStretch()
|
self.hlayout.addStretch()
|
||||||
|
|
||||||
vlayout.addWidget(self.readingTable)
|
self.vlayout.addWidget(self.readingTable)
|
||||||
vlayout.addLayout(hlayout)
|
self.vlayout.addLayout(self.hlayout)
|
||||||
|
|
||||||
self.setLayout(vlayout)
|
self.setLayout(self.vlayout)
|
||||||
|
|
||||||
def makeTable(self, current=None):
|
def makeTable(self, current=None):
|
||||||
self.readings = getReadingsFromDB()
|
self.readingTable = QTableWidget(0, 7, self)
|
||||||
self.readingTable = QTableWidget(len(self.readings), 7, self)
|
|
||||||
self.readingTable.clear()
|
self.readingTable.clear()
|
||||||
self.readingHeaderList = QStringList()
|
self.readingHeaderList = QStringList()
|
||||||
self.readingHeaderList.append(self.trUtf8("Week"))
|
self.readingHeaderList.append(self.trUtf8("Week"))
|
||||||
|
@ -624,10 +655,12 @@ class ReadingTab(QWidget):
|
||||||
self.readingTable.setSelectionBehavior(QAbstractItemView.SelectRows)
|
self.readingTable.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||||
self.readingTable.setSelectionMode(QAbstractItemView.SingleSelection)
|
self.readingTable.setSelectionMode(QAbstractItemView.SingleSelection)
|
||||||
selected = None
|
selected = None
|
||||||
self.updateTable()
|
|
||||||
|
def updateTable(self, semester):
|
||||||
def updateTable(self):
|
self.readings = getReadingsFromDB(semester)
|
||||||
for row in range(len(self.readings)):
|
rows = len(self.readings)
|
||||||
|
self.readingTable.setRowCount(rows)
|
||||||
|
for row in range(rows):
|
||||||
self.addReadingToTable(row)
|
self.addReadingToTable(row)
|
||||||
self.readingTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
self.readingTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||||
self.readingTable.sortItems(0, Qt.AscendingOrder)
|
self.readingTable.sortItems(0, Qt.AscendingOrder)
|
||||||
|
@ -731,7 +764,8 @@ class AddReadingDlg(ReadingDlg):
|
||||||
course = getCourseFromDB(getCourseCode(courseFull))
|
course = getCourseFromDB(getCourseCode(courseFull))
|
||||||
book = getBookWithTitleFromDB(bookTitle)
|
book = getBookWithTitleFromDB(bookTitle)
|
||||||
|
|
||||||
addNewReadingToDB(week, course, book, chapter, pages, False)
|
global semester
|
||||||
|
addNewReadingToDB(semester, week, course, book, chapter, pages, False)
|
||||||
|
|
||||||
reading = ReadingModel(week, course, book, chapter, pages, False)
|
reading = ReadingModel(week, course, book, chapter, pages, False)
|
||||||
table = getMain().reading.readingTable
|
table = getMain().reading.readingTable
|
||||||
|
@ -838,20 +872,19 @@ class ScheduleTab(QWidget):
|
||||||
|
|
||||||
self.makeTable()
|
self.makeTable()
|
||||||
|
|
||||||
vlayout = QVBoxLayout()
|
self.vlayout = QVBoxLayout()
|
||||||
hlayout = QHBoxLayout()
|
self.hlayout = QHBoxLayout()
|
||||||
|
|
||||||
hlayout.addWidget(self.addScheduleButton)
|
self.hlayout.addWidget(self.addScheduleButton)
|
||||||
hlayout.addWidget(self.deleteScheduleButton)
|
self.hlayout.addWidget(self.deleteScheduleButton)
|
||||||
hlayout.addStretch()
|
self.hlayout.addStretch()
|
||||||
|
|
||||||
|
self.vlayout.addWidget(self.scheduleTable)
|
||||||
|
self.vlayout.addLayout(self.hlayout)
|
||||||
|
|
||||||
vlayout.addWidget(self.scheduleTable)
|
self.setLayout(self.vlayout)
|
||||||
vlayout.addLayout(hlayout)
|
|
||||||
|
|
||||||
self.setLayout(vlayout)
|
|
||||||
|
|
||||||
def makeTable(self, current=None):
|
def makeTable(self, current=None):
|
||||||
self.schedule = getLessonsFromDB()
|
|
||||||
self.scheduleTable = QTableWidget(12, 5, self)
|
self.scheduleTable = QTableWidget(12, 5, self)
|
||||||
self.scheduleTable.clear()
|
self.scheduleTable.clear()
|
||||||
self.scheduleHorizontalHeaderList = QStringList()
|
self.scheduleHorizontalHeaderList = QStringList()
|
||||||
|
@ -870,10 +903,12 @@ class ScheduleTab(QWidget):
|
||||||
self.scheduleTable.setSelectionBehavior(QAbstractItemView.SelectItems)
|
self.scheduleTable.setSelectionBehavior(QAbstractItemView.SelectItems)
|
||||||
self.scheduleTable.setSelectionMode(QAbstractItemView.SingleSelection)
|
self.scheduleTable.setSelectionMode(QAbstractItemView.SingleSelection)
|
||||||
selected = None
|
selected = None
|
||||||
self.updateTable()
|
|
||||||
|
def updateTable(self, semester):
|
||||||
def updateTable(self):
|
self.schedule = getLessonsFromDB(semester)
|
||||||
for l in range(len(self.schedule)):
|
rows = len(self.schedule)
|
||||||
|
self.scheduleTable.setRowCount(rows)
|
||||||
|
for l in range(rows):
|
||||||
self.addLessonToTable(self.schedule[l])
|
self.addLessonToTable(self.schedule[l])
|
||||||
self.scheduleTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
self.scheduleTable.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||||
self.scheduleTable.verticalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
self.scheduleTable.verticalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||||
|
@ -1000,9 +1035,10 @@ class AddScheduleDlg(ScheduleDlg):
|
||||||
room = unicode(self.roomEdit.text())
|
room = unicode(self.roomEdit.text())
|
||||||
|
|
||||||
course = getCourseFromDB(getCourseCode(courseFull))
|
course = getCourseFromDB(getCourseCode(courseFull))
|
||||||
|
|
||||||
|
global semester
|
||||||
for t in range(fromtime, totime):
|
for t in range(fromtime, totime):
|
||||||
addNewLessonToDB(SemesterModel("fall", 2008), day, t, course, type, room)
|
addNewLessonToDB(semester, day, t, course, type, room)
|
||||||
getMain().schedule.addLessonToTable(ScheduleModel(day, t, course, type, room))
|
getMain().schedule.addLessonToTable(ScheduleModel(day, t, course, type, room))
|
||||||
|
|
||||||
self.close()
|
self.close()
|
||||||
|
@ -1282,10 +1318,136 @@ class BookModel():
|
||||||
return self.edition
|
return self.edition
|
||||||
|
|
||||||
|
|
||||||
|
class SemesterDlg(QDialog):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super(SemesterDlg, self).__init__(parent)
|
||||||
|
|
||||||
|
self.oldLabel = QLabel(self.trUtf8("Earlier semesters:"))
|
||||||
|
self.newLabel = QLabel(self.trUtf8("New semester:"))
|
||||||
|
self.newTermLabel = QLabel(self.trUtf8("Term:"))
|
||||||
|
self.newYearLabel = QLabel(self.trUtf8("Year:"))
|
||||||
|
|
||||||
|
global semester, semesters, main
|
||||||
|
|
||||||
|
self.oldEdit = QListWidget()
|
||||||
|
self.oldEdit.addItems(semesters)
|
||||||
|
self.newTermEdit = QComboBox()
|
||||||
|
self.newTermEdit.addItems(getMain().getTermList())
|
||||||
|
self.newYearEdit = QSpinBox()
|
||||||
|
self.newYearEdit.setRange(2000, 2050)
|
||||||
|
self.newYearEdit.setSingleStep(1)
|
||||||
|
|
||||||
|
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
|
||||||
|
|
||||||
|
layout = QGridLayout()
|
||||||
|
layout.addWidget(self.oldLabel, 0, 0)
|
||||||
|
layout.addWidget(self.oldEdit, 0, 1, 1, 2)
|
||||||
|
layout.addWidget(self.newLabel, 1, 0)
|
||||||
|
layout.addWidget(self.newTermLabel, 1, 1)
|
||||||
|
layout.addWidget(self.newTermEdit, 2, 1)
|
||||||
|
layout.addWidget(self.newYearLabel, 1, 2)
|
||||||
|
layout.addWidget(self.newYearEdit, 2, 2)
|
||||||
|
layout.addWidget(self.buttonBox, 3, 0, 1, 3)
|
||||||
|
layout.setColumnStretch(0, 0)
|
||||||
|
layout.setColumnStretch(1, 1)
|
||||||
|
layout.setColumnStretch(2, 1)
|
||||||
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
self.connect(buttonBox, SIGNAL("accepted()"), self, SLOT("accept()"))
|
||||||
|
self.connect(buttonBox, SIGNAL("rejected()"), self, SLOT("reject()"))
|
||||||
|
|
||||||
|
self.setWindowTitle(self.trUtf8("Choose a semester or create a new"))
|
||||||
|
|
||||||
|
def accept(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class NewSemesterDlg(QDialog):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super(NewSemesterDlg, self).__init__(parent)
|
||||||
|
|
||||||
|
self.termLabel = QLabel(self.trUtf8("Term"))
|
||||||
|
self.yearLabel = QLabel(self.trUtf8("Year"))
|
||||||
|
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 = QGridLayout()
|
||||||
|
layout.addWidget(self.termLabel, 0, 0)
|
||||||
|
layout.addWidget(self.termEdit, 0, 1)
|
||||||
|
layout.addWidget(self.yearLabel, 1, 0)
|
||||||
|
layout.addWidget(self.yearEdit, 1, 1)
|
||||||
|
layout.addWidget(self.buttonBox, 2, 1)
|
||||||
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
self.connect(self.buttonBox, SIGNAL("accepted()"), self, SLOT("accept()"))
|
||||||
|
self.connect(self.buttonBox, SIGNAL("rejected()"), self, SLOT("reject()"))
|
||||||
|
|
||||||
|
self.setWindowTitle(self.trUtf8("New semester"))
|
||||||
|
|
||||||
|
def accept(self):
|
||||||
|
term = unicode(self.termEdit.currentText())
|
||||||
|
year = self.yearEdit.value()
|
||||||
|
global semester
|
||||||
|
semester = SemesterModel(term, year)
|
||||||
|
addNewSemesterToDB(term, year)
|
||||||
|
getMain().load(semester)
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
|
class OpenSemesterDlg(QDialog):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super(OpenSemesterDlg, self).__init__(parent)
|
||||||
|
|
||||||
|
self.semesterList = QListWidget()
|
||||||
|
semesters = getSemestersFromDB()
|
||||||
|
semesterlist = QStringList()
|
||||||
|
for semester in semesters:
|
||||||
|
semesterlist.append("%s %i" % (semester.getTerm(), semester.getYear()))
|
||||||
|
self.semesterList.addItems(semesterlist)
|
||||||
|
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
|
||||||
|
|
||||||
|
layout = QVBoxLayout()
|
||||||
|
layout.addWidget(self.semesterList)
|
||||||
|
layout.addStretch()
|
||||||
|
layout.addWidget(self.buttonBox)
|
||||||
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
self.connect(self.buttonBox, SIGNAL("accepted()"), self, SLOT("accept()"))
|
||||||
|
self.connect(self.buttonBox, SIGNAL("rejected()"), self, SLOT("reject()"))
|
||||||
|
|
||||||
|
self.setWindowTitle(self.trUtf8("Open semester"))
|
||||||
|
|
||||||
|
def accept(self):
|
||||||
|
text = self.semesterList.currentItem().text()
|
||||||
|
textlist = text.split(' ')
|
||||||
|
term = textlist[0]
|
||||||
|
year = textlist[1].toInt()[0]
|
||||||
|
global semester
|
||||||
|
semester = SemesterModel(term, year)
|
||||||
|
semester.setAssignments(getAssignmentsFromDB(semester))
|
||||||
|
semester.setReadings(getReadingsFromDB(semester))
|
||||||
|
semester.setLessons(getLessonsFromDB(semester))
|
||||||
|
print semester.getAssignments()
|
||||||
|
print semester.getReadings()
|
||||||
|
print semester.getLessons()
|
||||||
|
getMain().load(semester)
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
class SemesterModel():
|
class SemesterModel():
|
||||||
|
|
||||||
term = ""
|
term = ""
|
||||||
year = 0
|
year = 0
|
||||||
|
assignments = []
|
||||||
|
readings = []
|
||||||
|
lessons = []
|
||||||
|
|
||||||
def __init__(self, term, year):
|
def __init__(self, term, year):
|
||||||
self.term = term
|
self.term = term
|
||||||
|
@ -1297,6 +1459,33 @@ class SemesterModel():
|
||||||
def getYear(self):
|
def getYear(self):
|
||||||
return self.year
|
return self.year
|
||||||
|
|
||||||
|
def addAssignment(self, assignment):
|
||||||
|
self.assignments.append(assignment)
|
||||||
|
|
||||||
|
def setAssignments(self, assignments):
|
||||||
|
self.assignments = assignments
|
||||||
|
|
||||||
|
def getAssignments(self):
|
||||||
|
return self.assignments
|
||||||
|
|
||||||
|
def addReading(self, reading):
|
||||||
|
self.readings.append(reading)
|
||||||
|
|
||||||
|
def setReadings(self, readings):
|
||||||
|
self.readings = readings
|
||||||
|
|
||||||
|
def getReadings(self):
|
||||||
|
return self.readings
|
||||||
|
|
||||||
|
def addLesson(self, lesson):
|
||||||
|
self.lessons.append(lesson)
|
||||||
|
|
||||||
|
def setLessons(self, lessons):
|
||||||
|
self.lessons = lessons
|
||||||
|
|
||||||
|
def getLessons(self):
|
||||||
|
return self.lessons
|
||||||
|
|
||||||
|
|
||||||
class CalendarTab(QWidget):
|
class CalendarTab(QWidget):
|
||||||
|
|
||||||
|
@ -1324,9 +1513,6 @@ def initNewDB():
|
||||||
initScheduleDB(cursor)
|
initScheduleDB(cursor)
|
||||||
initBookDB(cursor)
|
initBookDB(cursor)
|
||||||
initCourseDB(cursor)
|
initCourseDB(cursor)
|
||||||
initAssignmentInSemester(cursor)
|
|
||||||
initReadingInSemester(cursor)
|
|
||||||
initScheduleInSemester(cursor)
|
|
||||||
initCourseUsesBook(cursor)
|
initCourseUsesBook(cursor)
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -1347,6 +1533,8 @@ def initAssignmentDB(cursor):
|
||||||
number INT,
|
number INT,
|
||||||
description TEXT,
|
description TEXT,
|
||||||
complete TEXT,
|
complete TEXT,
|
||||||
|
term TEXT,
|
||||||
|
year INT,
|
||||||
PRIMARY KEY (course, number)
|
PRIMARY KEY (course, number)
|
||||||
)
|
)
|
||||||
''')
|
''')
|
||||||
|
@ -1360,6 +1548,8 @@ def initReadingDB(cursor):
|
||||||
chapter TEXT,
|
chapter TEXT,
|
||||||
pages TEXT,
|
pages TEXT,
|
||||||
done BOOLEAN,
|
done BOOLEAN,
|
||||||
|
term TEXT,
|
||||||
|
year INT,
|
||||||
PRIMARY KEY (week, course, book)
|
PRIMARY KEY (week, course, book)
|
||||||
)
|
)
|
||||||
''')
|
''')
|
||||||
|
@ -1372,6 +1562,8 @@ def initScheduleDB(cursor):
|
||||||
course TEXT,
|
course TEXT,
|
||||||
type TEXT,
|
type TEXT,
|
||||||
room TEXT,
|
room TEXT,
|
||||||
|
term TEXT,
|
||||||
|
year INT,
|
||||||
PRIMARY KEY (course, day, time)
|
PRIMARY KEY (course, day, time)
|
||||||
)
|
)
|
||||||
''')
|
''')
|
||||||
|
@ -1398,41 +1590,6 @@ def initCourseDB(cursor):
|
||||||
)
|
)
|
||||||
''')
|
''')
|
||||||
|
|
||||||
def initAssignmentInSemester(cursor):
|
|
||||||
cursor.execute('''
|
|
||||||
CREATE TABLE AssignmentInSemester (
|
|
||||||
course TEXT,
|
|
||||||
number INT,
|
|
||||||
term TEXT,
|
|
||||||
year INT,
|
|
||||||
PRIMARY KEY (course, number, term, year)
|
|
||||||
)
|
|
||||||
''')
|
|
||||||
|
|
||||||
def initReadingInSemester(cursor):
|
|
||||||
cursor.execute('''
|
|
||||||
CREATE TABLE ReadingInSemester (
|
|
||||||
week INT,
|
|
||||||
course TEXT,
|
|
||||||
book TEXT,
|
|
||||||
term TEXT,
|
|
||||||
year INT,
|
|
||||||
PRIMARY KEY (week, course, book, term, year)
|
|
||||||
)
|
|
||||||
''')
|
|
||||||
|
|
||||||
def initScheduleInSemester(cursor):
|
|
||||||
cursor.execute('''
|
|
||||||
CREATE TABLE ScheduleInSemester (
|
|
||||||
course TEXT,
|
|
||||||
day TEXT,
|
|
||||||
time INT,
|
|
||||||
term TEXT,
|
|
||||||
year INT,
|
|
||||||
PRIMARY KEY (course, day, time, term, year)
|
|
||||||
)
|
|
||||||
''')
|
|
||||||
|
|
||||||
def initCourseUsesBook(cursor):
|
def initCourseUsesBook(cursor):
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
CREATE TABLE CourseUsesBook (
|
CREATE TABLE CourseUsesBook (
|
||||||
|
@ -1442,6 +1599,16 @@ def initCourseUsesBook(cursor):
|
||||||
)
|
)
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
def addNewSemesterToDB(term, year):
|
||||||
|
cursor, conn = initDB()
|
||||||
|
|
||||||
|
cursor.execute('''
|
||||||
|
INSERT INTO Semester (term, year)
|
||||||
|
VALUES (?, ?)
|
||||||
|
''', (term, year))
|
||||||
|
|
||||||
|
exitDB(conn)
|
||||||
|
|
||||||
def addNewAssignmentToDB(semester, datetime, course, number, description, complete):
|
def addNewAssignmentToDB(semester, datetime, course, number, description, complete):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
|
@ -1451,16 +1618,13 @@ def addNewAssignmentToDB(semester, datetime, course, number, description, comple
|
||||||
hour = datetime.time().hour()
|
hour = datetime.time().hour()
|
||||||
minute = datetime.time().minute()
|
minute = datetime.time().minute()
|
||||||
timestring = "%02i-%02i-%02i %02i:%02i" % (year, month, day, hour, minute)
|
timestring = "%02i-%02i-%02i %02i:%02i" % (year, month, day, hour, minute)
|
||||||
|
term = "%s" % semester.getTerm()
|
||||||
|
year = semester.getYear()
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
INSERT INTO Assignment (date, course, number, description, complete)
|
INSERT INTO Assignment (date, course, number, description, complete, term, year)
|
||||||
VALUES (datetime(?), ?, ?, ?, ?)
|
VALUES (datetime(?), ?, ?, ?, ?, ?, ?)
|
||||||
''', (timestring, course.getCode(), number, description, complete))
|
''', (timestring, course.getCode(), number, description, complete, term, year))
|
||||||
|
|
||||||
cursor.execute('''
|
|
||||||
INSERT INTO AssignmentInSemester (course, number, term, year)
|
|
||||||
VALUES (?, ?, ?, ?)
|
|
||||||
''', (course.getCode(), number, semester.getTerm(), semester.getYear()))
|
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -1468,14 +1632,9 @@ def addNewReadingToDB(semester, week, course, book, chapter, pages, done):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
INSERT INTO Reading (week, course, book, chapter, pages, done)
|
INSERT INTO Reading (week, course, book, chapter, pages, done, term, year)
|
||||||
VALUES (?, ?, ?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
''', (week, course.getCode(), book.getIsbn(), chapter, pages, done))
|
''', (week, course.getCode(), book.getIsbn(), chapter, pages, done, semester.getTerm(), semester.getYear()))
|
||||||
|
|
||||||
cursor.execute('''
|
|
||||||
INSERT INTO ReadingInSemester (week, course, book, term, year)
|
|
||||||
VALUES (?, ?, ?, ?, ?)
|
|
||||||
''', (week, course, book, semester.getTerm(), semester.getYear()))
|
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -1483,14 +1642,9 @@ def addNewLessonToDB(semester, day, time, course, type, room):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
INSERT INTO Lesson (day, time, course, type, room)
|
INSERT INTO Lesson (day, time, course, type, room, term, year)
|
||||||
VALUES (?, ?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||||
''', (day, time, course.getCode(), type, room))
|
''', (day, time, course.getCode(), type, room, semester.getTerm(), semester.getYear()))
|
||||||
|
|
||||||
cursor.execute('''
|
|
||||||
INSERT INTO ScheduleInSemester (course, day, time, term, year)
|
|
||||||
VALUES (?, ?, ?, ?, ?)
|
|
||||||
''', (course.getCode(), day, time, semester.getTerm(), semester.getYear()))
|
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -1524,13 +1678,18 @@ def addNewBookToDB(isbn, title, author, edition):
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
def getAssignmentsFromDB():
|
def getAssignmentsFromDB(semester):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
|
term = "%s" % semester.getTerm()
|
||||||
|
year = (semester.getYear())
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM Assignment
|
FROM Assignment
|
||||||
''')
|
WHERE term = ?
|
||||||
|
AND year = ?
|
||||||
|
''', (term, year))
|
||||||
|
|
||||||
assignments = []
|
assignments = []
|
||||||
for row in cursor.fetchall():
|
for row in cursor.fetchall():
|
||||||
|
@ -1558,13 +1717,18 @@ def getQDateTime(timestamp):
|
||||||
datetime = QDateTime(date, time)
|
datetime = QDateTime(date, time)
|
||||||
return datetime
|
return datetime
|
||||||
|
|
||||||
def getReadingsFromDB():
|
def getReadingsFromDB(semester):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
|
term = "%s" % semester.getTerm()
|
||||||
|
year = semester.getYear()
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM Reading
|
FROM Reading
|
||||||
''')
|
WHERE term = ?
|
||||||
|
AND year = ?
|
||||||
|
''', (term, year))
|
||||||
|
|
||||||
readings = []
|
readings = []
|
||||||
for row in cursor.fetchall():
|
for row in cursor.fetchall():
|
||||||
|
@ -1574,13 +1738,18 @@ def getReadingsFromDB():
|
||||||
|
|
||||||
return readings
|
return readings
|
||||||
|
|
||||||
def getLessonsFromDB():
|
def getLessonsFromDB(semester):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
|
term = "%s" % semester.getTerm()
|
||||||
|
year = semester.getYear()
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM Lesson
|
FROM Lesson
|
||||||
''')
|
WHERE term = ?
|
||||||
|
AND year = ?
|
||||||
|
''', (term, year))
|
||||||
|
|
||||||
lessons = []
|
lessons = []
|
||||||
for row in cursor.fetchall():
|
for row in cursor.fetchall():
|
||||||
|
@ -1703,6 +1872,22 @@ def getBookWithTitleFromDB(booktitle):
|
||||||
|
|
||||||
return book
|
return book
|
||||||
|
|
||||||
|
def getSemestersFromDB():
|
||||||
|
cursor, conn = initDB()
|
||||||
|
|
||||||
|
cursor.execute('''
|
||||||
|
SELECT *
|
||||||
|
FROM Semester
|
||||||
|
''')
|
||||||
|
|
||||||
|
semesters = []
|
||||||
|
for row in cursor.fetchall():
|
||||||
|
semesters.append(SemesterModel(row[0], row[1]))
|
||||||
|
|
||||||
|
exitDB(conn)
|
||||||
|
|
||||||
|
return semesters
|
||||||
|
|
||||||
def updateAssignmentCompletion(coursecode, num, completion):
|
def updateAssignmentCompletion(coursecode, num, completion):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
|
|
Reference in New Issue