2008-06-13 16:51:42 +02:00
#!/usr/bin/env python
#coding: utf-8
# Copyright 2008, Tiril Anette Langfeldt Rødland
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import platform
import sys
import string
import datetime
import time
2008-06-14 19:48:48 +02:00
import random
2008-06-13 16:51:42 +02:00
from PyQt4 . QtCore import *
from PyQt4 . QtGui import *
#from PyQt4 import QtGui
#from PyQt4 import QtCore
from pysqlite2 import dbapi2 as sqlite
#import qrc_resources
from qrc_resources import *
__version__ = " 0.0.2 "
main = None
2008-06-17 15:39:39 +02:00
semesters = [ ]
semester = None
2008-06-13 16:51:42 +02:00
courses = [ ]
coursesString = [ ]
books = [ ]
booksString = [ ]
chosenDay = QDate ( )
2008-06-14 19:48:48 +02:00
colors = [ ]
2008-06-17 15:39:39 +02:00
termList = None
2008-06-13 16:51:42 +02:00
class MainWindow ( QMainWindow ) :
def __init__ ( self , parent = None ) :
super ( MainWindow , self ) . __init__ ( parent )
# The program name
self . title = " Egon "
2008-06-15 21:21:39 +02:00
# The days
self . days = [ self . trUtf8 ( " Monday " ) , self . trUtf8 ( " Tuesday " ) , self . trUtf8 ( " Wednesday " ) , self . trUtf8 ( " Thursday " ) , self . trUtf8 ( " Friday " ) ]
2008-06-13 16:51:42 +02:00
# The tabs
self . assignment = AssignmentTab ( )
self . reading = ReadingTab ( )
self . schedule = ScheduleTab ( )
# Set the tabs in the middle
self . tabs = QTabWidget ( )
self . tabs . addTab ( self . assignment , " &Assignments " )
self . tabs . addTab ( self . reading , " &Reading List " )
self . tabs . addTab ( self . schedule , " &Schedule " )
self . tabs . setTabShape ( QTabWidget . Rounded )
self . tabs . setTabPosition ( QTabWidget . North )
self . setCentralWidget ( self . tabs )
# Set the title
self . setWindowTitle ( self . title )
# The calendar
self . calendarFrame = QFrame ( )
self . calendarFrame . setFrameStyle ( QFrame . StyledPanel | QFrame . Sunken )
self . calendarDockWidget = QDockWidget ( " Calendar " , self )
self . calendarDockWidget . setVisible ( False )
self . calendarDockWidget . setObjectName ( " CalendarDockWidget " )
self . calendarDockWidget . setAllowedAreas ( Qt . LeftDockWidgetArea | Qt . RightDockWidgetArea | Qt . BottomDockWidgetArea )
self . calendar = QCalendarWidget ( )
self . calendar . setFirstDayOfWeek ( Qt . Monday )
self . calendarLayout = QVBoxLayout ( )
self . calendarLayout . addWidget ( self . calendar )
self . calendarFrame . setLayout ( self . calendarLayout )
self . calendarFrame . hide ( )
self . calendarDockWidget . setWidget ( self . calendarFrame )
2008-06-17 15:39:39 +02:00
# 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 )
2008-06-13 16:51:42 +02:00
# Actions
2008-06-15 22:03:05 +02:00
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 " )
2008-06-13 16:51:42 +02:00
filePrintAction = self . createAction ( " &Print " , self . filePrint , QKeySequence . Print , " fileprint " , " Print plan " )
fileQuitAction = self . createAction ( " &Quit " , self . close , " Ctrl+Q " , " filequit " , " Quit program " )
2008-06-13 20:53:23 +02:00
editAddCourse = self . createAction ( " Add &course " , self . addCourse , " Ctrl+C " , None , " Add a new course " )
2008-06-13 16:51:42 +02:00
editAddBook = self . createAction ( " Add &book " , self . addBook , " Ctrl+B " , None , " Add a new book " )
editAddAssignment = self . createAction ( " Add &assignment " , self . addAssignment , " Ctrl+A " , None , " Add a new assignment " )
editAddReading = self . createAction ( " Add &reading " , self . addReading , " Ctrl+R " , None , " Add a new reading " )
editAddLesson = self . createAction ( " Add &lesson " , self . addLesson , " Ctrl+L " , None , " Add a new lesson " )
2008-06-13 20:53:23 +02:00
editShowCalendar = self . createAction ( " Cal&endar " , self . showCalendar , " Ctrl+E " , None , " Show the calendar " )
2008-06-13 16:51:42 +02:00
helpAboutScheduler = self . createAction ( " &About %s " % self . title )
# Menus
self . fileMenu = self . menuBar ( ) . addMenu ( " &File " )
self . editMenu = self . menuBar ( ) . addMenu ( " &Edit " )
self . helpMenu = self . menuBar ( ) . addMenu ( " &Help " )
# Add actions to the menus
2008-06-17 15:39:39 +02:00
self . addActions ( self . fileMenu , ( fileNewAction , fileOpenAction , None , filePrintAction , None , fileQuitAction ) )
2008-06-13 16:51:42 +02:00
self . addActions ( self . editMenu , ( editAddCourse , editAddBook , None , editAddAssignment , None , editAddReading , None , editAddLesson , None , editShowCalendar ) )
self . addActions ( self . helpMenu , ( helpAboutScheduler , None ) )
# Connect statements
self . connect ( editAddCourse , SIGNAL ( " triggered() " ) , self . addCourse )
self . connect ( editAddBook , SIGNAL ( " triggered() " ) , self . addBook )
self . connect ( editAddAssignment , SIGNAL ( " triggered() " ) , self . addAssignment )
self . connect ( editAddReading , SIGNAL ( " triggered() " ) , self . addReading )
self . connect ( editAddLesson , SIGNAL ( " triggered() " ) , self . addLesson )
self . connect ( editShowCalendar , SIGNAL ( " pressed() " ) , self . showCalendar )
self . connect ( helpAboutScheduler , SIGNAL ( " triggered() " ) , self . helpAbout )
self . connect ( self . assignment . addAssignmentButton , SIGNAL ( " pressed() " ) , self . addAssignment )
self . connect ( self . assignment . deleteAssignmentButton , SIGNAL ( " pressed() " ) , self . deleteAssignment )
self . connect ( self . assignment . completeAssignmentBox , SIGNAL ( " currentIndexChanged(QString) " ) , self . completeAssignment )
self . connect ( self . reading . addReadingButton , SIGNAL ( " pressed() " ) , self . addReading )
self . connect ( self . reading . deleteReadingButton , SIGNAL ( " pressed() " ) , self . deleteReading )
self . connect ( self . reading . readingDoneButton , SIGNAL ( " pressed() " ) , self . doneReading )
self . connect ( self . schedule . addScheduleButton , SIGNAL ( " pressed() " ) , self . addLesson )
2008-06-13 20:53:23 +02:00
self . connect ( self . schedule . deleteScheduleButton , SIGNAL ( " pressed() " ) , self . deleteLesson )
2008-06-13 16:51:42 +02:00
self . connect ( self . calendar , SIGNAL ( " selectionChanged() " ) , self . changeDay )
# The toolbars
fileToolbar = self . addToolBar ( " File " )
fileToolbar . setObjectName ( " FileToolBar " )
2008-06-17 15:39:39 +02:00
self . addActions ( fileToolbar , ( fileNewAction , fileOpenAction , None , filePrintAction , None , fileQuitAction ) )
2008-06-13 16:51:42 +02:00
editToolbar = self . addToolBar ( " Edit " )
editToolbar . setObjectName ( " EditToolBar " )
self . addActions ( editToolbar , ( editAddCourse , editAddBook , None , editShowCalendar ) )
courses = getCourses ( )
makeCoursesString ( )
global main
main = self
def addCourse ( self ) : ##, code, title, short):
self . acdlg = AddCourseDlg ( )
self . acdlg . show ( )
def addBook ( self ) : ##, isbn, title, author, edition, course):
self . abdlg = AddBookDlg ( )
self . abdlg . show ( )
def addAssignment ( self ) :
self . aadlg = AddAssignmentDlg ( )
self . aadlg . show ( )
def deleteAssignment ( self ) :
course , number = self . getCourseAndNumber ( )
table , row = self . getAssignmentTableAndRow ( )
2008-06-17 15:39:39 +02:00
global semester
2008-06-13 16:51:42 +02:00
removeAssignmentFromDB ( course , number )
table . removeRow ( row )
table . horizontalHeader ( ) . setResizeMode ( QHeaderView . ResizeToContents )
def completeAssignment ( self , completionLevel ) :
course , number = self . getCourseAndNumber ( )
table , row = self . getAssignmentTableAndRow ( )
updateAssignmentCompletion ( course , number , completionLevel )
item = QTableWidgetItem ( QString ( completionLevel ) )
item . setBackground ( self . assignment . makeBrush ( completionLevel ) )
table . setItem ( row , 4 , item )
table . horizontalHeader ( ) . setResizeMode ( QHeaderView . ResizeToContents )
def getAssignmentTableAndRow ( self ) :
table = self . assignment . assignmentTable
row = table . currentRow ( )
return table , row
def getCourseAndNumber ( self ) :
table , row = self . getAssignmentTableAndRow ( )
courseItem = table . item ( row , 1 )
numberItem = table . item ( row , 2 )
courseFull = courseItem . text ( )
number = numberItem . text ( )
course = getCourseCode ( courseFull )
return course , number
def addReading ( self ) :
self . ardlg = AddReadingDlg ( )
self . ardlg . show ( )
def deleteReading ( self ) :
week , course , book = self . getWeekCourseAndBook ( )
table , row = self . getReadingTableAndRow ( )
2008-06-17 15:39:39 +02:00
global semester
2008-06-13 16:51:42 +02:00
removeReadingFromDB ( week , course , book )
table . removeRow ( row )
table . horizontalHeader ( ) . setResizeMode ( QHeaderView . ResizeToContents )
def doneReading ( self ) :
table , row = self . getReadingTableAndRow ( )
2008-06-13 20:53:23 +02:00
if table . item ( row , 6 ) . text ( ) . compare ( QString ( self . trUtf8 ( " Not done " ) ) ) == 0 :
done = True
item = QTableWidgetItem ( self . trUtf8 ( " Done " ) )
item . setBackground ( QBrush ( Qt . green , Qt . SolidPattern ) )
else :
done = False
item = QTableWidgetItem ( self . trUtf8 ( " Not done " ) )
item . setBackground ( QBrush ( Qt . red , Qt . SolidPattern ) )
2008-06-13 16:51:42 +02:00
table . setItem ( row , 6 , item )
2008-06-13 20:53:23 +02:00
table . horizontalHeader ( ) . setResizeMode ( QHeaderView . ResizeToContents )
2008-06-13 16:51:42 +02:00
week = ( table . item ( row , 0 ) . text ( ) . toInt ( ) ) [ 0 ]
courseFull = table . item ( row , 1 ) . text ( )
courseCode = QString ( getCourseCode ( courseFull ) )
bookTitle = table . item ( row , 2 ) . text ( )
book = getBookWithTitleFromDB ( bookTitle )
bookIsbn = book . getIsbn ( )
updateReadingDone ( week , courseCode , bookIsbn , True )
def getReadingTableAndRow ( self ) :
table = self . reading . readingTable
row = table . currentRow ( )
return table , row
def getWeekCourseAndBook ( self ) :
table , row = self . getReadingTableAndRow ( )
weekItem = table . item ( row , 0 )
courseItem = table . item ( row , 1 )
bookItem = table . item ( row , 2 )
week = ( weekItem . text ( ) . toInt ( ) ) [ 0 ]
courseFull = courseItem . text ( )
courseCode = getCourseCode ( courseFull )
book = getBookWithTitleFromDB ( bookItem . text ( ) )
return week , courseCode , book . getIsbn ( )
def addLesson ( self ) :
self . asdlg = AddScheduleDlg ( )
self . asdlg . show ( )
2008-06-13 20:53:23 +02:00
def deleteLesson ( self ) :
2008-06-15 21:21:39 +02:00
table , row , column = self . getScheduleTableRowAndColumn ( )
day , course , time = self . getDayCourseAndTime ( )
2008-06-17 15:39:39 +02:00
global semester
2008-06-15 21:21:39 +02:00
removeLessonFromDB ( day , course , time )
table . setItem ( row , column , QTableWidgetItem ( ) )
def getDayCourseAndTime ( self ) :
table , row , column = self . getScheduleTableRowAndColumn ( )
item = table . item ( row , column )
text = item . text ( )
textlist = text . split ( ' \n ' )
courseFull = textlist [ 0 ]
coursecode = getCourseCode ( courseFull )
day = self . getDayFromTable ( column )
time = row + 8
return day , coursecode , time
def getScheduleTableRowAndColumn ( self ) :
table = self . schedule . scheduleTable
row = table . currentRow ( )
column = table . currentColumn ( )
return table , row , column
def getDayFromTable ( self , column ) :
return self . days [ column ]
2008-06-13 20:53:23 +02:00
2008-06-17 15:39:39 +02:00
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
2008-06-13 16:51:42 +02:00
def helpAbout ( self ) :
2008-06-13 20:53:23 +02:00
QMessageBox . about ( self , " About %s " % self . title , u """
< b > % s < / b > v % s
< p > Copyright & copy ; 2008 Tiril Anette Langfeldt Rødland . No rights reserved .
< p > 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
< p > This application is mainly for use by students , and can be used to keep track of assignments , planned readings and the schedule .
< p > Python % s - Qt % s - PyQt % s on % s
< p > Developer : Tiril Anette Langfeldt Rødland , tirilane @pvv.ntnu.no
""" % (self.title, __version__, platform.python_version(), QT_VERSION_STR, PYQT_VERSION_STR, platform.system()))
2008-06-13 16:51:42 +02:00
def addActions ( self , target , actions ) :
for action in actions :
if action is None :
target . addSeparator ( )
else :
target . addAction ( action )
def changeDay ( self ) :
global chosenDay
chosenDay = self . calendar
def fileNew ( self ) :
2008-06-17 15:39:39 +02:00
self . nsdlg = NewSemesterDlg ( )
self . nsdlg . show ( )
2008-06-15 22:03:05 +02:00
2008-06-13 16:51:42 +02:00
def fileOpen ( self ) :
2008-06-17 15:39:39 +02:00
self . osdlg = OpenSemesterDlg ( )
self . osdlg . show ( )
2008-06-13 16:51:42 +02:00
def filePrint ( self ) :
pass
def updateFileMenu ( self ) :
self . fileMenu . clear ( )
self . addActions ( self . fileMenu , self . fileMenuActions [ : - 1 ] )
current = QString ( self . filename ) if self . filename is not None else None
def createAction ( self , text , slot = None , shortcut = None , icon = None , tip = None , checkable = False , signal = " triggered() " ) :
action = QAction ( text , self )
if icon is not None :
iconfile = " :/ %s .png " % icon
action . setIcon ( QIcon ( iconfile ) )
if shortcut is not None :
action . setShortcut ( shortcut )
if tip is not None :
action . setToolTip ( tip )
action . setStatusTip ( tip )
if slot is not None :
self . connect ( action , SIGNAL ( signal ) , slot )
if checkable :
action . setCheckable ( True )
return action
def showCalendar ( self ) :
if self . calendarDockWidget . isVisible ( ) :
self . removeDockWidget ( self . calendarDockWidget )
else :
self . addDockWidget ( Qt . BottomDockWidgetArea , self . calendarDockWidget )
self . calendarDockWidget . setVisible ( True )
2008-06-17 15:39:39 +02:00
def load ( self , semester ) :
self . assignment . updateTable ( semester )
self . reading . updateTable ( semester )
self . schedule . updateTable ( semester )
2008-06-13 16:51:42 +02:00
class AssignmentTab ( QWidget ) :
def __init__ ( self , parent = None ) :
super ( AssignmentTab , self ) . __init__ ( parent )
self . addAssignmentButton = QPushButton ( " Add assignment " )
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 )
self . makeTable ( )
2008-06-17 15:39:39 +02:00
self . vlayout = QVBoxLayout ( )
self . hlayout = QHBoxLayout ( )
2008-06-13 16:51:42 +02:00
2008-06-17 15:39:39 +02:00
self . hlayout . addWidget ( self . addAssignmentButton )
self . hlayout . addWidget ( self . deleteAssignmentButton )
self . hlayout . addWidget ( self . completeAssignmentBox )
self . hlayout . addStretch ( )
self . vlayout . addWidget ( self . assignmentTable )
self . vlayout . addLayout ( self . hlayout )
2008-06-13 16:51:42 +02:00
2008-06-17 15:39:39 +02:00
self . setLayout ( self . vlayout )
2008-06-13 16:51:42 +02:00
def makeTable ( self , current = None ) :
2008-06-17 15:39:39 +02:00
self . assignmentTable = QTableWidget ( 0 , 5 , self )
2008-06-13 16:51:42 +02:00
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 . assignmentTable . setAlternatingRowColors ( True )
self . assignmentTable . setEditTriggers ( QAbstractItemView . NoEditTriggers )
self . assignmentTable . setSelectionBehavior ( QAbstractItemView . SelectRows )
self . assignmentTable . setSelectionMode ( QAbstractItemView . SingleSelection )
selected = None
2008-06-17 15:39:39 +02:00
def updateTable ( self , semester , current = None ) :
self . assignments = getAssignmentsFromDB ( semester )
rows = len ( self . assignments )
self . assignmentTable . setRowCount ( rows )
for row in range ( rows ) :
2008-06-13 16:51:42 +02:00
self . addAssignmentToTable ( row )
self . assignmentTable . horizontalHeader ( ) . setResizeMode ( QHeaderView . ResizeToContents )
self . assignmentTable . sortItems ( 0 , Qt . AscendingOrder )
def addAssignmentToTable ( self , row , assignment = None ) :
if assignment == None :
assignment = self . assignments [ row ]
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 , 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 . setBackground ( brush )
self . assignmentTable . setItem ( row , 4 , completeItem )
def makeBrush ( self , complete ) :
brush = QBrush ( Qt . NoBrush )
if complete . compare ( QString ( self . trUtf8 ( " Available " ) ) ) == 0 :
brush . setStyle ( Qt . Dense7Pattern )
brush . setColor ( QColor ( Qt . cyan ) )
elif complete . compare ( QString ( self . trUtf8 ( " Begun " ) ) ) == 0 :
brush . setStyle ( Qt . Dense5Pattern )
brush . setColor ( QColor ( Qt . cyan ) )
elif complete . compare ( QString ( self . trUtf8 ( " Finished " ) ) ) == 0 :
brush . setStyle ( Qt . Dense3Pattern )
brush . setColor ( QColor ( Qt . cyan ) )
elif complete . compare ( QString ( self . trUtf8 ( " Delivered " ) ) ) == 0 :
brush . setStyle ( Qt . Dense1Pattern )
brush . setColor ( QColor ( Qt . cyan ) )
elif complete . compare ( QString ( self . trUtf8 ( " Approved " ) ) ) == 0 :
brush . setStyle ( Qt . SolidPattern )
brush . setColor ( QColor ( Qt . green ) )
elif complete . compare ( QString ( self . trUtf8 ( " Not approved " ) ) ) == 0 :
brush . setStyle ( Qt . SolidPattern )
brush . setColor ( QColor ( Qt . red ) )
else :
brush . setStyle ( Qt . NoBrush )
return brush
class AssignmentDlg ( QDialog ) :
def __init__ ( self , parent = None ) :
super ( AssignmentDlg , self ) . __init__ ( parent )
self . dateLabel = QLabel ( self . trUtf8 ( " &Date " ) )
self . courseLabel = QLabel ( self . trUtf8 ( " &Course " ) )
self . numberLabel = QLabel ( self . trUtf8 ( " &Number " ) )
self . descriptionLabel = QLabel ( self . trUtf8 ( " De&scription " ) )
self . completeLabel = QLabel ( self . trUtf8 ( " &Complete " ) )
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 . 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 )
self . dateLabel . setBuddy ( self . dateEdit )
self . courseLabel . setBuddy ( self . courseEdit )
self . numberLabel . setBuddy ( self . numberEdit )
self . descriptionLabel . setBuddy ( self . descriptionEdit )
self . completeLabel . setBuddy ( self . completeEdit )
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 . 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 . descriptionEdit , 3 , 1 )
self . layout . addWidget ( self . completeEdit , 4 , 1 )
self . setLayout ( self . layout )
def getValues ( self ) :
assignment = [ ]
assignment . append ( unicode ( self . dateEdit . text ( ) ) )
assignment . append ( unicode ( self . courseEdit . currentText ( ) ) )
assignment . append ( self . numberEdit . value ( ) )
assignment . append ( unicode ( self . descriptionEdit . text ( ) ) )
assignment . append ( unicode ( self . completeEdit . currentText ( ) ) )
return assignment
class AddAssignmentDlg ( AssignmentDlg ) :
def __init__ ( self , parent = None ) :
super ( AddAssignmentDlg , self ) . __init__ ( parent )
buttonBox = QDialogButtonBox ( QDialogButtonBox . Ok | QDialogButtonBox . Cancel )
self . layout . addWidget ( buttonBox , 5 , 0 , 1 , 2 )
self . connect ( buttonBox , SIGNAL ( " accepted() " ) , self , SLOT ( " accept() " ) )
self . connect ( buttonBox , SIGNAL ( " rejected() " ) , self , SLOT ( " reject() " ) )
self . setWindowTitle ( self . trUtf8 ( " Add new assignment " ) )
def accept ( self ) :
assignmentList = self . getValues ( )
dateString = assignmentList [ 0 ]
courseFull = assignmentList [ 1 ]
number = assignmentList [ 2 ]
description = assignmentList [ 3 ]
complete = assignmentList [ 4 ]
if len ( dateString ) < = 11 :
dateList = dateString . split ( ' . ' )
timeList = [ ' 00 ' , ' 00 ' ]
else :
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 )
course = getCourseFromDB ( getCourseCode ( courseFull ) )
2008-06-17 15:39:39 +02:00
global semester
addNewAssignmentToDB ( semester , datetime , course , number , description , complete )
2008-06-13 16:51:42 +02:00
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 )
self . close ( )
class EditAssignmentDlg ( AssignmentDlg ) :
def __init__ ( self , parent = None ) :
super ( EditAssignmentDlg , self ) . __init__ ( parent )
self . setAttribute ( Qt . WA_DeleteOnClose )
buttonBox = QDialogButtonBox ( QDialogButtonBox . Apply | QDialogButtonBox . Close )
self . layout . addWidget ( buttonBox , 8 , 0 , 1 , 2 )
self . connect ( buttonBox . button ( QDialogButtonBox . Apply ) , SIGNAL ( " clicked() " ) , self . apply )
self . connect ( buttonBox , SIGNAL ( " rejected() " ) , self , SLOT ( " reject() " ) )
self . setWindowTitle ( self . trUtf8 ( " Edit assignment " ) )
assignment = self . getValues ( )
self . dateEdit . setText ( assignment [ 0 ] )
# self.courseEdit.setText(assignment[1])
self . numberEdit . setValue ( assignment [ 2 ] )
self . descriptionEdit . setText ( assignment [ 3 ] )
# self.completeEdit.setText(assignment[4])
def apply ( self ) :
assignmentList = self . getValues ( )
# updateAssignment(assignment, assignmentList[0], assignmentList[1], assignmentList[2], assignmentList[3], assignmentList[4])
class AssignmentModel ( ) :
date = None
course = None
number = 0
description = " "
complete = " "
def __init__ ( self , date , course , number , description , complete ) :
self . date = date
self . course = course
self . number = number
self . description = description
self . complete = complete
def getDate ( self ) :
return self . date
def setDate ( self , date ) :
self . date = date
def getCourse ( self ) :
return self . course
def setCourse ( self , course ) :
self . course = course
def getNumber ( self ) :
return self . number
def setNumber ( self , number ) :
self . number = number
def getDescription ( self ) :
return self . description
def setDescription ( self , description ) :
self . description = description
def getComplete ( self ) :
return self . complete
def setComplete ( self , complete ) :
self . complete = complete
class ReadingTab ( QWidget ) :
def __init__ ( self , parent = None ) :
super ( ReadingTab , self ) . __init__ ( parent )
self . addReadingButton = QPushButton ( self . trUtf8 ( " Add pages to read " ) )
self . deleteReadingButton = QPushButton ( self . trUtf8 ( " Delete pages " ) )
self . readingDoneButton = QPushButton ( self . trUtf8 ( " Done " ) )
self . makeTable ( )
2008-06-17 15:39:39 +02:00
self . vlayout = QVBoxLayout ( )
self . hlayout = QHBoxLayout ( )
2008-06-13 16:51:42 +02:00
2008-06-17 15:39:39 +02:00
self . hlayout . addWidget ( self . addReadingButton )
self . hlayout . addWidget ( self . deleteReadingButton )
self . hlayout . addWidget ( self . readingDoneButton )
self . hlayout . addStretch ( )
2008-06-13 16:51:42 +02:00
2008-06-17 15:39:39 +02:00
self . vlayout . addWidget ( self . readingTable )
self . vlayout . addLayout ( self . hlayout )
2008-06-13 16:51:42 +02:00
2008-06-17 15:39:39 +02:00
self . setLayout ( self . vlayout )
2008-06-13 16:51:42 +02:00
def makeTable ( self , current = None ) :
2008-06-17 15:39:39 +02:00
self . readingTable = QTableWidget ( 0 , 7 , self )
2008-06-13 16:51:42 +02:00
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 . append ( self . trUtf8 ( " Done " ) )
self . readingTable . setHorizontalHeaderLabels ( self . readingHeaderList )
self . readingTable . setAlternatingRowColors ( True )
self . readingTable . setEditTriggers ( QAbstractItemView . NoEditTriggers )
self . readingTable . setSelectionBehavior ( QAbstractItemView . SelectRows )
self . readingTable . setSelectionMode ( QAbstractItemView . SingleSelection )
selected = None
2008-06-17 15:39:39 +02:00
def updateTable ( self , semester ) :
self . readings = getReadingsFromDB ( semester )
rows = len ( self . readings )
self . readingTable . setRowCount ( rows )
for row in range ( rows ) :
2008-06-13 16:51:42 +02:00
self . addReadingToTable ( row )
self . readingTable . horizontalHeader ( ) . setResizeMode ( QHeaderView . ResizeToContents )
self . readingTable . sortItems ( 0 , Qt . AscendingOrder )
def addReadingToTable ( self , row , reading = None ) :
if reading == None :
reading = self . readings [ row ]
brush = QBrush ( Qt . NoBrush )
2008-06-13 20:53:23 +02:00
brush . setStyle ( Qt . SolidPattern )
2008-06-13 16:51:42 +02:00
if reading . getDone ( ) :
doneString = self . trUtf8 ( " Done " )
brush . setColor ( Qt . green )
else :
2008-06-13 20:53:23 +02:00
doneString = self . trUtf8 ( " Not done " )
brush . setColor ( Qt . red )
2008-06-13 16:51:42 +02:00
2008-06-13 20:53:23 +02:00
self . readingTable . setItem ( row , 0 , QTableWidgetItem ( QString ( " %02s " % reading . getWeek ( ) ) ) )
2008-06-13 16:51:42 +02:00
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 , 4 , QTableWidgetItem ( QString ( reading . getPages ( ) ) ) )
self . readingTable . setItem ( row , 5 , QTableWidgetItem ( QString ( " %i " % reading . getNumberOfPages ( ) ) ) )
item = QTableWidgetItem ( QString ( doneString ) )
item . setBackground ( brush )
self . readingTable . setItem ( row , 6 , item )
class ReadingDlg ( QDialog ) :
def __init__ ( self , parent = None ) :
super ( ReadingDlg , self ) . __init__ ( parent )
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 " ) )
self . weekEdit = QSpinBox ( )
self . weekEdit . setRange ( 1 , 52 )
self . courseEdit = QComboBox ( )
coursesStringList = QStringList ( )
courses = makeCoursesString ( )
for course in courses :
coursesStringList . append ( course )
self . courseEdit . addItems ( coursesStringList )
self . bookEdit = QComboBox ( )
booksStringList = QStringList ( )
books = makeBooksString ( )
for book in books :
booksStringList . append ( book )
self . bookEdit . addItems ( booksStringList )
self . chapterEdit = QLineEdit ( )
self . pagesEdit = QLineEdit ( )
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 )
self . layout = QGridLayout ( )
self . layout . addWidget ( self . weekLabel , 0 , 0 )
self . layout . addWidget ( self . courseLabel , 1 , 0 )
self . layout . addWidget ( self . bookLabel , 2 , 0 )
self . layout . addWidget ( self . chapterLabel , 3 , 0 )
self . layout . addWidget ( self . pagesLabel , 4 , 0 )
self . layout . addWidget ( self . weekEdit , 0 , 1 )
self . layout . addWidget ( self . courseEdit , 1 , 1 )
self . layout . addWidget ( self . bookEdit , 2 , 1 )
self . layout . addWidget ( self . chapterEdit , 3 , 1 )
self . layout . addWidget ( self . pagesEdit , 4 , 1 )
self . setLayout ( self . layout )
class AddReadingDlg ( ReadingDlg ) :
def __init__ ( self , parent = None ) :
super ( AddReadingDlg , self ) . __init__ ( parent )
buttonBox = QDialogButtonBox ( QDialogButtonBox . Ok | QDialogButtonBox . Cancel )
self . layout . addWidget ( buttonBox , 5 , 0 , 1 , 2 )
self . connect ( buttonBox , SIGNAL ( " accepted() " ) , self , SLOT ( " accept() " ) )
self . connect ( buttonBox , SIGNAL ( " rejected() " ) , self , SLOT ( " reject() " ) )
self . setWindowTitle ( self . trUtf8 ( " Add new reading " ) )
def accept ( self ) :
week = unicode ( self . weekEdit . value ( ) )
courseFull = unicode ( self . courseEdit . currentText ( ) )
bookTitle = unicode ( self . bookEdit . currentText ( ) )
chapter = unicode ( self . chapterEdit . text ( ) )
pages = unicode ( self . pagesEdit . text ( ) )
self . close ( )
course = getCourseFromDB ( getCourseCode ( courseFull ) )
book = getBookWithTitleFromDB ( bookTitle )
2008-06-17 15:39:39 +02:00
global semester
addNewReadingToDB ( semester , week , course , book , chapter , pages , False )
2008-06-13 16:51:42 +02:00
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 )
class EditReadingDlg ( ReadingDlg ) :
def __init__ ( self , parent = None ) :
super ( EditReadingDlg , self ) . __init__ ( parent )
self . setAttribute ( Qt . WA_DeleteOnClose )
buttonBox = QDialogButtonBox ( QDialogButtonBox . Apply | QDialogButtonBox . Close )
self . layout . addWidget ( buttonBox , 5 , 0 , 1 , 2 )
self . connect ( buttonBox . button ( QDialogButtonBox . Apply ) , SIGNAL ( " clicked() " ) , self . apply )
self . connect ( buttonBox , SIGNAL ( " rejected() " ) , self , SLOT ( " reject() " ) )
self . setWindowTitle ( self . trUtf8 ( " Edit reading " ) )
def apply ( self ) :
pass
class ReadingModel ( ) :
week = 0
course = None
book = None
chapter = " "
pages = " "
numberOfPages = 0
done = False
def __init__ ( self , week , course , book , chapter , pages , done = False ) :
self . week = week
self . course = course
self . book = book
self . chapter = chapter
self . pages = pages
self . numberOfPages = self . getNumberOfPages ( )
self . done = done
def getWeek ( self ) :
return self . week
def setWeek ( self , week ) :
self . week = week
def getCourse ( self ) :
return self . course
def setCourse ( self , course ) :
self . course = course
def getBook ( self ) :
return self . book
def setBook ( self , book ) :
self . book = book
def getChapter ( self ) :
return self . chapter
def setChapter ( self , chapter ) :
self . chapter = chapter
def getPages ( self ) :
return self . pages
def setPages ( self , pages ) :
self . pages = pages
def getNumberOfPages ( self ) :
pages = self . getPages ( )
pagesArray = pages . split ( " , " )
nextArray = [ ]
sum = 0
for p in pagesArray :
p . strip ( )
nextArray . append ( p . split ( " - " ) )
for n in nextArray :
sum + = int ( n [ 1 ] ) - int ( n [ 0 ] )
return sum
def getDone ( self ) :
return self . done
def setDone ( self , done ) :
self . done = done
class ScheduleTab ( QWidget ) :
def __init__ ( self , parent = None ) :
super ( ScheduleTab , self ) . __init__ ( parent )
self . addScheduleButton = QPushButton ( " Add lesson " )
2008-06-13 20:53:23 +02:00
self . deleteScheduleButton = QPushButton ( " Delete lesson " )
2008-06-13 16:51:42 +02:00
self . makeTable ( )
2008-06-17 15:39:39 +02:00
self . vlayout = QVBoxLayout ( )
self . hlayout = QHBoxLayout ( )
2008-06-13 16:51:42 +02:00
2008-06-17 15:39:39 +02:00
self . hlayout . addWidget ( self . addScheduleButton )
self . hlayout . addWidget ( self . deleteScheduleButton )
self . hlayout . addStretch ( )
self . vlayout . addWidget ( self . scheduleTable )
self . vlayout . addLayout ( self . hlayout )
2008-06-13 16:51:42 +02:00
2008-06-17 15:39:39 +02:00
self . setLayout ( self . vlayout )
2008-06-13 16:51:42 +02:00
def makeTable ( self , current = None ) :
self . scheduleTable = QTableWidget ( 12 , 5 , self )
self . scheduleTable . clear ( )
self . scheduleHorizontalHeaderList = QStringList ( )
self . scheduleHorizontalHeaderList . append ( self . trUtf8 ( " Monday " ) )
self . scheduleHorizontalHeaderList . append ( self . trUtf8 ( " Tuesday " ) )
self . scheduleHorizontalHeaderList . append ( self . trUtf8 ( " Wednesday " ) )
self . scheduleHorizontalHeaderList . append ( self . trUtf8 ( " Thursday " ) )
self . scheduleHorizontalHeaderList . append ( self . trUtf8 ( " Friday " ) )
self . scheduleVerticalHeaderList = QStringList ( )
for i in range ( 8 , 20 ) :
self . scheduleVerticalHeaderList . append ( self . trUtf8 ( " %i " % i ) )
self . scheduleTable . setHorizontalHeaderLabels ( self . scheduleHorizontalHeaderList )
self . scheduleTable . setVerticalHeaderLabels ( self . scheduleVerticalHeaderList )
self . scheduleTable . setAlternatingRowColors ( True )
self . scheduleTable . setEditTriggers ( QAbstractItemView . NoEditTriggers )
self . scheduleTable . setSelectionBehavior ( QAbstractItemView . SelectItems )
self . scheduleTable . setSelectionMode ( QAbstractItemView . SingleSelection )
selected = None
2008-06-17 15:39:39 +02:00
def updateTable ( self , semester ) :
self . schedule = getLessonsFromDB ( semester )
rows = len ( self . schedule )
self . scheduleTable . setRowCount ( rows )
for l in range ( rows ) :
2008-06-13 20:53:23 +02:00
self . addLessonToTable ( self . schedule [ l ] )
2008-06-13 16:51:42 +02:00
self . scheduleTable . horizontalHeader ( ) . setResizeMode ( QHeaderView . ResizeToContents )
self . scheduleTable . verticalHeader ( ) . setResizeMode ( QHeaderView . ResizeToContents )
2008-06-13 20:53:23 +02:00
def addLessonToTable ( self , lesson ) :
2008-06-15 21:21:39 +02:00
row = lesson . getTime ( ) - 8
2008-06-13 20:53:23 +02:00
column = self . getColumn ( lesson . getDay ( ) )
course = lesson . getCourse ( ) . getFull ( )
type = lesson . getType ( )
room = lesson . getRoom ( )
2008-06-15 21:21:39 +02:00
item = QTableWidgetItem ( QString ( " %s \n %s \n %s " % ( course , type , room ) ) )
item . setBackground ( self . getBackground ( QString ( " %s " % type ) , lesson . getCourse ( ) ) )
self . scheduleTable . setItem ( row , column , item )
2008-06-13 20:53:23 +02:00
def getColumn ( self , dayString ) :
day = QString ( " %s " % dayString )
if day . compare ( QString ( self . trUtf8 ( " Monday " ) ) ) == 0 :
return 0
elif day . compare ( QString ( self . trUtf8 ( " Tuesday " ) ) ) == 0 :
return 1
elif day . compare ( QString ( self . trUtf8 ( " Wednesday " ) ) ) == 0 :
return 2
elif day . compare ( QString ( self . trUtf8 ( " Thursday " ) ) ) == 0 :
return 3
elif day . compare ( QString ( self . trUtf8 ( " Friday " ) ) ) == 0 :
return 4
else :
return - 1
2008-06-14 13:25:52 +02:00
def getBackground ( self , type , course ) :
2008-06-13 20:53:23 +02:00
if type . compare ( QString ( self . trUtf8 ( " Lecture " ) ) ) == 0 :
2008-06-14 13:25:52 +02:00
brush = QBrush ( Qt . HorPattern )
2008-06-13 20:53:23 +02:00
elif type . compare ( QString ( self . trUtf8 ( " Assignment lecture " ) ) ) == 0 :
2008-06-14 13:25:52 +02:00
brush = QBrush ( Qt . CrossPattern )
2008-06-13 20:53:23 +02:00
elif type . compare ( QString ( self . trUtf8 ( " Assignment help " ) ) ) == 0 :
2008-06-14 13:25:52 +02:00
brush = QBrush ( Qt . VerPattern )
2008-06-13 20:53:23 +02:00
elif type . compare ( QString ( self . trUtf8 ( " Lab " ) ) ) == 0 :
2008-06-14 13:25:52 +02:00
brush = QBrush ( Qt . BDiagPattern )
2008-06-13 20:53:23 +02:00
elif type . compare ( QString ( self . trUtf8 ( " Seminar " ) ) ) == 0 :
2008-06-14 13:25:52 +02:00
brush = QBrush ( Qt . FDiagPattern )
2008-06-13 20:53:23 +02:00
elif type . compare ( QString ( self . trUtf8 ( " Other " ) ) ) == 0 :
2008-06-14 13:25:52 +02:00
brush = QBrush ( Qt . DiagCrossPattern )
2008-06-13 20:53:23 +02:00
else :
brush = QBrush ( Qt . NoBrush )
2008-06-14 13:25:52 +02:00
brush . setColor ( course . getColor ( ) )
2008-06-13 20:53:23 +02:00
return brush
2008-06-13 16:51:42 +02:00
class ScheduleDlg ( QDialog ) :
def __init__ ( self , parent = None ) :
super ( ScheduleDlg , self ) . __init__ ( parent )
self . dayLabel = QLabel ( self . trUtf8 ( " &Day " ) )
self . fromLabel = QLabel ( self . trUtf8 ( " &From " ) )
self . toLabel = QLabel ( self . trUtf8 ( " &To " ) )
self . courseLabel = QLabel ( self . trUtf8 ( " &Course " ) )
self . typeLabel = QLabel ( self . trUtf8 ( " Ty&pe " ) )
self . roomLabel = QLabel ( self . trUtf8 ( " &Room " ) )
self . dayEdit = QComboBox ( )
2008-06-15 21:21:39 +02:00
self . dayEdit . addItems ( getMain ( ) . days )
2008-06-13 16:51:42 +02:00
self . fromEdit = QSpinBox ( )
self . fromEdit . setRange ( 08.15 , 18.15 )
self . fromEdit . setSingleStep ( 01.00 )
self . toEdit = QSpinBox ( )
self . toEdit . setRange ( 09.00 , 19.00 )
self . toEdit . setSingleStep ( 01.00 )
self . courseEdit = QComboBox ( )
courses = makeCoursesString ( )
coursesStringList = QStringList ( )
for course in courses :
coursesStringList . append ( course )
self . courseEdit . addItems ( coursesStringList )
self . typeEdit = QComboBox ( )
2008-06-13 20:53:23 +02:00
types = [ self . trUtf8 ( " Lecture " ) , self . trUtf8 ( " Assignment lecture " ) , self . trUtf8 ( " Assignment help " ) , self . trUtf8 ( " Lab " ) , self . trUtf8 ( " Seminar " ) , self . trUtf8 ( " Other " ) ]
2008-06-13 16:51:42 +02:00
self . typeEdit . addItems ( types )
self . roomEdit = QLineEdit ( )
self . dayLabel . setBuddy ( self . dayEdit )
self . fromLabel . setBuddy ( self . fromEdit )
self . toLabel . setBuddy ( self . toEdit )
self . courseLabel . setBuddy ( self . courseEdit )
self . typeLabel . setBuddy ( self . typeEdit )
self . roomLabel . setBuddy ( self . roomEdit )
self . layout = QGridLayout ( )
self . layout . addWidget ( self . dayLabel , 0 , 0 )
self . layout . addWidget ( self . fromLabel , 1 , 0 )
self . layout . addWidget ( self . toLabel , 2 , 0 )
self . layout . addWidget ( self . courseLabel , 3 , 0 )
self . layout . addWidget ( self . typeLabel , 4 , 0 )
self . layout . addWidget ( self . roomLabel , 5 , 0 )
self . layout . addWidget ( self . dayEdit , 0 , 1 )
self . layout . addWidget ( self . fromEdit , 1 , 1 )
self . layout . addWidget ( self . toEdit , 2 , 1 )
self . layout . addWidget ( self . courseEdit , 3 , 1 )
self . layout . addWidget ( self . typeEdit , 4 , 1 )
self . layout . addWidget ( self . roomEdit , 5 , 1 )
self . setLayout ( self . layout )
class AddScheduleDlg ( ScheduleDlg ) :
def __init__ ( self , parent = None ) :
super ( AddScheduleDlg , self ) . __init__ ( parent )
buttonBox = QDialogButtonBox ( QDialogButtonBox . Ok | QDialogButtonBox . Cancel )
self . layout . addWidget ( buttonBox , 6 , 0 , 1 , 2 )
self . connect ( buttonBox , SIGNAL ( " accepted() " ) , self , SLOT ( " accept() " ) )
self . connect ( buttonBox , SIGNAL ( " rejected() " ) , self , SLOT ( " reject() " ) )
self . setWindowTitle ( self . trUtf8 ( " Add new lesson " ) )
def accept ( self ) :
day = unicode ( self . dayEdit . currentText ( ) )
2008-06-15 21:21:39 +02:00
fromtime = self . fromEdit . value ( )
totime = self . toEdit . value ( )
2008-06-13 16:51:42 +02:00
courseFull = unicode ( self . courseEdit . currentText ( ) )
type = unicode ( self . typeEdit . currentText ( ) )
room = unicode ( self . roomEdit . text ( ) )
course = getCourseFromDB ( getCourseCode ( courseFull ) )
2008-06-17 15:39:39 +02:00
global semester
2008-06-15 21:21:39 +02:00
for t in range ( fromtime , totime ) :
2008-06-17 15:39:39 +02:00
addNewLessonToDB ( semester , day , t , course , type , room )
2008-06-15 21:21:39 +02:00
getMain ( ) . schedule . addLessonToTable ( ScheduleModel ( day , t , course , type , room ) )
self . close ( )
2008-06-13 16:51:42 +02:00
class EditScheduleDlg ( ScheduleDlg ) :
def __init__ ( self , parent = None ) :
super ( EditScheduleDlg , self ) . __init__ ( parent )
buttonBox = QDialogButtonBox ( QDialogButtonBox . Apply | QDialogButtonBox . Close )
self . layout . addWidget ( buttonBox , 6 , 0 , 1 , 2 )
self . connect ( buttonBox . button ( QDialogButtonBox . Apply ) , SIGNAL ( " clicked() " ) , self . apply )
self . connect ( buttonBox , SIGNAL ( " rejected() " ) , self , SLOT ( " reject() " ) )
self . setWindowTitle ( self . trUtf8 ( " Edit lesson " ) )
def apply ( self ) :
pass
class ScheduleModel ( ) :
day = " "
2008-06-15 21:21:39 +02:00
time = 0
2008-06-13 16:51:42 +02:00
course = None
type = " "
room = " "
2008-06-15 21:21:39 +02:00
def __init__ ( self , day , time , course , type , room ) :
2008-06-13 16:51:42 +02:00
self . day = day
2008-06-15 21:21:39 +02:00
self . time = time
2008-06-13 16:51:42 +02:00
self . course = course
self . type = type
self . room = room
def getDay ( self ) :
return self . day
def setDay ( self , day ) :
self . day = day
2008-06-15 21:21:39 +02:00
def getTime ( self ) :
return self . time
2008-06-13 16:51:42 +02:00
2008-06-15 21:21:39 +02:00
def setTime ( self , fromTime ) :
self . time = time
2008-06-13 16:51:42 +02:00
def getCourse ( self ) :
return self . course
def setCourse ( self , course ) :
self . course = course
def getType ( self ) :
return self . type
def setType ( self , type ) :
self . type = type
def getRoom ( self ) :
return self . room
def setRoom ( self , room ) :
self . room = room
class CourseDlg ( QDialog ) :
def __init__ ( self , parent = None ) :
super ( CourseDlg , self ) . __init__ ( parent )
self . books = [ ]
self . codeLabel = QLabel ( self . trUtf8 ( " &Code " ) )
self . titleLabel = QLabel ( self . trUtf8 ( " &Title " ) )
self . shortLabel = QLabel ( self . trUtf8 ( " &Short form " ) )
self . booksLabel = QLabel ( self . trUtf8 ( " &Books " ) )
self . codeEdit = QLineEdit ( )
self . titleEdit = QLineEdit ( )
self . shortEdit = QLineEdit ( )
2008-06-15 21:21:39 +02:00
self . booksEdit = QListWidget ( )
self . updateList ( )
self . booksEdit . setSelectionMode ( QAbstractItemView . ExtendedSelection )
2008-06-13 16:51:42 +02:00
2008-06-15 21:21:39 +02:00
self . newBook = QPushButton ( " Add new book " )
self . connect ( self . newBook , SIGNAL ( " pressed() " ) , getMain ( ) . addBook )
self . connect ( getMain ( ) , SIGNAL ( " newBook " ) , self . updateList )
self . codeLabel . setBuddy ( self . codeEdit )
2008-06-13 16:51:42 +02:00
self . titleLabel . setBuddy ( self . titleEdit )
self . shortLabel . setBuddy ( self . shortEdit )
self . booksLabel . setBuddy ( self . booksEdit )
self . layout = QGridLayout ( )
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 . codeEdit , 0 , 1 )
self . layout . addWidget ( self . titleEdit , 1 , 1 )
self . layout . addWidget ( self . shortEdit , 2 , 1 )
2008-06-15 21:21:39 +02:00
self . layout . addWidget ( self . booksEdit , 3 , 1 )
self . layout . addWidget ( self . newBook , 4 , 0 )
2008-06-13 16:51:42 +02:00
self . setLayout ( self . layout )
2008-06-15 21:21:39 +02:00
def updateList ( self ) :
self . booksEdit . clear ( )
booksDB = getBooksFromDB ( )
booksStringList = QStringList ( )
for book in booksDB :
booksStringList . append ( book . getTitle ( ) )
self . booksEdit . addItems ( booksStringList )
self . booksEdit . sortItems ( )
2008-06-15 15:28:23 +02:00
def addNewBookToCourse ( self ) :
book = getBookWithTitleFromDB ( booktitle )
self . books . append ( book )
2008-06-13 16:51:42 +02:00
class AddCourseDlg ( CourseDlg ) :
def __init__ ( self , parent = None ) :
super ( AddCourseDlg , self ) . __init__ ( parent )
buttonBox = QDialogButtonBox ( QDialogButtonBox . Ok | QDialogButtonBox . Cancel )
2008-06-15 21:21:39 +02:00
self . layout . addWidget ( buttonBox , 4 , 1 , 1 , 2 )
2008-06-13 16:51:42 +02:00
self . connect ( buttonBox , SIGNAL ( " accepted() " ) , self , SLOT ( " accept() " ) )
self . connect ( buttonBox , SIGNAL ( " rejected() " ) , self , SLOT ( " reject() " ) )
self . setWindowTitle ( self . trUtf8 ( " Add new course " ) )
def accept ( self ) :
courseCode = unicode ( self . codeEdit . text ( ) )
courseTitle = unicode ( self . titleEdit . text ( ) )
2008-06-14 19:48:48 +02:00
courseShort = unicode ( self . shortEdit . text ( ) )
2008-06-15 21:21:39 +02:00
courseBooks = self . booksEdit . selectedItems ( )
2008-06-14 19:48:48 +02:00
color = getRandomColor ( )
global colors
while color in colors :
color = getRandomColor ( )
colors . append ( color )
2008-06-15 21:21:39 +02:00
books = [ ]
for book in courseBooks :
books . append ( getBookWithTitleFromDB ( " %s " % book . text ( ) ) )
course = CourseModel ( courseCode , courseTitle , courseShort , color , books )
addNewCourseToDB ( courseCode , courseTitle , courseShort , color , books )
2008-06-13 16:51:42 +02:00
self . close ( )
class CourseModel ( ) :
code = " "
title = " "
short = " "
full = " "
books = [ ]
2008-06-14 19:48:48 +02:00
def __init__ ( self , code , title , short , color , books ) :
2008-06-13 16:51:42 +02:00
self . code = code
self . title = title
self . short = short
self . setFull ( code , title )
2008-06-15 15:28:23 +02:00
self . color = color
2008-06-13 16:51:42 +02:00
self . books = books
def getCode ( self ) :
return self . code
def getTitle ( self ) :
return self . title
def getShort ( self ) :
return self . short
def setFull ( self , code , title ) :
self . full = code + ' ' + title
def getFull ( self ) :
return self . full
2008-06-14 19:48:48 +02:00
def getColor ( self ) :
return self . color
2008-06-13 16:51:42 +02:00
def addBook ( self , book ) :
books . append ( book )
def getBooks ( self ) :
return self . books
class BookDlg ( QDialog ) :
def __init__ ( self , parent = None ) :
super ( BookDlg , self ) . __init__ ( parent )
self . titleLabel = QLabel ( self . trUtf8 ( " &Title " ) )
self . authorLabel = QLabel ( self . trUtf8 ( " &Author " ) )
self . editionLabel = QLabel ( self . trUtf8 ( " &Edition " ) )
self . isbnLabel = QLabel ( self . trUtf8 ( " &ISBN " ) )
self . titleEdit = QLineEdit ( )
self . authorEdit = QLineEdit ( )
self . editionEdit = QSpinBox ( )
self . editionEdit . setRange ( 1 , 50 )
self . isbnEdit = QLineEdit ( )
self . titleLabel . setBuddy ( self . titleEdit )
self . authorLabel . setBuddy ( self . authorEdit )
self . editionLabel . setBuddy ( self . editionEdit )
self . isbnLabel . setBuddy ( self . isbnEdit )
self . layout = QGridLayout ( )
self . layout . addWidget ( self . titleLabel , 0 , 0 )
self . layout . addWidget ( self . authorLabel , 1 , 0 )
self . layout . addWidget ( self . editionLabel , 2 , 0 )
self . layout . addWidget ( self . isbnLabel , 3 , 0 )
self . layout . addWidget ( self . titleEdit , 0 , 1 )
self . layout . addWidget ( self . authorEdit , 1 , 1 )
self . layout . addWidget ( self . editionEdit , 2 , 1 )
self . layout . addWidget ( self . isbnEdit , 3 , 1 )
self . setLayout ( self . layout )
class AddBookDlg ( BookDlg ) :
def __init__ ( self , parent = None ) :
super ( AddBookDlg , self ) . __init__ ( parent )
buttonBox = QDialogButtonBox ( QDialogButtonBox . Ok | QDialogButtonBox . Cancel )
self . layout . addWidget ( buttonBox , 4 , 0 , 1 , 2 )
self . connect ( buttonBox , SIGNAL ( " accepted() " ) , self , SLOT ( " accept() " ) )
self . connect ( buttonBox , SIGNAL ( " rejected() " ) , self , SLOT ( " reject() " ) )
self . setWindowTitle ( self . trUtf8 ( " Add new book " ) )
def accept ( self ) :
bookTitle = unicode ( self . titleEdit . text ( ) )
bookAuthor = unicode ( self . authorEdit . text ( ) )
bookEdition = self . editionEdit . value ( )
bookIsbn = unicode ( self . isbnEdit . text ( ) )
addNewBookToDB ( bookIsbn , bookTitle , bookAuthor , bookEdition )
2008-06-15 21:21:39 +02:00
getMain ( ) . emit ( SIGNAL ( " newBook " ) )
self . close ( )
2008-06-13 16:51:42 +02:00
class BookModel ( ) :
title = " "
author = " "
edition = 0
isbn = " "
def __init__ ( self , isbn , title , author , edition ) :
self . isbn = isbn
self . title = title
self . author = author
self . edition = edition
def getIsbn ( self ) :
return self . isbn
def getTitle ( self ) :
return self . title
def getAuthor ( self ) :
return self . author
def getEdition ( self ) :
return self . edition
2008-06-17 15:39:39 +02:00
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 ( )
2008-06-15 21:21:39 +02:00
class SemesterModel ( ) :
term = " "
year = 0
2008-06-17 15:39:39 +02:00
assignments = [ ]
readings = [ ]
lessons = [ ]
2008-06-15 21:21:39 +02:00
def __init__ ( self , term , year ) :
self . term = term
self . year = year
def getTerm ( self ) :
return self . term
def getYear ( self ) :
return self . year
2008-06-17 15:39:39 +02:00
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
2008-06-15 21:21:39 +02:00
2008-06-13 16:51:42 +02:00
class CalendarTab ( QWidget ) :
def __init__ ( self , parent = None ) :
super ( CalendarTab , self ) . __init__ ( parent )
calendar = QCalendarWidget ( )
calendar . setFirstDayOfWeek ( Qt . Monday )
layout = QVBoxLayout ( )
layout . addWidget ( calendar )
self . setLayout ( layout )
def initDB ( ) :
conn = sqlite . connect ( ' egon.db ' )
curs = conn . cursor ( )
return curs , conn
def initNewDB ( ) :
cursor , conn = initDB ( )
2008-06-15 21:21:39 +02:00
initSemesterDB ( cursor )
2008-06-13 16:51:42 +02:00
initAssignmentDB ( cursor )
initReadingDB ( cursor )
initScheduleDB ( cursor )
initBookDB ( cursor )
initCourseDB ( cursor )
initCourseUsesBook ( cursor )
exitDB ( conn )
2008-06-15 21:21:39 +02:00
def initSemesterDB ( cursor ) :
cursor . execute ( '''
CREATE TABLE Semester (
term TEXT ,
year INT ,
PRIMARY KEY ( term , year )
)
''' )
2008-06-13 16:51:42 +02:00
def initAssignmentDB ( cursor ) :
cursor . execute ( '''
CREATE TABLE Assignment (
date DATETIME ,
course TEXT ,
number INT ,
description TEXT ,
complete TEXT ,
2008-06-17 15:39:39 +02:00
term TEXT ,
year INT ,
2008-06-13 16:51:42 +02:00
PRIMARY KEY ( course , number )
)
''' )
def initReadingDB ( cursor ) :
cursor . execute ( '''
CREATE TABLE Reading (
2008-06-15 21:21:39 +02:00
week INT ,
2008-06-13 16:51:42 +02:00
course TEXT ,
book INT ,
chapter TEXT ,
pages TEXT ,
done BOOLEAN ,
2008-06-17 15:39:39 +02:00
term TEXT ,
year INT ,
2008-06-13 16:51:42 +02:00
PRIMARY KEY ( week , course , book )
)
''' )
def initScheduleDB ( cursor ) :
cursor . execute ( '''
CREATE TABLE Lesson (
day TEXT ,
2008-06-15 21:21:39 +02:00
time INT ,
2008-06-13 16:51:42 +02:00
course TEXT ,
type TEXT ,
room TEXT ,
2008-06-17 15:39:39 +02:00
term TEXT ,
year INT ,
2008-06-15 21:21:39 +02:00
PRIMARY KEY ( course , day , time )
2008-06-13 16:51:42 +02:00
)
''' )
def initBookDB ( cursor ) :
cursor . execute ( '''
CREATE TABLE Book (
isbn TEXT PRIMARY KEY ,
title TEXT ,
author TEXT ,
edition INTEGER
)
''' )
def initCourseDB ( cursor ) :
cursor . execute ( '''
CREATE TABLE Course (
code TEXT PRIMARY KEY ,
title TEXT ,
2008-06-14 19:48:48 +02:00
short TEXT ,
red INT ,
green INT ,
blue INT
2008-06-13 16:51:42 +02:00
)
''' )
def initCourseUsesBook ( cursor ) :
cursor . execute ( '''
CREATE TABLE CourseUsesBook (
courseCode TEXT ,
bookIsbn TEXT ,
PRIMARY KEY ( courseCode , bookIsbn )
)
''' )
2008-06-17 15:39:39 +02:00
def addNewSemesterToDB ( term , year ) :
cursor , conn = initDB ( )
cursor . execute ( '''
INSERT INTO Semester ( term , year )
VALUES ( ? , ? )
''' , (term, year))
exitDB ( conn )
2008-06-15 21:21:39 +02:00
def addNewAssignmentToDB ( semester , datetime , course , number , description , complete ) :
2008-06-13 16:51:42 +02:00
cursor , conn = initDB ( )
day = datetime . date ( ) . day ( )
month = datetime . date ( ) . month ( )
year = datetime . date ( ) . year ( )
hour = datetime . time ( ) . hour ( )
minute = datetime . time ( ) . minute ( )
timestring = " %02i - %02i - %02i %02i : %02i " % ( year , month , day , hour , minute )
2008-06-17 15:39:39 +02:00
term = " %s " % semester . getTerm ( )
year = semester . getYear ( )
2008-06-13 16:51:42 +02:00
cursor . execute ( '''
2008-06-17 15:39:39 +02:00
INSERT INTO Assignment ( date , course , number , description , complete , term , year )
VALUES ( datetime ( ? ) , ? , ? , ? , ? , ? , ? )
''' , (timestring, course.getCode(), number, description, complete, term, year))
2008-06-13 16:51:42 +02:00
2008-06-15 21:21:39 +02:00
exitDB ( conn )
2008-06-13 16:51:42 +02:00
2008-06-15 21:21:39 +02:00
def addNewReadingToDB ( semester , week , course , book , chapter , pages , done ) :
2008-06-13 16:51:42 +02:00
cursor , conn = initDB ( )
cursor . execute ( '''
2008-06-17 15:39:39 +02:00
INSERT INTO Reading ( week , course , book , chapter , pages , done , term , year )
VALUES ( ? , ? , ? , ? , ? , ? , ? , ? )
''' , (week, course.getCode(), book.getIsbn(), chapter, pages, done, semester.getTerm(), semester.getYear()))
2008-06-15 21:21:39 +02:00
2008-06-13 16:51:42 +02:00
exitDB ( conn )
2008-06-15 21:21:39 +02:00
def addNewLessonToDB ( semester , day , time , course , type , room ) :
2008-06-13 16:51:42 +02:00
cursor , conn = initDB ( )
cursor . execute ( '''
2008-06-17 15:39:39 +02:00
INSERT INTO Lesson ( day , time , course , type , room , term , year )
VALUES ( ? , ? , ? , ? , ? , ? , ? )
''' , (day, time, course.getCode(), type, room, semester.getTerm(), semester.getYear()))
2008-06-13 16:51:42 +02:00
exitDB ( conn )
2008-06-14 19:48:48 +02:00
def addNewCourseToDB ( code , title , short , color , books ) :
2008-06-13 16:51:42 +02:00
cursor , conn = initDB ( )
2008-06-14 19:48:48 +02:00
red = color . red ( )
green = color . green ( )
blue = color . blue ( )
2008-06-13 16:51:42 +02:00
cursor . execute ( '''
2008-06-14 19:48:48 +02:00
INSERT INTO Course ( code , title , short , red , green , blue )
VALUES ( ? , ? , ? , ? , ? , ? )
''' , (code, title, short, red, green, blue))
2008-06-13 16:51:42 +02:00
for book in books :
cursor . execute ( '''
INSERT INTO CourseUsesBook ( courseCode , bookIsbn )
VALUES ( ? , ? )
''' , (code, book.getIsbn()))
exitDB ( conn )
def addNewBookToDB ( isbn , title , author , edition ) :
cursor , conn = initDB ( )
cursor . execute ( '''
INSERT INTO Book
VALUES ( ? , ? , ? , ? )
''' , (isbn, title, author, edition))
exitDB ( conn )
2008-06-17 15:39:39 +02:00
def getAssignmentsFromDB ( semester ) :
2008-06-13 16:51:42 +02:00
cursor , conn = initDB ( )
2008-06-17 15:39:39 +02:00
term = " %s " % semester . getTerm ( )
year = ( semester . getYear ( ) )
2008-06-13 16:51:42 +02:00
cursor . execute ( '''
SELECT *
FROM Assignment
2008-06-17 15:39:39 +02:00
WHERE term = ?
AND year = ?
''' , (term, year))
2008-06-13 16:51:42 +02:00
assignments = [ ]
for row in cursor . fetchall ( ) :
assignments . append ( AssignmentModel ( getQDateTime ( row [ 0 ] ) , getCourseFromDB ( row [ 1 ] ) , row [ 2 ] , row [ 3 ] , row [ 4 ] ) )
exitDB ( conn )
return assignments
def getQDateTime ( timestamp ) :
if not timestamp :
return None
datetimeList = timestamp . split ( )
dateString = datetimeList [ 0 ]
timeString = datetimeList [ 1 ]
dateList = dateString . split ( ' - ' )
timeList = timeString . split ( ' : ' )
year = string . atoi ( dateList [ 0 ] )
month = string . atoi ( dateList [ 1 ] )
day = string . atoi ( dateList [ 2 ] )
hour = string . atoi ( timeList [ 0 ] )
minute = string . atoi ( timeList [ 1 ] )
date = QDate ( year , month , day )
time = QTime ( hour , minute )
datetime = QDateTime ( date , time )
return datetime
2008-06-17 15:39:39 +02:00
def getReadingsFromDB ( semester ) :
2008-06-13 16:51:42 +02:00
cursor , conn = initDB ( )
2008-06-17 15:39:39 +02:00
term = " %s " % semester . getTerm ( )
year = semester . getYear ( )
2008-06-13 16:51:42 +02:00
cursor . execute ( '''
SELECT *
FROM Reading
2008-06-17 15:39:39 +02:00
WHERE term = ?
AND year = ?
''' , (term, year))
2008-06-13 16:51:42 +02:00
readings = [ ]
for row in cursor . fetchall ( ) :
readings . append ( ReadingModel ( row [ 0 ] , getCourseFromDB ( row [ 1 ] ) , getBookFromDB ( row [ 2 ] ) , row [ 3 ] , row [ 4 ] , row [ 5 ] ) )
exitDB ( conn )
return readings
2008-06-17 15:39:39 +02:00
def getLessonsFromDB ( semester ) :
2008-06-13 16:51:42 +02:00
cursor , conn = initDB ( )
2008-06-17 15:39:39 +02:00
term = " %s " % semester . getTerm ( )
year = semester . getYear ( )
2008-06-13 16:51:42 +02:00
cursor . execute ( '''
SELECT *
FROM Lesson
2008-06-17 15:39:39 +02:00
WHERE term = ?
AND year = ?
''' , (term, year))
2008-06-13 16:51:42 +02:00
lessons = [ ]
for row in cursor . fetchall ( ) :
2008-06-15 21:21:39 +02:00
lessons . append ( ScheduleModel ( row [ 0 ] , row [ 1 ] , getCourseFromDB ( row [ 2 ] ) , row [ 3 ] , row [ 4 ] ) )
2008-06-13 16:51:42 +02:00
exitDB ( conn )
return lessons
def getCoursesFromDB ( ) :
cursor , conn = initDB ( )
cursor . execute ( '''
SELECT *
FROM Course
''' )
courses = [ ]
for row in cursor . fetchall ( ) :
2008-06-14 19:48:48 +02:00
courses . append ( CourseModel ( row [ 0 ] , row [ 1 ] , row [ 2 ] , QColor ( row [ 3 ] , row [ 4 ] , row [ 5 ] ) , [ ] ) )
2008-06-13 16:51:42 +02:00
for course in courses :
cursor . execute ( '''
SELECT bookIsbn
FROM CourseUsesBook
WHERE courseCode = ?
''' , (course.getCode(),))
fetched = cursor . fetchall ( )
for fetchedRow in fetched :
cursor . execute ( '''
SELECT *
FROM Book
WHERE isbn = ?
''' , (fetchedRow[0],))
for row in cursor :
course . addBook ( BookModel ( row [ 0 ] , row [ 1 ] , row [ 2 ] , row [ 3 ] ) )
return courses
def getCourseFromDB ( courseCode ) :
cursor , conn = initDB ( )
cursor . execute ( '''
SELECT *
FROM Course
WHERE code = ?
''' , (courseCode,))
2008-06-15 21:21:39 +02:00
course = None
2008-06-13 16:51:42 +02:00
for row in cursor . fetchall ( ) :
2008-06-14 19:48:48 +02:00
course = CourseModel ( row [ 0 ] , row [ 1 ] , row [ 2 ] , QColor ( row [ 3 ] , row [ 4 ] , row [ 5 ] ) , [ ] )
2008-06-13 16:51:42 +02:00
cursor . execute ( '''
SELECT bookIsbn
FROM CourseUsesBook
WHERE courseCode = ?
''' , (courseCode,))
fetched = cursor . fetchall ( )
for fetchedRow in fetched :
cursor . execute ( '''
SELECT *
FROM Book
WHERE isbn = ?
''' , (fetchedRow[0],))
for row in cursor :
course . addBook ( BookModel ( row [ 0 ] , row [ 1 ] , row [ 2 ] , row [ 3 ] ) )
exitDB ( conn )
return course
def getBooksFromDB ( ) :
cursor , conn = initDB ( )
cursor . execute ( '''
SELECT *
FROM Book
''' )
books = [ ]
for row in cursor . fetchall ( ) :
books . append ( BookModel ( row [ 0 ] , row [ 1 ] , row [ 2 ] , row [ 3 ] ) )
exitDB ( conn )
return books
def getBookFromDB ( isbn ) :
cursor , conn = initDB ( )
cursor . execute ( '''
SELECT *
FROM Book
WHERE isbn = ?
''' , (isbn,))
for row in cursor . fetchall ( ) :
book = BookModel ( row [ 0 ] , row [ 1 ] , row [ 2 ] , row [ 3 ] )
exitDB ( conn )
return book
def getBookWithTitleFromDB ( booktitle ) :
cursor , conn = initDB ( )
book = " %s " % booktitle
cursor . execute ( '''
SELECT *
FROM Book
WHERE title = ?
''' , (book,))
for row in cursor . fetchall ( ) :
book = BookModel ( row [ 0 ] , row [ 1 ] , row [ 2 ] , row [ 3 ] )
exitDB ( conn )
return book
2008-06-17 15:39:39 +02:00
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
2008-06-13 16:51:42 +02:00
def updateAssignmentCompletion ( coursecode , num , completion ) :
cursor , conn = initDB ( )
complete = " %s " % completion
course = " %s " % coursecode
number = ( num . toInt ( ) ) [ 0 ]
cursor . execute ( '''
UPDATE Assignment
SET complete = ?
WHERE course = ?
AND number = ?
''' , (complete, course, number))
exitDB ( conn )
def updateReadingDone ( week , coursecode , bookisbn , done ) :
cursor , conn = initDB ( )
course = " %s " % coursecode
book = " %s " % bookisbn
cursor . execute ( '''
UPDATE Reading
SET done = ?
WHERE week = ?
AND course = ?
AND book = ?
''' , (done, week, course, book))
exitDB ( conn )
def removeAssignmentFromDB ( coursecode , num ) :
cursor , conn = initDB ( )
course = " %s " % coursecode
number = ( num . toInt ( ) ) [ 0 ]
cursor . execute ( '''
DELETE
FROM Assignment
WHERE course = ?
AND number = ?
''' , (course, number))
exitDB ( conn )
def removeReadingFromDB ( week , coursecode , bookisbn ) :
cursor , conn = initDB ( )
course = " %s " % coursecode
book = " %s " % bookisbn
cursor . execute ( '''
DELETE
FROM Reading
WHERE week = ?
AND course = ?
AND book = ?
''' , (week, course, book))
exitDB ( conn )
2008-06-15 21:21:39 +02:00
def removeLessonFromDB ( daystring , coursecode , fromTime ) :
cursor , conn = initDB ( )
day = " %s " % daystring
course = " %s " % coursecode
time = " %s " % fromTime
cursor . execute ( '''
DELETE
FROM Lesson
WHERE day = ?
AND course = ?
AND time = ?
''' , (day, course, time))
exitDB ( conn )
2008-06-13 16:51:42 +02:00
def exitDB ( conn ) :
conn . commit ( )
conn . close ( )
def getCourseCode ( courseFull ) :
course = courseFull . split ( ' ' )
return course [ 0 ]
def addNewCourse ( course ) :
courses . append ( course )
2008-06-14 19:48:48 +02:00
addNewCourseToDB ( course . getCode ( ) , course . getTitle ( ) , course . getShort ( ) , course . getColor ( ) )
2008-06-13 16:51:42 +02:00
addNewCourseString ( course )
def getCourses ( ) :
global courses
return courses
def addNewCourseString ( course ) :
global coursesString
coursesString . append ( course . getFull ( ) )
def makeCoursesString ( ) :
emptyCourses ( )
cs = getCoursesFromDB ( )
if cs :
for c in cs :
addNewCourseString ( c )
s = getCoursesString ( )
return s
def getCoursesString ( ) :
global coursesString
return coursesString
def addNewBook ( book ) :
books . append ( book )
addNewBookToDB ( book . getISBN ( ) , book . getTitle ( ) , book . getAuthor ( ) , book . getEdition ( ) , book . getCourse ( ) )
addNewBookString ( book )
def getBooks ( ) :
global books
return books
def addNewBookString ( book ) :
global booksString
booksString . append ( book . getTitle ( ) )
def makeBooksString ( ) :
emptyBooks ( )
bs = getBooksFromDB ( )
if bs :
for b in bs :
addNewBookString ( b )
s = getBooksString ( )
return s
def getBooksString ( ) :
global booksString
return booksString
def emptyCourses ( ) :
global courses
global coursesString
courses = [ ]
coursesString = [ ]
def emptyBooks ( ) :
global books
global booksString
books = [ ]
booksString = [ ]
2008-06-14 19:48:48 +02:00
def getRandomColor ( ) :
return QColor ( getRandomColorPart ( ) , getRandomColorPart ( ) , getRandomColorPart ( ) )
def getRandomColorPart ( ) :
return random . random ( ) * 256
2008-06-13 16:51:42 +02:00
def getMain ( ) :
global main
return main
def main ( ) :
app = QApplication ( sys . argv )
form = MainWindow ( )
app . setOrganizationName ( " PVV " )
app . setOrganizationDomain ( " pvv.ntnu.no " )
app . setApplicationName ( form . title )
form . show ( )
app . exec_ ( )
main ( )
#initNewDB()