Compare commits
No commits in common. "83e370f0332309c6e46ae0ecfbab47b8e5fe77f2" and "3205c764ba7b298b14fcdf7c0d76cb4bf00ee715" have entirely different histories.
83e370f033
...
3205c764ba
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
|
||||
class AssignmentTab(QWidget):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
|
||||
super(AssignmentTab, self).__init__(parent)
|
||||
|
||||
assignmentsTable = QTableWidget()
|
||||
|
||||
addAssignmentButton = QPushButton("Add assignment")
|
||||
editAssignmentButton = QPushButton("Edit assignment")
|
||||
assignmentDoneButton = QPushButton("Done")
|
||||
|
||||
vlayout = QVBoxLayout()
|
||||
hlayout = QHBoxLayout()
|
||||
|
||||
hlayout.addWidget(addAssignmentButton)
|
||||
hlayout.addWidget(editAssignmentButton)
|
||||
hlayout.addWidget(assignmentDoneButton)
|
||||
|
||||
vlayout.addWidget(assignmentsTable)
|
||||
vlayout.addLayout(hlayout)
|
||||
|
||||
self.setLayout(vlayout)
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
|
||||
class CalendarTab(QWidget):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
|
||||
super(CalendarTab, self).__init__(parent)
|
||||
|
||||
calendar = QCalendarWidget()
|
||||
|
||||
layout = QVBoxLayout()
|
||||
layout.addWidget(calendar)
|
||||
self.setLayout(layout)
|
||||
|
31
README.md
31
README.md
|
@ -1,31 +0,0 @@
|
|||
# Egon
|
||||
|
||||
Egon is a planner for assignments, reading homework and lessons, which could come in handy for students.
|
||||
|
||||
---
|
||||
|
||||
## Technology
|
||||
|
||||
It is written in Python, using Qt4, PyQt, and SQLite.
|
||||
|
||||
---
|
||||
|
||||
## Progress
|
||||
|
||||
### 06.09.08
|
||||
|
||||
Egon is now properly translated into Norwegian using Qt Linguist. So now there is only one program, as there should be. egon_no.py is still available, in case of locale trouble.
|
||||
|
||||
### 10.08.08
|
||||
|
||||
Norsk versjon også tilgjengelig: egonbm.py.
|
||||
|
||||
### 18.08.06
|
||||
|
||||
It is now as good as finished, and is working properly. Version 1.0.0 is thus released! It is (almost) even save to use (especially if you know how to fix databases manually). There is even an tar.gz, in dist/.
|
||||
|
||||
Some icons are on their way, but they are not really necessary. Or, as I meant to say, some icons are on their way as soon as I learn how to draw. Meaning never.
|
||||
|
||||
More features are planned, like better exception handling (it works properly unless you write wrong on purpose. The logic behind studies are used as boundaries, and it should thus work fine. But if there suddenly are multiple 'Assignment 2' given in one course, there is trouble coming.) A printing function is also planned. After all, I do have a proper icon for it. I also mean to translate it, I just need to figure out Qt Linguist first.
|
||||
|
||||
The license will also be added. It's GPL.
|
|
@ -0,0 +1,34 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
|
||||
class ReadingTab(QWidget):
|
||||
|
||||
|
||||
def __init__(self, parent=None):
|
||||
|
||||
super(ReadingTab, self).__init__(parent)
|
||||
|
||||
readingTable = QTableWidget()
|
||||
|
||||
addReadingButton = QPushButton("Add pages to read")
|
||||
editReadingButton = QPushButton("Edit pages")
|
||||
readingDoneButton = QPushButton("Done")
|
||||
|
||||
vlayout = QVBoxLayout()
|
||||
hlayout = QHBoxLayout()
|
||||
|
||||
hlayout.addWidget(addReadingButton)
|
||||
hlayout.addWidget(editReadingButton)
|
||||
hlayout.addWidget(readingDoneButton)
|
||||
|
||||
vlayout.addWidget(readingTable)
|
||||
vlayout.addLayout(hlayout)
|
||||
|
||||
self.setLayout(vlayout)
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
|
||||
class ScheduleTab(QWidget):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
|
||||
super(ScheduleTab, self).__init__(parent)
|
||||
|
||||
scheduleTable = QTableWidget()
|
||||
|
||||
addScheduleButton = QPushButton("Add lesson")
|
||||
editScheduleButton = QPushButton("Edit lesson")
|
||||
|
||||
vlayout = QVBoxLayout()
|
||||
hlayout = QHBoxLayout()
|
||||
|
||||
hlayout.addWidget(addScheduleButton)
|
||||
hlayout.addWidget(editScheduleButton)
|
||||
|
||||
vlayout.addWidget(scheduleTable)
|
||||
vlayout.addLayout(hlayout)
|
||||
|
||||
self.setLayout(vlayout)
|
|
@ -0,0 +1,16 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
from assignmentDlg import *
|
||||
from readingDlg import *
|
||||
from scheduleDlg import *
|
||||
|
Binary file not shown.
|
@ -0,0 +1,25 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from assignmentDlg import *
|
||||
|
||||
class AddAssignmentDlg(AssignmentDlg):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(AddAssignmentDlg, self).__init__(parent)
|
||||
|
||||
buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
|
||||
|
||||
self.layout.addWidget(buttonBox, 7, 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"))
|
||||
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from bookDlg import *
|
||||
|
||||
class AddBookDlg(BookDlg):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(AddBookDlg, 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 book"))
|
||||
|
Binary file not shown.
|
@ -0,0 +1,20 @@
|
|||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from courseDlg import *
|
||||
|
||||
class AddCourseDlg(CourseDlg):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(AddCourseDlg, self).__init__(parent)
|
||||
|
||||
buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
|
||||
|
||||
self.layout.addWidget(buttonBox, 3, 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 course"))
|
||||
|
Binary file not shown.
|
@ -0,0 +1,27 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
from readingDlg import *
|
||||
|
||||
class AddReadingDlg(ReadingDlg):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(AddReadingDlg, 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 reading"))
|
Binary file not shown.
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
from scheduleDlg import *
|
||||
|
||||
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"))
|
||||
|
Binary file not shown.
|
@ -0,0 +1,185 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from main import *
|
||||
|
||||
class AssignmentTab(QWidget):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(AssignmentTab, self).__init__(parent)
|
||||
|
||||
self.assignmentsTable = QTableWidget()
|
||||
|
||||
self.addAssignmentButton = QPushButton("Add assignment")
|
||||
self.editAssignmentButton = QPushButton("Edit assignment")
|
||||
self.assignmentDoneButton = QPushButton("Done")
|
||||
|
||||
|
||||
## self.assignments = assignmentdata.AssignmentContainer()
|
||||
## self.assignmentTable = QTableWidget()
|
||||
## self.setCentralWidget(self.assignmentTable)
|
||||
##
|
||||
vlayout = QVBoxLayout()
|
||||
hlayout = QHBoxLayout()
|
||||
|
||||
hlayout.addWidget(self.addAssignmentButton)
|
||||
hlayout.addWidget(self.editAssignmentButton)
|
||||
hlayout.addWidget(self.assignmentDoneButton)
|
||||
|
||||
vlayout.addWidget(self.assignmentsTable)
|
||||
vlayout.addLayout(hlayout)
|
||||
|
||||
self.setLayout(vlayout)
|
||||
|
||||
## def updateTable(self, current=None):
|
||||
##
|
||||
## self.assignmentTable.clear()
|
||||
## self.assignmentTable.setRowCount(len(self.assignments))
|
||||
## self.assignmentTable.setColumnCount(7)
|
||||
## self.assignmentTable.setHorizontalHeaderLabels(["Date", "Course", "Description", "Available" , "Begun", "Finished", "Delivered"])
|
||||
## self.assignmentTable.setAlternatingRowColors(True)
|
||||
## self.assignmentTable.setEditTriggers(QTableWidget.NoEditTriggers)
|
||||
## self.assignmentTable.setSelectionBehavior(QTableWidget.SelectRows)
|
||||
## self.assignmentTable.setSelectionMode(QTableWidget.SingleSelection)
|
||||
## selected = None
|
||||
|
||||
|
||||
class AssignmentDlg(QDialog):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(AssignmentDlg, self).__init__(parent)
|
||||
|
||||
dateLabel = QLabel(self.trUtf8("&Date"))
|
||||
courseLabel = QLabel(self.trUtf8("&Course"))
|
||||
descriptionLabel = QLabel(self.trUtf8("De&scription"))
|
||||
availableLabel = QLabel(self.trUtf8("&Available"))
|
||||
begunLabel = QLabel(self.trUtf8("&Begun"))
|
||||
finishedLabel = QLabel(self.trUtf8("&Finished"))
|
||||
deliveredLabel = QLabel(self.trUtf8("De&livered"))
|
||||
|
||||
dateEdit = QLineEdit()
|
||||
courseEdit = QComboBox()
|
||||
courseEdit.addItems(MainWindow.getCoursesString())
|
||||
descriptionEdit = QLineEdit()
|
||||
availableEdit = QCheckBox()
|
||||
begunEdit = QCheckBox()
|
||||
finishedEdit = QCheckBox()
|
||||
deliveredEdit = QCheckBox()
|
||||
|
||||
dateLabel.setBuddy(dateEdit)
|
||||
courseLabel.setBuddy(courseEdit)
|
||||
descriptionLabel.setBuddy(descriptionEdit)
|
||||
availableLabel.setBuddy(availableEdit)
|
||||
begunLabel.setBuddy(begunEdit)
|
||||
finishedLabel.setBuddy(finishedEdit)
|
||||
deliveredLabel.setBuddy(deliveredEdit)
|
||||
|
||||
self.layout = QGridLayout()
|
||||
self.layout.addWidget(dateLabel, 0, 0)
|
||||
self.layout.addWidget(courseLabel, 1, 0)
|
||||
self.layout.addWidget(descriptionLabel, 2, 0)
|
||||
self.layout.addWidget(availableLabel, 3, 0)
|
||||
self.layout.addWidget(begunLabel, 4, 0)
|
||||
self.layout.addWidget(finishedLabel, 5, 0)
|
||||
self.layout.addWidget(deliveredLabel, 6, 0)
|
||||
self.layout.addWidget(dateEdit, 0, 1)
|
||||
self.layout.addWidget(courseEdit, 1, 1)
|
||||
self.layout.addWidget(descriptionEdit, 2, 1)
|
||||
self.layout.addWidget(availableEdit, 3, 1)
|
||||
self.layout.addWidget(begunEdit, 4, 1)
|
||||
self.layout.addWidget(finishedEdit, 5, 1)
|
||||
self.layout.addWidget(deliveredEdit, 6, 1)
|
||||
self.setLayout(self.layout)
|
||||
|
||||
|
||||
class AddAssignmentDlg(AssignmentDlg):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(AddAssignmentDlg, self).__init__(parent)
|
||||
|
||||
buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
|
||||
|
||||
self.layout.addWidget(buttonBox, 7, 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"))
|
||||
|
||||
|
||||
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, 7, 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"))
|
||||
|
||||
def apply(self):
|
||||
pass
|
||||
|
||||
|
||||
class AssignmentModel():
|
||||
|
||||
date = ""
|
||||
course = ""
|
||||
description = ""
|
||||
available = False
|
||||
begun = False
|
||||
finished = False
|
||||
delivered = False
|
||||
|
||||
def setDate(self, date):
|
||||
self.date = date
|
||||
|
||||
def getDate(self):
|
||||
return self.date
|
||||
|
||||
def setCourse(self, course):
|
||||
self.course = course
|
||||
|
||||
def getCourse(self):
|
||||
return self.course
|
||||
|
||||
def setDescription(self, description):
|
||||
self.description = description
|
||||
|
||||
def getDescription(self):
|
||||
return self.description
|
||||
|
||||
def setAvailable(self, available):
|
||||
self.available = available
|
||||
|
||||
def getAvailable(self):
|
||||
return self.available
|
||||
|
||||
def setBegun(self, begun):
|
||||
self.begun = begun
|
||||
|
||||
def getBegun(self):
|
||||
return self.begun
|
||||
|
||||
def setFinished(self, finished):
|
||||
self.finished = finished
|
||||
|
||||
def getFinished(self):
|
||||
return self.finished
|
||||
|
||||
def setDelivered(self, delivered):
|
||||
self.delivered = delivered
|
||||
|
||||
def getDelivered(self):
|
||||
return self.delivered
|
||||
|
Binary file not shown.
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
from readingDlg import *
|
||||
from actions import *
|
||||
|
||||
class AssignmentDlg(QDialog):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(AssignmentDlg, self).__init__(parent)
|
||||
|
||||
dateLabel = QLabel(self.trUtf8("&Date"))
|
||||
courseLabel = QLabel(self.trUtf8("&Course"))
|
||||
descriptionLabel = QLabel(self.trUtf8("De&scription"))
|
||||
availableLabel = QLabel(self.trUtf8("&Available"))
|
||||
begunLabel = QLabel(self.trUtf8("&Begun"))
|
||||
finishedLabel = QLabel(self.trUtf8("&Finished"))
|
||||
deliveredLabel = QLabel(self.trUtf8("De&livered"))
|
||||
|
||||
dateEdit = QLineEdit()
|
||||
courseEdit = QLineEdit()
|
||||
descriptionEdit = QLineEdit()
|
||||
availableEdit = QCheckBox()
|
||||
begunEdit = QCheckBox()
|
||||
finishedEdit = QCheckBox()
|
||||
deliveredEdit = QCheckBox()
|
||||
|
||||
dateLabel.setBuddy(dateEdit)
|
||||
courseLabel.setBuddy(courseEdit)
|
||||
descriptionLabel.setBuddy(descriptionEdit)
|
||||
availableLabel.setBuddy(availableEdit)
|
||||
begunLabel.setBuddy(begunEdit)
|
||||
finishedLabel.setBuddy(finishedEdit)
|
||||
deliveredLabel.setBuddy(deliveredEdit)
|
||||
|
||||
self.layout = QGridLayout()
|
||||
self.layout.addWidget(dateLabel, 0, 0)
|
||||
self.layout.addWidget(courseLabel, 1, 0)
|
||||
self.layout.addWidget(descriptionLabel, 2, 0)
|
||||
self.layout.addWidget(availableLabel, 3, 0)
|
||||
self.layout.addWidget(begunLabel, 4, 0)
|
||||
self.layout.addWidget(finishedLabel, 5, 0)
|
||||
self.layout.addWidget(deliveredLabel, 6, 0)
|
||||
self.layout.addWidget(dateEdit, 0, 1)
|
||||
self.layout.addWidget(courseEdit, 1, 1)
|
||||
self.layout.addWidget(descriptionEdit, 2, 1)
|
||||
self.layout.addWidget(availableEdit, 3, 1)
|
||||
self.layout.addWidget(begunEdit, 4, 1)
|
||||
self.layout.addWidget(finishedEdit, 5, 1)
|
||||
self.layout.addWidget(deliveredEdit, 6, 1)
|
||||
self.setLayout(self.layout)
|
||||
|
Binary file not shown.
|
@ -0,0 +1,66 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
from scheduleDlg import *
|
||||
|
||||
class AssignmentModel():
|
||||
|
||||
date = ""
|
||||
course = ""
|
||||
description = ""
|
||||
available = False
|
||||
begun = False
|
||||
finished = False
|
||||
delivered = False
|
||||
|
||||
def setDate(self, date):
|
||||
self.date = date
|
||||
|
||||
def getDate(self):
|
||||
return self.date
|
||||
|
||||
def setCourse(self, course):
|
||||
self.course = course
|
||||
|
||||
def getCourse(self):
|
||||
return self.course
|
||||
|
||||
def setDescription(self, description):
|
||||
self.description = description
|
||||
|
||||
def getDescription(self):
|
||||
return self.description
|
||||
|
||||
def setAvailable(self, available):
|
||||
self.available = available
|
||||
|
||||
def getAvailable(self):
|
||||
return self.available
|
||||
|
||||
def setBegun(self, begun):
|
||||
self.begun = begun
|
||||
|
||||
def getBegun(self):
|
||||
return self.begun
|
||||
|
||||
def setFinished(self, finished):
|
||||
self.finished = finished
|
||||
|
||||
def getFinished(self):
|
||||
return self.finished
|
||||
|
||||
def setDelivered(self, delivered):
|
||||
self.delivered = delivered
|
||||
|
||||
def getDelivered(self):
|
||||
return self.delivered
|
||||
|
Binary file not shown.
|
@ -0,0 +1,67 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
from db import *
|
||||
|
||||
class BookDlg(QDialog):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(BookDlg, self).__init__(parent)
|
||||
|
||||
titleLabel = QLabel(self.trUtf8("&Title"))
|
||||
authorLabel = QLabel(self.trUtf8("&Author"))
|
||||
editionLabel = QLabel(self.trUtf8("&Edition"))
|
||||
isbnLabel = QLabel(self.trUtf8("&ISBN"))
|
||||
courseLabel = QLabel(self.trUtf8("&Course"))
|
||||
|
||||
titleEdit = QLineEdit()
|
||||
authorEdit = QLineEdit()
|
||||
editionEdit = QSpinBox()
|
||||
editionEdit.setRange(1, 50)
|
||||
isbnEdit = QLineEdit()
|
||||
courseEdit = QComboBox()
|
||||
|
||||
titleLabel.setBuddy(titleEdit)
|
||||
authorLabel.setBuddy(authorEdit)
|
||||
editionLabel.setBuddy(editionEdit)
|
||||
isbnLabel.setBuddy(isbnEdit)
|
||||
courseLabel.setBuddy(courseEdit)
|
||||
|
||||
self.layout = QGridLayout()
|
||||
self.layout.addWidget(titleLabel, 0, 0)
|
||||
self.layout.addWidget(authorLabel, 1, 0)
|
||||
self.layout.addWidget(editionLabel, 2, 0)
|
||||
self.layout.addWidget(isbnLabel, 3, 0)
|
||||
self.layout.addWidget(courseLabel, 4, 0)
|
||||
self.layout.addWidget(titleEdit, 0, 1)
|
||||
self.layout.addWidget(authorEdit, 1, 1)
|
||||
self.layout.addWidget(editionEdit, 2, 1)
|
||||
self.layout.addWidget(isbnEdit, 3, 1)
|
||||
self.layout.addWidget(courseEdit, 4, 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, 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 book"))
|
||||
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
##from db import *
|
||||
|
||||
class BookDlg(QDialog):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(BookDlg, self).__init__(parent)
|
||||
|
||||
titleLabel = QLabel(self.trUtf8("&Title"))
|
||||
authorLabel = QLabel(self.trUtf8("&Author"))
|
||||
editionLabel = QLabel(self.trUtf8("&Edition"))
|
||||
isbnLabel = QLabel(self.trUtf8("&ISBN"))
|
||||
courseLabel = QLabel(self.trUtf8("&Course"))
|
||||
|
||||
titleEdit = QLineEdit()
|
||||
authorEdit = QLineEdit()
|
||||
editionEdit = QSpinBox()
|
||||
editionEdit.setRange(1, 50)
|
||||
isbnEdit = QLineEdit()
|
||||
courseEdit = QComboBox()
|
||||
|
||||
titleLabel.setBuddy(titleEdit)
|
||||
authorLabel.setBuddy(authorEdit)
|
||||
editionLabel.setBuddy(editionEdit)
|
||||
isbnLabel.setBuddy(isbnEdit)
|
||||
courseLabel.setBuddy(courseEdit)
|
||||
|
||||
self.layout = QGridLayout()
|
||||
self.layout.addWidget(titleLabel, 0, 0)
|
||||
self.layout.addWidget(authorLabel, 1, 0)
|
||||
self.layout.addWidget(editionLabel, 2, 0)
|
||||
self.layout.addWidget(isbnLabel, 3, 0)
|
||||
self.layout.addWidget(courseLabel, 4, 0)
|
||||
self.layout.addWidget(titleEdit, 0, 1)
|
||||
self.layout.addWidget(authorEdit, 1, 1)
|
||||
self.layout.addWidget(editionEdit, 2, 1)
|
||||
self.layout.addWidget(isbnEdit, 3, 1)
|
||||
self.layout.addWidget(courseEdit, 4, 1)
|
||||
self.setLayout(self.layout)
|
Binary file not shown.
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
|
||||
class CalendarTab(QWidget):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(CalendarTab, self).__init__(parent)
|
||||
|
||||
calendar = QCalendarWidget()
|
||||
|
||||
layout = QVBoxLayout()
|
||||
layout.addWidget(calendar)
|
||||
self.setLayout(layout)
|
||||
|
Binary file not shown.
|
@ -0,0 +1,104 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
#from db import *
|
||||
import db
|
||||
|
||||
class CourseDlg(QDialog):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(CourseDlg, self).__init__(parent)
|
||||
|
||||
self.codeLabel = QLabel(self.trUtf8("&Code"))
|
||||
self.titleLabel = QLabel(self.trUtf8("&Title"))
|
||||
self.shortLabel = QLabel(self.trUtf8("&Short form"))
|
||||
|
||||
self.codeEdit = QLineEdit()
|
||||
self.titleEdit = QLineEdit()
|
||||
self.shortEdit = QLineEdit()
|
||||
|
||||
self.codeLabel.setBuddy(self.codeEdit)
|
||||
self.titleLabel.setBuddy(self.titleEdit)
|
||||
self.shortLabel.setBuddy(self.shortEdit)
|
||||
|
||||
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.codeEdit, 0, 1)
|
||||
self.layout.addWidget(self.titleEdit, 1, 1)
|
||||
self.layout.addWidget(self.shortEdit, 2, 1)
|
||||
self.setLayout(self.layout)
|
||||
|
||||
|
||||
class AddCourseDlg(CourseDlg):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(AddCourseDlg, self).__init__(parent)
|
||||
|
||||
buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
|
||||
|
||||
self.layout.addWidget(buttonBox, 3, 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 course"))
|
||||
|
||||
def accept(self):
|
||||
courseCode = unicode(self.codeEdit.text())
|
||||
courseTitle = unicode(self.titleEdit.text())
|
||||
courseShort = unicode(self.shortEdit.text())
|
||||
print 'code', courseCode
|
||||
print 'title', courseTitle
|
||||
print 'short', courseShort
|
||||
course = CourseModel(courseCode, courseTitle, courseShort)
|
||||
self.close()
|
||||
db.addNewCourse(courseCode, courseTitle, courseShort)
|
||||
|
||||
|
||||
class CourseModel():
|
||||
|
||||
code = ""
|
||||
title = ""
|
||||
short = ""
|
||||
full = ""
|
||||
|
||||
def __init__(self, code, title, short):
|
||||
self.code = code
|
||||
self.title = title
|
||||
self.short = short
|
||||
self.setFull(code, title)
|
||||
|
||||
def setCode(self, code):
|
||||
self.code = code
|
||||
|
||||
def getCode(self):
|
||||
return self.code
|
||||
|
||||
def setTitle(self, title):
|
||||
self.title = title
|
||||
|
||||
def getTitle(self):
|
||||
return self.title
|
||||
|
||||
def setShort(self, short):
|
||||
self.short = short
|
||||
|
||||
def getShort(self):
|
||||
return self.short
|
||||
|
||||
def setFull(self, code, title):
|
||||
self.full = code + ' ' + title
|
||||
|
||||
def getFull(self):
|
||||
return self.full
|
Binary file not shown.
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
##from db import *
|
||||
|
||||
class CourseDlg(QDialog):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(CourseDlg, self).__init__(parent)
|
||||
|
||||
codeLabel = QLabel(self.trUtf8("&Code"))
|
||||
titleLabel = QLabel(self.trUtf8("&Title"))
|
||||
shortLabel = QLabel(self.trUtf8("&Short form"))
|
||||
|
||||
codeEdit = QLineEdit()
|
||||
titleEdit = QLineEdit()
|
||||
shortEdit = QLineEdit()
|
||||
|
||||
codeLabel.setBuddy(codeEdit)
|
||||
titleLabel.setBuddy(titleEdit)
|
||||
shortLabel.setBuddy(shortEdit)
|
||||
|
||||
self.layout = QGridLayout()
|
||||
self.layout.addWidget(codeLabel, 0, 0)
|
||||
self.layout.addWidget(titleLabel, 1, 0)
|
||||
self.layout.addWidget(shortLabel, 2, 0)
|
||||
self.layout.addWidget(codeEdit, 0, 1)
|
||||
self.layout.addWidget(titleEdit, 1, 1)
|
||||
self.layout.addWidget(shortEdit, 2, 1)
|
||||
self.setLayout(self.layout)
|
Binary file not shown.
|
@ -0,0 +1,170 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from pysqlite2 import dbapi2 as sqlite
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
#from PyQt4.QtSql import *
|
||||
#from main import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
from book import *
|
||||
from course import *
|
||||
|
||||
def initDB():
|
||||
conn = sqlite.connect('egon.db')
|
||||
curs = conn.cursor()
|
||||
return curs, conn
|
||||
|
||||
def initNewDB():
|
||||
cursor, conn = initDB()
|
||||
initAssignmentDB(cursor)
|
||||
initReadingDB(cursor)
|
||||
initScheduleDB(cursor)
|
||||
initBookDB(cursor)
|
||||
initCourseDB(cursor)
|
||||
initAssignmentInCourse(cursor)
|
||||
initReadingInCourse(cursor)
|
||||
initLessonInCourse(cursor)
|
||||
initCourseUsesBook(cursor)
|
||||
exitDB(conn)
|
||||
|
||||
def initAssignmentDB(cursor):
|
||||
cursor.execute('''
|
||||
CREATE TABLE Assignment (
|
||||
aid INTEGER PRIMARY KEY,
|
||||
date TEXT,
|
||||
description TEXT,
|
||||
available BOOLEAN,
|
||||
begun BOOLEAN,
|
||||
finished BOOLEAN,
|
||||
delivered BOOLEAN
|
||||
)
|
||||
''')
|
||||
|
||||
def initReadingDB(cursor):
|
||||
cursor.execute('''
|
||||
CREATE TABLE Reading (
|
||||
rid INTEGER PRIMARY KEY,
|
||||
week TEXT,
|
||||
chapter TEXT,
|
||||
pages TEXT
|
||||
)
|
||||
''')
|
||||
def initScheduleDB(cursor):
|
||||
cursor.execute('''
|
||||
CREATE TABLE Lesson (
|
||||
lid INTEGER PRIMARY KEY,
|
||||
day TEXT,
|
||||
fromtime TEXT,
|
||||
totime TEXT,
|
||||
type TEXT,
|
||||
room TEXT
|
||||
)
|
||||
''')
|
||||
|
||||
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,
|
||||
short TEXT
|
||||
)
|
||||
''')
|
||||
|
||||
def initAssignmentInCourse(cursor):
|
||||
cursor.execute('''
|
||||
CREATE TABLE assignmentInCourse (
|
||||
assignment INTEGER,
|
||||
course INTEGER
|
||||
)
|
||||
''')
|
||||
|
||||
def initReadingInCourse(cursor):
|
||||
cursor.execute('''
|
||||
CREATE TABLE readingInCourse (
|
||||
reading INTEGER,
|
||||
course INTEGER
|
||||
)
|
||||
''')
|
||||
|
||||
def initLessonInCourse(cursor):
|
||||
cursor.execute('''
|
||||
CREATE TABLE lessonInCourse (
|
||||
lesson INTEGER,
|
||||
course INTEGER
|
||||
)
|
||||
''')
|
||||
|
||||
def initCourseUsesBook(cursor):
|
||||
cursor.execute('''
|
||||
CREATE TABLE courseUsesBook (
|
||||
course INTEGER,
|
||||
book TEXT
|
||||
)
|
||||
''')
|
||||
|
||||
def addNewBook(isbn, title, author, edition, course):
|
||||
cursor, conn = initDB()
|
||||
|
||||
bookQuery = '''
|
||||
INSERT INTO Book
|
||||
VALUES (%s, %s, %s, %i)
|
||||
''' % (isbn, title, author, edition)
|
||||
courseUsesBookQuery = '''
|
||||
INSERT INTO courseUsesBook
|
||||
VALUES (%i, %s)
|
||||
''' % (course, isbn)
|
||||
|
||||
cursor.execute(bookQuery)
|
||||
cursor.execute(courseUsesBookQuery)
|
||||
|
||||
exitDB(conn)
|
||||
|
||||
def addNewCourse(code, title, short):
|
||||
cursor, conn = initDB()
|
||||
|
||||
courseQuery = '''
|
||||
INSERT INTO Course
|
||||
VALUES (%s, %s, %s)
|
||||
''' % (code, title, short)
|
||||
|
||||
cursor.execute(courseQuery)
|
||||
|
||||
exitDB(conn)
|
||||
|
||||
def getCourses():
|
||||
cursor, conn = initDB()
|
||||
|
||||
courseQuery = '''
|
||||
SELECT *
|
||||
FROM Course
|
||||
'''
|
||||
|
||||
cursor.execute(courseQuery)
|
||||
|
||||
courses = []
|
||||
for row in cursor.fetchall():
|
||||
courses.append(CourseModel(row[0], row[1], row[2]))
|
||||
|
||||
def exitDB(conn):
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
|
||||
#initNewDB()
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from assignmentDlg import *
|
||||
|
||||
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, 7, 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"))
|
||||
|
||||
def apply(self):
|
||||
pass
|
Binary file not shown.
|
@ -0,0 +1,32 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
from readingDlg import *
|
||||
|
||||
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, 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 reading"))
|
||||
|
||||
def apply(self):
|
||||
pass
|
||||
|
Binary file not shown.
|
@ -0,0 +1,31 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
from scheduleDlg import *
|
||||
|
||||
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
|
||||
|
Binary file not shown.
218
egon.py
218
egon.py
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
# Copyright 2008, Tiril Anette Langfeldt Rødland
|
||||
# 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/>.
|
||||
|
||||
|
@ -18,7 +18,7 @@ from pysqlite2 import dbapi2 as sqlite
|
|||
from qrc_resources import *
|
||||
|
||||
|
||||
__version__ = "1.1.0"
|
||||
__version__ = "1.0.2"
|
||||
|
||||
|
||||
main = None
|
||||
|
@ -39,7 +39,7 @@ class MainWindow(QMainWindow):
|
|||
super(MainWindow, self).__init__(parent)
|
||||
|
||||
# The program name
|
||||
self.title = self.trUtf8("Egon")
|
||||
self.title = "Egon"
|
||||
|
||||
# The days
|
||||
self.days = [self.trUtf8("Monday"), self.trUtf8("Tuesday"), self.trUtf8("Wednesday"), self.trUtf8("Thursday"), self.trUtf8("Friday")]
|
||||
|
@ -51,9 +51,9 @@ class MainWindow(QMainWindow):
|
|||
|
||||
# Set the tabs in the middle
|
||||
self.tabs = QTabWidget()
|
||||
self.tabs.addTab(self.assignment, self.trUtf8("&Assignment"))
|
||||
self.tabs.addTab(self.reading, self.trUtf8("&Reading List"))
|
||||
self.tabs.addTab(self.schedule, self.trUtf8("&Schedule"))
|
||||
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)
|
||||
|
@ -61,7 +61,7 @@ class MainWindow(QMainWindow):
|
|||
# The calendar
|
||||
self.calendarFrame = QFrame()
|
||||
self.calendarFrame.setFrameStyle(QFrame.StyledPanel|QFrame.Sunken)
|
||||
self.calendarDockWidget = QDockWidget(self.trUtf8("Calendar"), self)
|
||||
self.calendarDockWidget = QDockWidget("Calendar", self)
|
||||
self.calendarDockWidget.setVisible(False)
|
||||
self.calendarDockWidget.setObjectName("CalendarDockWidget")
|
||||
self.calendarDockWidget.setAllowedAreas(Qt.LeftDockWidgetArea|Qt.RightDockWidgetArea|Qt.BottomDockWidgetArea)
|
||||
|
@ -84,21 +84,21 @@ class MainWindow(QMainWindow):
|
|||
self.load(semester)
|
||||
|
||||
# Actions
|
||||
fileNewAction = self.createAction(self.trUtf8("&New"), self.fileNew, QKeySequence.New, "filenew", self.trUtf8("Create a new semester plan"))
|
||||
fileOpenAction = self.createAction(self.trUtf8("&Open"), self.fileOpen, QKeySequence.Open, "fileopen", self.trUtf8("Open an existing semester plan"))
|
||||
fileQuitAction = self.createAction(self.trUtf8("&Quit"), self.close, "Ctrl+Q", "filequit", self.trUtf8("Quit program"))
|
||||
editAddCourse = self.createAction(self.trUtf8("Add &course"), self.addCourse, "Ctrl+C", None, self.trUtf8("Add a new course"))
|
||||
editAddBook = self.createAction(self.trUtf8("Add &book"), self.addBook, "Ctrl+B", None, self.trUtf8("Add a new book"))
|
||||
editAddAssignment = self.createAction(self.trUtf8("Add &assignment"), self.addAssignment, "Ctrl+A", None, self.trUtf8("Add a new assignment"))
|
||||
editAddReading = self.createAction(self.trUtf8("Add &reading"), self.addReading, "Ctrl+R", None, self.trUtf8("Add a new reading"))
|
||||
editAddLesson = self.createAction(self.trUtf8("Add &lesson"), self.addLesson, "Ctrl+L", None, self.trUtf8("Add a new lesson"))
|
||||
editShowCalendar = self.createAction(self.trUtf8("Cal&endar"), self.showCalendar, "Ctrl+E", None, self.trUtf8("Show the calendar"))
|
||||
helpAboutScheduler = self.createAction(self.trUtf8("&About Egon"))
|
||||
|
||||
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")
|
||||
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")
|
||||
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")
|
||||
editShowCalendar = self.createAction("Cal&endar", self.showCalendar, "Ctrl+E", None, "Show the calendar")
|
||||
helpAboutScheduler = self.createAction("&About %s" % self.title)
|
||||
|
||||
# Menus
|
||||
self.fileMenu = self.menuBar().addMenu(self.trUtf8("&File"))
|
||||
self.editMenu = self.menuBar().addMenu(self.trUtf8("&Edit"))
|
||||
self.helpMenu = self.menuBar().addMenu(self.trUtf8("&Help"))
|
||||
self.fileMenu = self.menuBar().addMenu("&File")
|
||||
self.editMenu = self.menuBar().addMenu("&Edit")
|
||||
self.helpMenu = self.menuBar().addMenu("&Help")
|
||||
|
||||
# Add actions to the menus
|
||||
self.addActions(self.fileMenu, (fileNewAction, fileOpenAction, None, fileQuitAction))
|
||||
|
@ -115,7 +115,7 @@ class MainWindow(QMainWindow):
|
|||
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.statusAssignmentBox, SIGNAL("currentIndexChanged(QString)"), self.statusAssignment)
|
||||
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)
|
||||
|
@ -123,10 +123,10 @@ class MainWindow(QMainWindow):
|
|||
self.connect(self.schedule.deleteScheduleButton, SIGNAL("pressed()"), self.deleteLesson)
|
||||
|
||||
# The toolbars
|
||||
fileToolbar = self.addToolBar(self.trUtf8("File"))
|
||||
fileToolbar = self.addToolBar("File")
|
||||
fileToolbar.setObjectName("FileToolBar")
|
||||
self.addActions(fileToolbar, (fileNewAction, fileOpenAction, None, fileQuitAction))
|
||||
editToolbar = self.addToolBar(self.trUtf8("Edit"))
|
||||
editToolbar = self.addToolBar("Edit")
|
||||
editToolbar.setObjectName("EditToolBar")
|
||||
self.addActions(editToolbar, (editAddCourse, editAddBook, None, editShowCalendar))
|
||||
|
||||
|
@ -189,7 +189,7 @@ class MainWindow(QMainWindow):
|
|||
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||
|
||||
## Update the assignment's completion level to the specified level
|
||||
def statusAssignment(self, completionLevel):
|
||||
def completeAssignment(self, completionLevel):
|
||||
course, number = self.getCourseAndNumber()
|
||||
table, row = self.getAssignmentTableAndRow()
|
||||
updateAssignmentCompletion(course, number, completionLevel)
|
||||
|
@ -223,10 +223,10 @@ class MainWindow(QMainWindow):
|
|||
|
||||
## Delete the reading from the database and the table
|
||||
def deleteReading(self):
|
||||
week, course, book, chapter = self.getWeekCourseBookAndChapter()
|
||||
week, course, book = self.getWeekCourseAndBook()
|
||||
table, row = self.getReadingTableAndRow()
|
||||
global semester
|
||||
removeReadingFromDB(week, course, book, chapter)
|
||||
removeReadingFromDB(week, course, book)
|
||||
table.removeRow(row)
|
||||
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||
|
||||
|
@ -238,7 +238,7 @@ class MainWindow(QMainWindow):
|
|||
item = QTableWidgetItem(self.trUtf8("Done"))
|
||||
item.setBackground(QBrush(Qt.green, Qt.SolidPattern))
|
||||
else:
|
||||
done = True
|
||||
done = False
|
||||
item = QTableWidgetItem(self.trUtf8("Not done"))
|
||||
item.setBackground(QBrush(Qt.red, Qt.SolidPattern))
|
||||
table.setItem(row, 6, item)
|
||||
|
@ -249,9 +249,7 @@ class MainWindow(QMainWindow):
|
|||
bookTitle = table.item(row, 2).text()
|
||||
book = getBookWithTitleFromDB(bookTitle)
|
||||
bookIsbn = book.getIsbn()
|
||||
chapter = table.item(row, 3).text()
|
||||
updateReadingDone(week, courseCode, bookIsbn, chapter, done)
|
||||
print week, courseCode, bookIsbn, chapter, done
|
||||
updateReadingDone(week, courseCode, bookIsbn, True)
|
||||
|
||||
## Return the reading table and its current row
|
||||
def getReadingTableAndRow(self):
|
||||
|
@ -260,24 +258,22 @@ class MainWindow(QMainWindow):
|
|||
return table, row
|
||||
|
||||
## Return the week, course and book of the current reading
|
||||
def getWeekCourseBookAndChapter(self):
|
||||
def getWeekCourseAndBook(self):
|
||||
table, row = self.getReadingTableAndRow()
|
||||
weekItem = table.item(row, 0)
|
||||
courseItem = table.item(row, 1)
|
||||
bookItem = table.item(row, 2)
|
||||
chapterItem = table.item(row, 3)
|
||||
week = (weekItem.text().toInt())[0]
|
||||
courseFull = courseItem.text()
|
||||
courseCode = getCourseCode(courseFull)
|
||||
book = getBookWithTitleFromDB(bookItem.text())
|
||||
chapter = chapterItem.text()
|
||||
return week, courseCode, book.getIsbn(), chapter
|
||||
return week, courseCode, book.getIsbn()
|
||||
|
||||
# Schedule
|
||||
|
||||
## Open the Add Lesson dialog
|
||||
def addLesson(self):
|
||||
self.sdlg = ScheduleDlg()
|
||||
def addLesson(self):
|
||||
self.sdlg = ScheduleDlg()
|
||||
self.sdlg.show()
|
||||
|
||||
## Delete the lesson from the database and the table
|
||||
|
@ -337,15 +333,15 @@ class MainWindow(QMainWindow):
|
|||
|
||||
# General
|
||||
|
||||
## Make and open the About dialo
|
||||
## Make and open the About dialog
|
||||
def helpAbout(self):
|
||||
QMessageBox.about(self, "About %s" % self.title, """
|
||||
QMessageBox.about(self, "About %s" % self.title, u"""
|
||||
<b>%s</b> v %s
|
||||
<p>Copyright © 2008 Tiril Anette Langfeldt Roedland. No rights reserved.
|
||||
<p>Copyright © 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 Roedland, tirilane@pvv.ntnu.no
|
||||
<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()))
|
||||
|
||||
## Updates the File menu
|
||||
|
@ -402,7 +398,7 @@ class NewSemesterDlg(QDialog):
|
|||
super(NewSemesterDlg, self).__init__(parent)
|
||||
|
||||
# Labels
|
||||
self.termLabel = QLabel(self.trUtf8("Semester"))
|
||||
self.termLabel = QLabel(self.trUtf8("Term"))
|
||||
self.yearLabel = QLabel(self.trUtf8("Year"))
|
||||
|
||||
# Widgets
|
||||
|
@ -552,13 +548,13 @@ class AssignmentTab(QWidget):
|
|||
## Initialize the Assignment tab
|
||||
def __init__(self, parent=None):
|
||||
super(AssignmentTab, self).__init__(parent)
|
||||
|
||||
|
||||
# Widgets
|
||||
self.addAssignmentButton = QPushButton("Add assignment")
|
||||
self.statusAssignmentBox = QComboBox()
|
||||
self.completeAssignmentBox = QComboBox()
|
||||
self.deleteAssignmentButton = QPushButton("Delete assignment")
|
||||
statusTypes = [self.trUtf8("Not available"), self.trUtf8("Available"), self.trUtf8("Begun"), self.trUtf8("Finished"), self.trUtf8("Delivered"), self.trUtf8("Approved"), self.trUtf8("Not approved")]
|
||||
self.statusAssignmentBox.addItems(statusTypes)
|
||||
completeTypes = [self.trUtf8("Not available"), self.trUtf8("Available"), self.trUtf8("Begun"), self.trUtf8("Finished"), self.trUtf8("Delivered"), self.trUtf8("Approved"), self.trUtf8("Not approved")]
|
||||
self.completeAssignmentBox.addItems(completeTypes)
|
||||
|
||||
# Make the table
|
||||
self.makeTable()
|
||||
|
@ -568,7 +564,7 @@ class AssignmentTab(QWidget):
|
|||
self.hlayout = QHBoxLayout()
|
||||
self.hlayout.addWidget(self.addAssignmentButton)
|
||||
self.hlayout.addWidget(self.deleteAssignmentButton)
|
||||
self.hlayout.addWidget(self.statusAssignmentBox)
|
||||
self.hlayout.addWidget(self.completeAssignmentBox)
|
||||
self.hlayout.addStretch()
|
||||
self.vlayout.addWidget(self.assignmentTable)
|
||||
self.vlayout.addLayout(self.hlayout)
|
||||
|
@ -578,14 +574,14 @@ class AssignmentTab(QWidget):
|
|||
def makeTable(self, current=None):
|
||||
self.assignmentTable = QTableWidget(0, 5, self)
|
||||
self.assignmentTable.clear()
|
||||
|
||||
self.assignmentHeaderList = QStringList()
|
||||
|
||||
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("Status"))
|
||||
|
||||
self.assignmentHeaderList.append(self.trUtf8("Complete"))
|
||||
|
||||
self.assignmentTable.setHorizontalHeaderLabels(self.assignmentHeaderList)
|
||||
self.assignmentTable.setAlternatingRowColors(True)
|
||||
self.assignmentTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
|
||||
|
@ -611,43 +607,43 @@ class AssignmentTab(QWidget):
|
|||
if assignment == None:
|
||||
assignment = self.assignments[row]
|
||||
|
||||
status = QString(assignment.getStatus())
|
||||
brush = self.makeBrush(status)
|
||||
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())))
|
||||
|
||||
statusItem = QTableWidgetItem(status)
|
||||
statusItem.setBackground(brush)
|
||||
self.assignmentTable.setItem(row, 4, statusItem)
|
||||
completeItem = QTableWidgetItem(complete)
|
||||
completeItem.setBackground(brush)
|
||||
self.assignmentTable.setItem(row, 4, completeItem)
|
||||
|
||||
## Set the right brush and color for the assignment, depending on level of completion
|
||||
def makeBrush(self, status):
|
||||
def makeBrush(self, complete):
|
||||
brush = QBrush(Qt.NoBrush)
|
||||
if status.compare(QString(self.trUtf8("Available"))) == 0:
|
||||
if complete.compare(QString(self.trUtf8("Available"))) == 0:
|
||||
brush.setStyle(Qt.Dense7Pattern)
|
||||
brush.setColor(QColor(Qt.cyan))
|
||||
elif status.compare(QString(self.trUtf8("Begun"))) == 0:
|
||||
elif complete.compare(QString(self.trUtf8("Begun"))) == 0:
|
||||
brush.setStyle(Qt.Dense5Pattern)
|
||||
brush.setColor(QColor(Qt.cyan))
|
||||
elif status.compare(QString(self.trUtf8("Finished"))) == 0:
|
||||
elif complete.compare(QString(self.trUtf8("Finished"))) == 0:
|
||||
brush.setStyle(Qt.Dense3Pattern)
|
||||
brush.setColor(QColor(Qt.cyan))
|
||||
elif status.compare(QString(self.trUtf8("Delivered"))) == 0:
|
||||
elif complete.compare(QString(self.trUtf8("Delivered"))) == 0:
|
||||
brush.setStyle(Qt.Dense1Pattern)
|
||||
brush.setColor(QColor(Qt.cyan))
|
||||
elif status.compare(QString(self.trUtf8("Approved"))) == 0:
|
||||
elif complete.compare(QString(self.trUtf8("Approved"))) == 0:
|
||||
brush.setStyle(Qt.SolidPattern)
|
||||
brush.setColor(QColor(Qt.green))
|
||||
elif status.compare(QString(self.trUtf8("Not approved"))) == 0:
|
||||
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
|
||||
|
||||
|
||||
|
||||
### The Add Assignment dialog
|
||||
class AssignmentDlg(QDialog):
|
||||
|
@ -655,13 +651,13 @@ class AssignmentDlg(QDialog):
|
|||
## Initialize the Add Assignment dialog
|
||||
def __init__(self, parent=None):
|
||||
super(AssignmentDlg, self).__init__(parent)
|
||||
|
||||
|
||||
# Labels
|
||||
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.statusLabel = QLabel(self.trUtf8("&Status"))
|
||||
self.completeLabel = QLabel(self.trUtf8("&Complete"))
|
||||
|
||||
# Widgets
|
||||
self.dateEdit = QLineEdit("DD.MM.YYYY HH:MM")
|
||||
|
@ -671,9 +667,9 @@ class AssignmentDlg(QDialog):
|
|||
self.numberEdit = QSpinBox()
|
||||
self.numberEdit.setRange(1, 20)
|
||||
self.descriptionEdit = QLineEdit()
|
||||
self.statusEdit = QComboBox()
|
||||
statusTypes = [self.trUtf8("Not available"), self.trUtf8("Available"), self.trUtf8("Begun"), self.trUtf8("Finished"), self.trUtf8("Delivered"), self.trUtf8("Approved"), self.trUtf8("Not approved")]
|
||||
self.statusEdit.addItems(statusTypes)
|
||||
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.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
|
||||
|
||||
# Buddies
|
||||
|
@ -681,7 +677,7 @@ class AssignmentDlg(QDialog):
|
|||
self.courseLabel.setBuddy(self.courseEdit)
|
||||
self.numberLabel.setBuddy(self.numberEdit)
|
||||
self.descriptionLabel.setBuddy(self.descriptionEdit)
|
||||
self.statusLabel.setBuddy(self.statusEdit)
|
||||
self.completeLabel.setBuddy(self.completeEdit)
|
||||
|
||||
# Layout
|
||||
self.layout = QGridLayout()
|
||||
|
@ -689,12 +685,12 @@ class AssignmentDlg(QDialog):
|
|||
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.statusLabel, 4, 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.statusEdit, 4, 1)
|
||||
self.layout.addWidget(self.completeEdit, 4, 1)
|
||||
self.layout.addWidget(self.buttonBox, 5, 0, 1, 2)
|
||||
self.setLayout(self.layout)
|
||||
|
||||
|
@ -712,7 +708,7 @@ class AssignmentDlg(QDialog):
|
|||
assignment.append(unicode(self.courseEdit.currentText()))
|
||||
assignment.append(self.numberEdit.value())
|
||||
assignment.append(unicode(self.descriptionEdit.text()))
|
||||
assignment.append(unicode(self.statusEdit.currentText()))
|
||||
assignment.append(unicode(self.completeEdit.currentText()))
|
||||
return assignment
|
||||
|
||||
## Accept the dialog and add the specified assignment
|
||||
|
@ -722,7 +718,7 @@ class AssignmentDlg(QDialog):
|
|||
courseFull = assignmentList[1]
|
||||
number = assignmentList[2]
|
||||
description = assignmentList[3]
|
||||
status = assignmentList[4]
|
||||
complete = assignmentList[4]
|
||||
|
||||
regex = QRegExp(r"[01-31].[01-12].[2000-2050] [00-23]:[00-60]")
|
||||
validator = QRegExpValidator(regex, self)
|
||||
|
@ -757,14 +753,14 @@ class AssignmentDlg(QDialog):
|
|||
datetime = QDateTime(date, time)
|
||||
except ValueError, e:
|
||||
valueMessage = QErrorMessage()
|
||||
valueMessage.showMessage(QString(self.trUtf8("The date is not valid. Please enter a date on the DD.MM.YYYY HH:MM form.")))
|
||||
valueMessage.showMessage(QString(self.trUtf8("The date is not valid. Please enter a date on the DD.MM.YYYY HH:MM form.")))
|
||||
|
||||
course = getCourseFromDB(getCourseCode(courseFull))
|
||||
|
||||
try:
|
||||
global semester
|
||||
addNewAssignmentToDB(semester, datetime, course, number, description, status)
|
||||
assignment = AssignmentModel(datetime, course, number, description, status)
|
||||
addNewAssignmentToDB(semester, datetime, course, number, description, complete)
|
||||
assignment = AssignmentModel(datetime, course, number, description, complete)
|
||||
except UnboundLocalError, e:
|
||||
pass
|
||||
|
||||
|
@ -784,15 +780,15 @@ class AssignmentModel():
|
|||
course = None
|
||||
number = 0
|
||||
description = ""
|
||||
status = ""
|
||||
complete = ""
|
||||
|
||||
## Initialize the assignment model
|
||||
def __init__(self, date, course, number, description, status):
|
||||
def __init__(self, date, course, number, description, complete):
|
||||
self.date = date
|
||||
self.course = course
|
||||
self.number = number
|
||||
self.description = description
|
||||
self.status = status
|
||||
self.complete = complete
|
||||
|
||||
## Return the date the assignment is due
|
||||
def getDate(self):
|
||||
|
@ -811,8 +807,8 @@ class AssignmentModel():
|
|||
return self.description
|
||||
|
||||
## Return the level of completion for the assignment
|
||||
def getStatus(self):
|
||||
return self.status
|
||||
def getComplete(self):
|
||||
return self.complete
|
||||
|
||||
|
||||
### The contents of the Reading tab
|
||||
|
@ -903,14 +899,14 @@ class ReadingDlg(QDialog):
|
|||
## Initialize the Add Reading dialog
|
||||
def __init__(self, parent=None):
|
||||
super(ReadingDlg, self).__init__(parent)
|
||||
|
||||
|
||||
# Labels
|
||||
self.weekLabel = QLabel(self.trUtf8("&Week"))
|
||||
self.courseLabel = QLabel(self.trUtf8("&Course"))
|
||||
self.bookLabel = QLabel(self.trUtf8("&Book"))
|
||||
self.chapterLabel = QLabel(self.trUtf8("Cha&pter"))
|
||||
self.pagesLabel = QLabel(self.trUtf8("&Pages"))
|
||||
|
||||
|
||||
# Widgets
|
||||
self.weekEdit = QSpinBox()
|
||||
self.weekEdit.setRange(1, 52)
|
||||
|
@ -1034,7 +1030,7 @@ class ReadingModel():
|
|||
p.strip()
|
||||
nextArray.append(p.split("-"))
|
||||
for n in nextArray:
|
||||
sum += int(n[1]) - int(n[0]) + 1
|
||||
sum += int(n[1]) - int(n[0])
|
||||
return sum
|
||||
|
||||
## Return whether the reading has been done or not
|
||||
|
@ -1079,8 +1075,8 @@ class ScheduleTab(QWidget):
|
|||
selected = None
|
||||
|
||||
def updateHeaders(self):
|
||||
self.scheduleHorizontalHeaderList = QStringList()
|
||||
self.scheduleHorizontalHeaderList.append(self.trUtf8("Monday"))
|
||||
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"))
|
||||
|
@ -1123,7 +1119,7 @@ class ScheduleTab(QWidget):
|
|||
item = QTableWidgetItem(text)
|
||||
item.setBackground(self.getBackground(QString("%s" % type), lesson.getCourse(), collision))
|
||||
self.scheduleTable.setItem(row, column, item)
|
||||
|
||||
|
||||
## Return the column specified by the day
|
||||
def getColumn(self, dayString):
|
||||
day = QString("%s" % dayString)
|
||||
|
@ -1138,7 +1134,7 @@ class ScheduleTab(QWidget):
|
|||
elif day.compare(QString(self.trUtf8("Friday"))) == 0:
|
||||
return 4
|
||||
else:
|
||||
return -1
|
||||
return -1
|
||||
|
||||
## Set the right brush and color for the lesson, depending on type of lesson
|
||||
def getBackground(self, type, course, collision):
|
||||
|
@ -1169,7 +1165,7 @@ class ScheduleDlg(QDialog):
|
|||
## Initialize the Add Lesson dialog
|
||||
def __init__(self, parent=None):
|
||||
super(ScheduleDlg, self).__init__(parent)
|
||||
|
||||
|
||||
# Labels
|
||||
self.dayLabel = QLabel(self.trUtf8("&Day"))
|
||||
self.fromLabel = QLabel(self.trUtf8("&From"))
|
||||
|
@ -1349,7 +1345,7 @@ class CourseDlg(QDialog):
|
|||
booksDB = getBooksFromDB()
|
||||
booksStringList = QStringList()
|
||||
for book in booksDB:
|
||||
booksStringList.append(book.getAuthor() + u" : " + book.getTitle() + u", " + str(book.getEdition()) + self.trUtf8(". edition"))
|
||||
booksStringList.append(book.getTitle())
|
||||
self.booksEdit.addItems(booksStringList)
|
||||
self.booksEdit.sortItems()
|
||||
|
||||
|
@ -1434,7 +1430,7 @@ class BookDlg(QDialog):
|
|||
## Initialize the Add Book dialog
|
||||
def __init__(self, parent=None):
|
||||
super(BookDlg, self).__init__(parent)
|
||||
|
||||
|
||||
# Labels
|
||||
self.titleLabel = QLabel(self.trUtf8("&Title"))
|
||||
self.authorLabel = QLabel(self.trUtf8("&Author"))
|
||||
|
@ -1571,7 +1567,7 @@ def initAssignmentDB(cursor):
|
|||
course TEXT,
|
||||
number INT,
|
||||
description TEXT,
|
||||
status TEXT,
|
||||
complete TEXT,
|
||||
term TEXT,
|
||||
year INT,
|
||||
PRIMARY KEY (course, number)
|
||||
|
@ -1590,7 +1586,7 @@ def initReadingDB(cursor):
|
|||
done BOOLEAN,
|
||||
term TEXT,
|
||||
year INT,
|
||||
PRIMARY KEY (week, course, book, chapter)
|
||||
PRIMARY KEY (week, course, book)
|
||||
)
|
||||
''')
|
||||
|
||||
|
@ -1657,7 +1653,7 @@ def addNewSemesterToDB(term, year):
|
|||
exitDB(conn)
|
||||
|
||||
## Add new assignment to the database
|
||||
def addNewAssignmentToDB(semester, datetime, course, number, description, status):
|
||||
def addNewAssignmentToDB(semester, datetime, course, number, description, complete):
|
||||
cursor, conn = initDB()
|
||||
|
||||
day = datetime.date().day()
|
||||
|
@ -1670,9 +1666,9 @@ def addNewAssignmentToDB(semester, datetime, course, number, description, status
|
|||
year = semester.getYear()
|
||||
|
||||
cursor.execute('''
|
||||
INSERT INTO Assignment (date, course, number, description, status, term, year)
|
||||
INSERT INTO Assignment (date, course, number, description, complete, term, year)
|
||||
VALUES (datetime(?), ?, ?, ?, ?, ?, ?)
|
||||
''', (timestring, course.getCode(), number, description, status, term, year))
|
||||
''', (timestring, course.getCode(), number, description, complete, term, year))
|
||||
|
||||
exitDB(conn)
|
||||
|
||||
|
@ -1721,7 +1717,7 @@ def addNewCourseToDB(code, title, short, color, books):
|
|||
cursor.execute('''
|
||||
INSERT INTO CourseUsesBook (courseCode, bookIsbn)
|
||||
VALUES (?, ?)
|
||||
''', (code, book))
|
||||
''', (code, book.getIsbn()))
|
||||
|
||||
exitDB(conn)
|
||||
|
||||
|
@ -1945,7 +1941,7 @@ def getBookWithTitleFromDB(booktitle):
|
|||
def updateAssignmentCompletion(coursecode, num, completion):
|
||||
cursor, conn = initDB()
|
||||
|
||||
status = "%s" % completion
|
||||
complete = "%s" % completion
|
||||
course = "%s" % coursecode
|
||||
number = (num.toInt())[0]
|
||||
|
||||
|
@ -1954,17 +1950,16 @@ def updateAssignmentCompletion(coursecode, num, completion):
|
|||
SET complete = ?
|
||||
WHERE course = ?
|
||||
AND number = ?
|
||||
''', (status, course, number))
|
||||
''', (complete, course, number))
|
||||
|
||||
exitDB(conn)
|
||||
|
||||
## Update whether the specified reading is done or not
|
||||
def updateReadingDone(week, coursecode, bookisbn, chapter, done):
|
||||
def updateReadingDone(week, coursecode, bookisbn, done):
|
||||
cursor, conn = initDB()
|
||||
|
||||
course = "%s" % coursecode
|
||||
book = "%s" % bookisbn
|
||||
ch = "%s" % chapter
|
||||
|
||||
cursor.execute('''
|
||||
UPDATE Reading
|
||||
|
@ -1972,8 +1967,7 @@ def updateReadingDone(week, coursecode, bookisbn, chapter, done):
|
|||
WHERE week = ?
|
||||
AND course = ?
|
||||
AND book = ?
|
||||
AND chapter = ?
|
||||
''', (done, week, course, book, ch))
|
||||
''', (done, week, course, book))
|
||||
|
||||
exitDB(conn)
|
||||
|
||||
|
@ -1996,12 +1990,11 @@ def removeAssignmentFromDB(coursecode, num):
|
|||
exitDB(conn)
|
||||
|
||||
## Remove the specified reading from the database
|
||||
def removeReadingFromDB(week, coursecode, bookisbn, chapter):
|
||||
def removeReadingFromDB(week, coursecode, bookisbn):
|
||||
cursor, conn = initDB()
|
||||
|
||||
course = "%s" % coursecode
|
||||
book = "%s" % bookisbn
|
||||
ch = "%s" % chapter
|
||||
|
||||
cursor.execute('''
|
||||
DELETE
|
||||
|
@ -2009,8 +2002,7 @@ def removeReadingFromDB(week, coursecode, bookisbn, chapter):
|
|||
WHERE week = ?
|
||||
AND course = ?
|
||||
AND book = ?
|
||||
AND chapter = ?
|
||||
''', (week, course, book, ch))
|
||||
''', (week, course, book))
|
||||
|
||||
exitDB(conn)
|
||||
|
||||
|
@ -2049,7 +2041,7 @@ def getCourseCode(courseFull):
|
|||
## Add a new course to the list of courses
|
||||
def addNewCourse(course):
|
||||
courses.append(course)
|
||||
addNewCourseToDB(course.getCode(), course.getTitle(), course.getShort(), course.getColor(), course.getBooks())
|
||||
addNewCourseToDB(course.getCode(), course.getTitle(), course.getShort(), course.getColor())
|
||||
addNewCourseString(course)
|
||||
|
||||
## Return the list of courses
|
||||
|
@ -2163,14 +2155,6 @@ def getMain():
|
|||
## Run the program
|
||||
def main():
|
||||
app = QApplication(sys.argv)
|
||||
locale = QLocale.system().name()
|
||||
qtTranslator = QTranslator()
|
||||
if qtTranslator.load("qt_" + locale, ":/"):
|
||||
app.installTranslator(qtTranslator)
|
||||
appTranslator = QTranslator()
|
||||
if appTranslator.load("imagechanger_" + locale, ":/"):
|
||||
app.installTranslator(appTranslator)
|
||||
|
||||
form = MainWindow()
|
||||
app.setOrganizationName("PVV")
|
||||
app.setOrganizationDomain("pvv.ntnu.no")
|
||||
|
|
BIN
egon_nb.qm
BIN
egon_nb.qm
Binary file not shown.
657
egon_nb.ts
657
egon_nb.ts
|
@ -1,657 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS><TS version="1.1" language="nb">
|
||||
<defaultcodec></defaultcodec>
|
||||
<context>
|
||||
<name>AssignmentDlg</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="660"/>
|
||||
<source>&Date</source>
|
||||
<translation>&Dato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="661"/>
|
||||
<source>&Course</source>
|
||||
<translation>&Fag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="662"/>
|
||||
<source>&Number</source>
|
||||
<translation>&Nummer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="663"/>
|
||||
<source>De&scription</source>
|
||||
<translation>&Beskrivelse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="664"/>
|
||||
<source>&Status</source>
|
||||
<translation>&Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="675"/>
|
||||
<source>Not available</source>
|
||||
<translation>Ikke tilgjengelig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="675"/>
|
||||
<source>Available</source>
|
||||
<translation>Tilgjengelig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="675"/>
|
||||
<source>Begun</source>
|
||||
<translation>Påbegynt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="675"/>
|
||||
<source>Finished</source>
|
||||
<translation>Ferdig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="675"/>
|
||||
<source>Delivered</source>
|
||||
<translation>Levert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="675"/>
|
||||
<source>Approved</source>
|
||||
<translation>Godkjent</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="676"/>
|
||||
<source>Not approved</source>
|
||||
<translation>Underkjent</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="706"/>
|
||||
<source>Add new assignment</source>
|
||||
<translation>Ny øving</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="732"/>
|
||||
<source>The date is not in a correct format.</source>
|
||||
<translation>Datoen er ikke i et godkjent format.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="746"/>
|
||||
<source>The day is not valid. Please enter a valid date.</source>
|
||||
<translation>Dagen er ikke gyldig. Vennligst oppgi et gyldig dato.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="749"/>
|
||||
<source>The hour is not valid. Please enter a valid time.</source>
|
||||
<translation>Timen er ikke gyldig. Vennligst oppgi et gyldig tidspunkt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="752"/>
|
||||
<source>The minutes are not valid. Please enter a valid time.</source>
|
||||
<translation>Minuttene er ikke gyldig. Vennligst oppgi et gyldig tidspunkt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="760"/>
|
||||
<source>The date is not valid. Please enter a date on the DD.MM.YYYY HH:MM form.</source>
|
||||
<translation>Datoen er ikke gyldig. Vennligst oppgi en dato på formatet DD.MM.YYYY HH:MM.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AssignmentTab</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="560"/>
|
||||
<source>Not available</source>
|
||||
<translation>Ikke tilgjengelig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="629"/>
|
||||
<source>Available</source>
|
||||
<translation>Tilgjengelig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="632"/>
|
||||
<source>Begun</source>
|
||||
<translation>Påbegynt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="635"/>
|
||||
<source>Finished</source>
|
||||
<translation>Ferdig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="638"/>
|
||||
<source>Delivered</source>
|
||||
<translation>Levert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="641"/>
|
||||
<source>Approved</source>
|
||||
<translation>Godkjent</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="644"/>
|
||||
<source>Not approved</source>
|
||||
<translation>Underkjent</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="583"/>
|
||||
<source>Date</source>
|
||||
<translation>Dato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="584"/>
|
||||
<source>Course</source>
|
||||
<translation>Fag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="585"/>
|
||||
<source>Number</source>
|
||||
<translation>Nummer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="586"/>
|
||||
<source>Description</source>
|
||||
<translation>Beskrivelse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="587"/>
|
||||
<source>Status</source>
|
||||
<translation>Status</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BookDlg</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="1439"/>
|
||||
<source>&Title</source>
|
||||
<translation>&Tittel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1440"/>
|
||||
<source>&Author</source>
|
||||
<translation>&Forfatter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1441"/>
|
||||
<source>&Edition</source>
|
||||
<translation>&Utgave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1442"/>
|
||||
<source>&ISBN</source>
|
||||
<translation>&ISBN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1476"/>
|
||||
<source>Add new book</source>
|
||||
<translation>Ny bok</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CourseDlg</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="1302"/>
|
||||
<source>&Code</source>
|
||||
<translation>Fag&kode</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1303"/>
|
||||
<source>&Title</source>
|
||||
<translation>Fag&navn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1304"/>
|
||||
<source>&Short form</source>
|
||||
<translation>&Kortform</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1305"/>
|
||||
<source>&Books</source>
|
||||
<translation>&Bøker</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1344"/>
|
||||
<source>Add new course</source>
|
||||
<translation>Nytt fag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1352"/>
|
||||
<source>. edition</source>
|
||||
<translation>. utgave</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="45"/>
|
||||
<source>Egon</source>
|
||||
<translation>Egon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="45"/>
|
||||
<source>Monday</source>
|
||||
<translation>Mandag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="45"/>
|
||||
<source>Tuesday</source>
|
||||
<translation>Tirsdag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="45"/>
|
||||
<source>Wednesday</source>
|
||||
<translation>Onsdag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="45"/>
|
||||
<source>Thursday</source>
|
||||
<translation>Torsdag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="48"/>
|
||||
<source>Friday</source>
|
||||
<translation>Fredag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="54"/>
|
||||
<source>&Assignment</source>
|
||||
<translation>&Øving</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="55"/>
|
||||
<source>&Reading List</source>
|
||||
<translation>&Leselekse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="56"/>
|
||||
<source>&Schedule</source>
|
||||
<translation>&Timeplan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="64"/>
|
||||
<source>Calendar</source>
|
||||
<translation>Kalender</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="79"/>
|
||||
<source>Spring</source>
|
||||
<translation>Vår</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="167"/>
|
||||
<source>Autumn</source>
|
||||
<translation>Høst</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="87"/>
|
||||
<source>&New</source>
|
||||
<translation>&Ny</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="87"/>
|
||||
<source>Create a new semester plan</source>
|
||||
<translation>Lag ny semesterplan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="88"/>
|
||||
<source>&Open</source>
|
||||
<translation>&Åpne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="88"/>
|
||||
<source>Open an existing semester plan</source>
|
||||
<translation>Åpne en eksisterende semesterplan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="89"/>
|
||||
<source>&Quit</source>
|
||||
<translation>&Avslutt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="89"/>
|
||||
<source>Quit program</source>
|
||||
<translation>Avslutt program</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="90"/>
|
||||
<source>Add &course</source>
|
||||
<translation>Nytt &fag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="90"/>
|
||||
<source>Add a new course</source>
|
||||
<translation>Legg til et nytt fag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="91"/>
|
||||
<source>Add &book</source>
|
||||
<translation>Ny &bok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="91"/>
|
||||
<source>Add a new book</source>
|
||||
<translation>Legg til en ny bok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="92"/>
|
||||
<source>Add &assignment</source>
|
||||
<translation>Ny &øving</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="92"/>
|
||||
<source>Add a new assignment</source>
|
||||
<translation>Legg til en ny øving</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="93"/>
|
||||
<source>Add &reading</source>
|
||||
<translation>Ny &leselekse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="93"/>
|
||||
<source>Add a new reading</source>
|
||||
<translation>Legg til en ny leselekse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="94"/>
|
||||
<source>Add &lesson</source>
|
||||
<translation>Ny &time</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="94"/>
|
||||
<source>Add a new lesson</source>
|
||||
<translation>Legg til en ny time</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="95"/>
|
||||
<source>Cal&endar</source>
|
||||
<translation>Kal&ender</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="95"/>
|
||||
<source>Show the calendar</source>
|
||||
<translation>Vis kalenderen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="96"/>
|
||||
<source>&About Egon</source>
|
||||
<translation>Om &Egon</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="99"/>
|
||||
<source>&File</source>
|
||||
<translation>&Fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="100"/>
|
||||
<source>&Edit</source>
|
||||
<translation>&Rediger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="101"/>
|
||||
<source>&Help</source>
|
||||
<translation>&Hjelp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="126"/>
|
||||
<source>File</source>
|
||||
<translation>Fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="129"/>
|
||||
<source>Edit</source>
|
||||
<translation>Rediger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="242"/>
|
||||
<source>Not done</source>
|
||||
<translation>Ikke ferdig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="238"/>
|
||||
<source>Done</source>
|
||||
<translation>Ferdig</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NewSemesterDlg</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="405"/>
|
||||
<source>Semester</source>
|
||||
<translation>Semester</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="406"/>
|
||||
<source>Year</source>
|
||||
<translation>År</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="430"/>
|
||||
<source>New semester</source>
|
||||
<translation>Nytt semester</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OpenSemesterDlg</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="472"/>
|
||||
<source>Open semester</source>
|
||||
<translation>Åpne en semesterplan</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReadingDlg</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="908"/>
|
||||
<source>&Week</source>
|
||||
<translation>&Uke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="909"/>
|
||||
<source>&Course</source>
|
||||
<translation>&Fag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="910"/>
|
||||
<source>&Book</source>
|
||||
<translation>&Bok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="911"/>
|
||||
<source>Cha&pter</source>
|
||||
<translation>&Kapittel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="912"/>
|
||||
<source>&Pages</source>
|
||||
<translation>&Sider</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="960"/>
|
||||
<source>Add new reading</source>
|
||||
<translation>Ny leselekse</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReadingTab</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="826"/>
|
||||
<source>Add pages to read</source>
|
||||
<translation>Legg til leselekse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="827"/>
|
||||
<source>Delete pages</source>
|
||||
<translation>Slett leselekse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="883"/>
|
||||
<source>Done</source>
|
||||
<translation>Ferdig</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="849"/>
|
||||
<source>Week</source>
|
||||
<translation>Uke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="850"/>
|
||||
<source>Course</source>
|
||||
<translation>Fag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="851"/>
|
||||
<source>Book</source>
|
||||
<translation>Bok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="852"/>
|
||||
<source>Chapter</source>
|
||||
<translation>Kapittel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="853"/>
|
||||
<source>Pages</source>
|
||||
<translation>Sider</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="854"/>
|
||||
<source>Number of pages</source>
|
||||
<translation>Antall sider</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="886"/>
|
||||
<source>Not done</source>
|
||||
<translation>Ikke ferdig</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ScheduleDlg</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="1174"/>
|
||||
<source>&Day</source>
|
||||
<translation>&Dag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1175"/>
|
||||
<source>&From</source>
|
||||
<translation>Fr&a</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1176"/>
|
||||
<source>&To</source>
|
||||
<translation>&Til</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1177"/>
|
||||
<source>&Course</source>
|
||||
<translation>&Fag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1178"/>
|
||||
<source>Ty&pe</source>
|
||||
<translation>T&ype</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1179"/>
|
||||
<source>&Room</source>
|
||||
<translation>&Rom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1197"/>
|
||||
<source>Lecture</source>
|
||||
<translation>Forelesning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1197"/>
|
||||
<source>Assignment lecture</source>
|
||||
<translation>Øvingsforelesning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1197"/>
|
||||
<source>Assignment help</source>
|
||||
<translation>Øvingshjelp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1197"/>
|
||||
<source>Lab</source>
|
||||
<translation>Lab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1197"/>
|
||||
<source>Seminar</source>
|
||||
<translation>Seminar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1198"/>
|
||||
<source>Other</source>
|
||||
<translation>Annet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1232"/>
|
||||
<source>Add new lesson</source>
|
||||
<translation>Legg til ny time</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ScheduleTab</name>
|
||||
<message>
|
||||
<location filename="egon.py" line="1130"/>
|
||||
<source>Monday</source>
|
||||
<translation>Mandag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1132"/>
|
||||
<source>Tuesday</source>
|
||||
<translation>Tirsdag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1134"/>
|
||||
<source>Wednesday</source>
|
||||
<translation>Onsdag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1136"/>
|
||||
<source>Thursday</source>
|
||||
<translation>Torsdag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1138"/>
|
||||
<source>Friday</source>
|
||||
<translation>Fredag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1090"/>
|
||||
<source>%i</source>
|
||||
<translation>%i</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1145"/>
|
||||
<source>Lecture</source>
|
||||
<translation>Forelesning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1147"/>
|
||||
<source>Assignment lecture</source>
|
||||
<translation>Øvingsforelesning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1149"/>
|
||||
<source>Assignment help</source>
|
||||
<translation>Øvingshjelp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1151"/>
|
||||
<source>Lab</source>
|
||||
<translation>Lab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1153"/>
|
||||
<source>Seminar</source>
|
||||
<translation>Seminar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="egon.py" line="1155"/>
|
||||
<source>Other</source>
|
||||
<translation>Annet</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
|
@ -223,10 +223,10 @@ class MainWindow(QMainWindow):
|
|||
|
||||
## Delete the reading from the database and the table
|
||||
def deleteReading(self):
|
||||
week, course, book, chapter = self.getWeekCourseBookAndChapter()
|
||||
week, course, book = self.getWeekCourseAndBook()
|
||||
table, row = self.getReadingTableAndRow()
|
||||
global semester
|
||||
removeReadingFromDB(week, course, book, chapter)
|
||||
removeReadingFromDB(week, course, book)
|
||||
table.removeRow(row)
|
||||
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||
|
||||
|
@ -238,7 +238,7 @@ class MainWindow(QMainWindow):
|
|||
item = QTableWidgetItem(self.trUtf8("Ferdig"))
|
||||
item.setBackground(QBrush(Qt.green, Qt.SolidPattern))
|
||||
else:
|
||||
done = True
|
||||
done = False
|
||||
item = QTableWidgetItem(self.trUtf8("Ikke ferdig"))
|
||||
item.setBackground(QBrush(Qt.red, Qt.SolidPattern))
|
||||
table.setItem(row, 6, item)
|
||||
|
@ -249,9 +249,7 @@ class MainWindow(QMainWindow):
|
|||
bookTitle = table.item(row, 2).text()
|
||||
book = getBookWithTitleFromDB(bookTitle)
|
||||
bookIsbn = book.getIsbn()
|
||||
chapter = table.item(row, 3).text()
|
||||
updateReadingDone(week, courseCode, bookIsbn, chapter, done)
|
||||
print week, courseCode, bookIsbn, chapter, done
|
||||
updateReadingDone(week, courseCode, bookIsbn, True)
|
||||
|
||||
## Return the reading table and its current row
|
||||
def getReadingTableAndRow(self):
|
||||
|
@ -260,18 +258,16 @@ class MainWindow(QMainWindow):
|
|||
return table, row
|
||||
|
||||
## Return the week, course and book of the current reading
|
||||
def getWeekCourseBookAndChapter(self):
|
||||
def getWeekCourseAndBook(self):
|
||||
table, row = self.getReadingTableAndRow()
|
||||
weekItem = table.item(row, 0)
|
||||
courseItem = table.item(row, 1)
|
||||
bookItem = table.item(row, 2)
|
||||
chapterItem = table.item(row, 3)
|
||||
week = (weekItem.text().toInt())[0]
|
||||
courseFull = courseItem.text()
|
||||
courseCode = getCourseCode(courseFull)
|
||||
book = getBookWithTitleFromDB(bookItem.text())
|
||||
chapter = chapterItem.text()
|
||||
return week, courseCode, book.getIsbn(), chapter
|
||||
return week, courseCode, book.getIsbn()
|
||||
|
||||
# Schedule
|
||||
|
||||
|
@ -1034,7 +1030,7 @@ class ReadingModel():
|
|||
p.strip()
|
||||
nextArray.append(p.split("-"))
|
||||
for n in nextArray:
|
||||
sum += int(n[1]) - int(n[0]) + 1
|
||||
sum += int(n[1]) - int(n[0])
|
||||
return sum
|
||||
|
||||
## Return whether the reading has been done or not
|
||||
|
@ -1349,7 +1345,7 @@ class CourseDlg(QDialog):
|
|||
booksDB = getBooksFromDB()
|
||||
booksStringList = QStringList()
|
||||
for book in booksDB:
|
||||
booksStringList.append(book.getAuthor() + u" : " + book.getTitle() + u", " + str(book.getEdition()) + u". utgave")
|
||||
booksStringList.append(book.getTitle())
|
||||
self.booksEdit.addItems(booksStringList)
|
||||
self.booksEdit.sortItems()
|
||||
|
||||
|
@ -1528,7 +1524,7 @@ def initDB():
|
|||
home = os.environ['HOME']
|
||||
else:
|
||||
home = ""
|
||||
path = home+"/.egon/egon_no.db"
|
||||
path = home+"/.egon/egon_bm.db"
|
||||
conn = sqlite.connect(path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
|
@ -1590,7 +1586,7 @@ def initReadingDB(cursor):
|
|||
done BOOLEAN,
|
||||
term TEXT,
|
||||
year INT,
|
||||
PRIMARY KEY (week, course, book, chapter)
|
||||
PRIMARY KEY (week, course, book)
|
||||
)
|
||||
''')
|
||||
|
||||
|
@ -1721,7 +1717,7 @@ def addNewCourseToDB(code, title, short, color, books):
|
|||
cursor.execute('''
|
||||
INSERT INTO CourseUsesBook (courseCode, bookIsbn)
|
||||
VALUES (?, ?)
|
||||
''', (code, book))
|
||||
''', (code, book.getIsbn()))
|
||||
|
||||
exitDB(conn)
|
||||
|
||||
|
@ -1959,12 +1955,11 @@ def updateAssignmentCompletion(coursecode, num, completion):
|
|||
exitDB(conn)
|
||||
|
||||
## Update whether the specified reading is done or not
|
||||
def updateReadingDone(week, coursecode, bookisbn, chapter, done):
|
||||
def updateReadingDone(week, coursecode, bookisbn, done):
|
||||
cursor, conn = initDB()
|
||||
|
||||
course = "%s" % coursecode
|
||||
book = "%s" % bookisbn
|
||||
ch = "%s" % chapter
|
||||
|
||||
cursor.execute('''
|
||||
UPDATE Reading
|
||||
|
@ -1972,8 +1967,7 @@ def updateReadingDone(week, coursecode, bookisbn, chapter, done):
|
|||
WHERE week = ?
|
||||
AND course = ?
|
||||
AND book = ?
|
||||
AND chapter = ?
|
||||
''', (done, week, course, book, ch))
|
||||
''', (done, week, course, book))
|
||||
|
||||
exitDB(conn)
|
||||
|
||||
|
@ -1996,12 +1990,11 @@ def removeAssignmentFromDB(coursecode, num):
|
|||
exitDB(conn)
|
||||
|
||||
## Remove the specified reading from the database
|
||||
def removeReadingFromDB(week, coursecode, bookisbn, chapter):
|
||||
def removeReadingFromDB(week, coursecode, bookisbn):
|
||||
cursor, conn = initDB()
|
||||
|
||||
course = "%s" % coursecode
|
||||
book = "%s" % bookisbn
|
||||
ch = "%s" % chapter
|
||||
|
||||
cursor.execute('''
|
||||
DELETE
|
||||
|
@ -2009,8 +2002,7 @@ def removeReadingFromDB(week, coursecode, bookisbn, chapter):
|
|||
WHERE week = ?
|
||||
AND course = ?
|
||||
AND book = ?
|
||||
AND chapter = ?
|
||||
''', (week, course, book, ch))
|
||||
''', (week, course, book))
|
||||
|
||||
exitDB(conn)
|
||||
|
||||
|
@ -2049,7 +2041,7 @@ def getCourseCode(courseFull):
|
|||
## Add a new course to the list of courses
|
||||
def addNewCourse(course):
|
||||
courses.append(course)
|
||||
addNewCourseToDB(course.getCode(), course.getTitle(), course.getShort(), course.getColor(), course.getBooks())
|
||||
addNewCourseToDB(course.getCode(), course.getTitle(), course.getShort(), course.getColor())
|
||||
addNewCourseString(course)
|
||||
|
||||
## Return the list of courses
|
|
@ -0,0 +1,255 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
from pysqlite2 import dbapi2 as sqlite
|
||||
#import qrc_resources
|
||||
from qrc_resources import *
|
||||
from assignment import *
|
||||
from reading import *
|
||||
from schedule import *
|
||||
from calendar import *
|
||||
from book import *
|
||||
from course import *
|
||||
#from db import *
|
||||
import db
|
||||
|
||||
__version__ = "0.0.1"
|
||||
|
||||
class MainWindow(QMainWindow):
|
||||
|
||||
courses = []
|
||||
coursesString = []
|
||||
books = []
|
||||
booksString = []
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(MainWindow, self).__init__(parent)
|
||||
|
||||
# The program name
|
||||
self.title = "Egon"
|
||||
|
||||
# The tabs
|
||||
assignment = AssignmentTab()
|
||||
reading = ReadingTab()
|
||||
schedule = ScheduleTab()
|
||||
|
||||
# Set the tabs in the middle
|
||||
self.tabs = QTabWidget()
|
||||
self.tabs.addTab(assignment, "&Assignments")
|
||||
self.tabs.addTab(reading, "&Reading List")
|
||||
self.tabs.addTab(schedule, "&Schedule")
|
||||
self.tabs.setTabShape(QTabWidget.Triangular)
|
||||
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.calendarLayout = QVBoxLayout()
|
||||
self.calendarLayout.addWidget(self.calendar)
|
||||
self.calendarFrame.setLayout(self.calendarLayout)
|
||||
self.calendarFrame.hide()
|
||||
self.calendarDockWidget.setWidget(self.calendarFrame)
|
||||
|
||||
# Actions
|
||||
fileNewAction = self.createAction("&New", self.fileNew, QKeySequence.New, ":filenew", "Create a new plan")
|
||||
fileOpenAction = self.createAction("&Open", self.fileOpen, QKeySequence.Open, ":fileopen", "Open an existing 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")
|
||||
fileQuitAction = self.createAction("&Quit", self.close, "Ctrl+Q", ":filequit", "Quit program")
|
||||
editAddCourse = self.createAction("A&dd course", self.addCourse, "Ctrl+D", None, "Add a new course")
|
||||
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")
|
||||
editShowCalendar = self.createAction("&Calendar", self.showCalendar, "Ctrl+C", None, "Show the calendar")
|
||||
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
|
||||
self.addActions(self.fileMenu, (fileNewAction, fileOpenAction, None, fileSaveAction, fileSaveAsAction, None, filePrintAction, None, fileQuitAction))
|
||||
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(assignment.addAssignmentButton, SIGNAL("pressed()"), self.addAssignment)
|
||||
self.connect(assignment.editAssignmentButton, SIGNAL("pressed()"), self.editAssignment)
|
||||
self.connect(assignment.assignmentDoneButton, SIGNAL("pressed()"), self.doneAssignment)
|
||||
self.connect(reading.addReadingButton, SIGNAL("pressed()"), self.addReading)
|
||||
self.connect(reading.editReadingButton, SIGNAL("pressed()"), self.editReading)
|
||||
self.connect(schedule.addScheduleButton, SIGNAL("pressed()"), self.addLesson)
|
||||
self.connect(schedule.editScheduleButton, SIGNAL("pressed()"), self.editLesson)
|
||||
|
||||
# The toolbars
|
||||
fileToolbar = self.addToolBar("File")
|
||||
fileToolbar.setObjectName("FileToolBar")
|
||||
self.addActions(fileToolbar, (fileNewAction, fileOpenAction, None, fileSaveAction, fileSaveAsAction, None, filePrintAction, None, fileQuitAction))
|
||||
editToolbar = self.addToolBar("Edit")
|
||||
editToolbar.setObjectName("EditToolBar")
|
||||
self.addActions(editToolbar, (editAddCourse, editAddBook, None, editShowCalendar))
|
||||
|
||||
self.courses = db.getCourses()
|
||||
self.makeCoursesString(self.courses)
|
||||
|
||||
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 editAssignment(self):
|
||||
self.eadlg = EditAssignmentDlg()
|
||||
self.connect(self.eadlg, SIGNAL("changed()"), self.refreshTable)
|
||||
self.eadlg.show()
|
||||
|
||||
def doneAssignment(self):
|
||||
pass
|
||||
|
||||
def addReading(self):
|
||||
self.ardlg = AddReadingDlg()
|
||||
self.ardlg.show()
|
||||
|
||||
def editReading(self):
|
||||
self.erdlg = EditReadingDlg()
|
||||
self.connect(self.erdlg, SIGNAL("changed()"), self.refreshTable)
|
||||
self.erdlg.show()
|
||||
|
||||
def doneReading(self):
|
||||
pass
|
||||
|
||||
def addLesson(self):
|
||||
self.asdlg = AddScheduleDlg()
|
||||
self.asdlg.show()
|
||||
|
||||
def editLesson(self):
|
||||
self.esdlg = EditScheduleDlg()
|
||||
self.connect(self.esdlg, SIGNAL("changed()"), self.refreshTable)
|
||||
self.esdlg.show()
|
||||
|
||||
def helpAbout(self):
|
||||
QMessageBox.about(self, "About %s" % self.title, u"""<b>%s</b> v %s
|
||||
<p>Copyright © 2008 Tiril Anette Langfeldt Rødland. All rights reserved.
|
||||
<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""" % (self.title, __version__, platform.python_version(), QT_VERSION_STR, PYQT_VERSION_STR, platform.system()))
|
||||
|
||||
def addActions(self, target, actions):
|
||||
for action in actions:
|
||||
if action is None:
|
||||
target.addSeparator()
|
||||
else:
|
||||
target.addAction(action)
|
||||
|
||||
def fileNew(self):
|
||||
model = Model()
|
||||
|
||||
def fileOpen(self):
|
||||
pass
|
||||
|
||||
def fileSave(self):
|
||||
pass
|
||||
|
||||
def fileSaveAs(self):
|
||||
pass
|
||||
|
||||
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 = "/home/tiril/koding/schedule/images/%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)
|
||||
|
||||
def refreshTable(self):
|
||||
pass
|
||||
|
||||
def addNewCourse(self, course):
|
||||
self.courses.append(course)
|
||||
db.addNewCourse(course.getCode(), course.getTitle(), course.getShort())
|
||||
self.addNewCourseString(course)
|
||||
|
||||
def getCourses(self):
|
||||
return self.courses
|
||||
|
||||
def addNewCourseString(self, course):
|
||||
self.coursesString.append(course.getFull())
|
||||
|
||||
def makeCoursesString(self, courses):
|
||||
if courses:
|
||||
for c in courses:
|
||||
addNewCourseString(course)
|
||||
|
||||
def getCoursesString(self):
|
||||
return self.coursesString
|
||||
|
||||
class Model:
|
||||
|
||||
def __init__(self, parent=None):
|
||||
self.assignmentModel = AssignmentModel()
|
||||
self.readingModel = ReadingModel()
|
||||
self.scheduleModel = ScheduleModel()
|
||||
|
||||
|
||||
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()
|
|
@ -0,0 +1,979 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Resource object code
|
||||
#
|
||||
# Created: Mon Jun 9 16:06:16 2008
|
||||
# by: The Resource Compiler for PyQt (Qt v4.3.4)
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt4 import QtCore
|
||||
|
||||
qt_resource_data = "\
|
||||
\x00\x00\x08\x15\
|
||||
\x89\
|
||||
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
|
||||
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
|
||||
\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\
|
||||
\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
|
||||
\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\
|
||||
\x79\x71\xc9\x65\x3c\x00\x00\x07\xa7\x49\x44\x41\x54\x78\xda\x62\
|
||||
\xfc\xff\xff\x3f\x03\x35\xc0\x9b\x99\x8c\xf7\xff\x8b\xe5\x29\xbc\
|
||||
\xbd\xf5\x94\xe1\xd5\x99\x83\x1b\x7e\x7d\x78\x33\xd1\x65\xf7\xff\
|
||||
\x03\x84\xf4\x01\x04\x10\x03\xc8\x01\x94\xe2\x37\x13\x19\x1c\x7e\
|
||||
\x5e\xe6\xfb\xff\xff\xfd\xe6\xff\xff\x3f\xdc\xf9\xff\xfb\xe9\xb9\
|
||||
\xff\x77\x67\xe5\xfd\xdf\xed\xc2\xd0\x4f\x48\x2f\x40\x00\x51\xc5\
|
||||
\x01\xef\xe6\x32\xec\xff\xff\x9a\xf1\xff\xff\xbb\xfc\x40\xdc\x05\
|
||||
\x76\x04\x08\x43\x1d\x11\x80\x4f\x2f\x40\x00\xb1\x80\x42\x61\xdd\
|
||||
\xfa\x23\xff\x7f\xff\xfe\xc3\xf0\xfb\xd7\x5f\x06\x46\x46\x06\x86\
|
||||
\x3f\x7f\xfe\x02\x31\x90\xff\x1b\x41\xa3\xb2\xff\x80\xd5\x80\x68\
|
||||
\x59\xb6\x1b\x0c\x19\xfe\x8c\xd0\x78\xf8\xc4\xc0\xf0\xa5\x9c\x81\
|
||||
\xe1\x56\x3f\x03\xc3\x4f\x7b\x06\xce\xa7\xe7\x41\xa2\x17\xf0\xc5\
|
||||
\x00\x40\x00\xb1\xac\x5f\x7f\xf4\xbf\xad\xbd\x3e\xd0\xc0\x7f\x0c\
|
||||
\x7f\xff\xfd\x63\x90\x91\x10\x04\x4b\x5c\xbe\xf9\x04\x45\xa1\xae\
|
||||
\xba\x0c\x56\x03\xbe\x1f\x4f\x64\xe0\x50\x01\x32\xbe\x02\x1d\xf1\
|
||||
\x05\x9a\x9e\xde\x70\x00\x25\xae\x30\xdc\x7e\x2b\xc4\xd0\xf6\xaf\
|
||||
\xf8\xbe\x0b\x03\x03\x23\x2e\x07\x00\x04\x10\xcb\x6f\xa0\xaf\x7e\
|
||||
\xfc\xfc\xcd\xf0\xf5\xdb\x4f\x86\x3f\x7f\x11\x0e\x30\xf5\x6f\x64\
|
||||
\x90\x14\x15\x60\xe0\xe0\x60\x65\xe0\x60\x67\x65\x38\xbf\xa5\x11\
|
||||
\x43\xf3\xbf\xcf\x0f\x18\xfe\x7f\x5f\x08\xe1\xbc\x66\x65\x60\x60\
|
||||
\x02\x3a\xe0\x17\x13\xd0\x72\x6e\x86\xe7\x0f\x3e\x30\xdc\x94\x8e\
|
||||
\x67\x70\x92\x96\x61\x90\x94\x0c\xfd\xff\xfc\xf9\x6a\xac\x8e\x00\
|
||||
\x08\x20\x16\x50\x90\xfe\x05\x5a\xfc\xfb\x0f\x84\x86\x01\x6e\x2e\
|
||||
\x76\x06\x23\x1d\x79\x06\x41\x3e\x2e\x06\x01\x7e\x2e\xac\xae\xff\
|
||||
\x79\xa1\x89\x81\x53\x03\x68\xee\x6f\x90\xa5\x40\x35\x4c\x7f\x18\
|
||||
\x18\xde\x0b\x81\xe5\x6e\x7f\x93\x63\xf8\xa8\xa0\xc3\xf0\xeb\xf9\
|
||||
\x2b\x06\x16\x16\x26\x9c\x51\x00\x10\x40\x2c\xe0\xf8\x06\x5a\x0c\
|
||||
\xc6\x40\x36\x0c\xb0\xb1\xb2\x30\x48\x8a\x09\x30\x08\x80\x1c\xc0\
|
||||
\x87\xe9\x80\xff\xbf\x3e\x30\x30\xb1\x6c\x63\x60\x64\xe7\x64\x60\
|
||||
\x78\x0e\xc4\x4c\xc0\xe4\xf4\x8b\x1d\x18\x0d\xfc\x0c\xef\x5f\x7f\
|
||||
\x66\xb8\xcd\xe9\x0a\xf6\xd4\x87\x0f\x9f\x18\xfe\xfd\xfb\x87\xd3\
|
||||
\x01\x00\x01\xc4\x02\x4a\x48\xa0\xb8\x07\x87\x04\x92\x42\x09\x51\
|
||||
\x7e\xa0\x03\xf8\xa1\x0e\xe0\xc6\xf4\xfd\xc5\x09\x0c\xac\xd2\x40\
|
||||
\xc6\x1f\x5e\xa0\xa5\xdc\x10\xdf\x7f\x06\xb2\x99\xd9\x18\x9e\xbd\
|
||||
\xe5\x66\x78\xa9\xec\xc4\xf0\x09\x68\xf9\xf7\x6f\x3f\x80\x0e\xc0\
|
||||
\x5d\xd6\x00\x04\x10\x38\x04\xfe\xfe\x01\x85\x00\x6a\x14\x04\xba\
|
||||
\x19\x33\xe8\x6b\xca\x31\xf0\x00\xa3\x82\x87\x9b\x03\xc3\xf7\xff\
|
||||
\x3f\x2f\x60\x60\x56\x01\x5a\xf8\x9a\x19\x68\x39\x10\xff\x65\x63\
|
||||
\x60\xf8\x26\x08\x4c\x4f\xdf\x19\x04\xdd\x8b\x19\x3e\x9c\xf9\xc4\
|
||||
\xf0\xed\xf3\x57\x86\x9f\xbf\x7e\x33\xe0\x2b\xec\x00\x02\x08\x9c\
|
||||
\x08\x41\x96\xc3\xa2\x02\x06\xea\xf2\xfc\x70\x6a\xfa\x73\x7f\x03\
|
||||
\x03\xbb\x1a\xd0\xf2\xff\x40\x8b\xbf\x82\x12\x1f\x50\xdf\x27\x50\
|
||||
\x1a\xe0\x60\x78\x78\xf7\x0d\x03\xbf\xbf\x1f\xc3\x97\x7d\x6b\x18\
|
||||
\x40\x66\xff\x06\x3a\x00\x5f\x14\x00\x04\x10\xcb\x1f\x70\x22\xfc\
|
||||
\x0f\x54\xfc\x0f\x1c\x02\xb7\x1f\xbc\x04\x07\xd9\x3f\x50\x41\x01\
|
||||
\xa5\x41\x06\x80\x3c\x01\x11\xff\xc7\xa0\xfa\x7c\x22\x03\x9f\x19\
|
||||
\x30\xb7\xbc\x87\xfa\x8c\x09\x98\x76\xbe\x09\x31\xfc\xf8\xfe\x95\
|
||||
\xe1\x16\xab\x25\xc3\x9b\x7d\xe7\x19\x7e\xfd\xfa\x03\x2e\x37\x7e\
|
||||
\x11\x08\x01\x80\x00\x62\x81\xc5\x3d\x38\x2a\x80\xf4\xf5\x3b\xcf\
|
||||
\x51\xf8\x7f\xa1\x09\x14\x46\x2b\xfc\xda\xc6\xa0\x6f\x09\x4c\x74\
|
||||
\x8c\x40\x1f\x7f\x81\x59\xce\x06\xf6\xfd\xdd\xeb\x0f\x18\x76\xfd\
|
||||
\xf6\x66\xf8\x76\xfa\x06\xc3\x1f\x50\xc1\x06\x72\xc0\xef\xdf\x78\
|
||||
\xd3\x00\x40\x00\x41\xa2\x00\x1c\xfc\x7f\xe1\x85\x11\xcc\x42\x88\
|
||||
\xa5\x90\x10\x82\xa5\x11\x15\x81\xf3\x0c\x2c\x12\xc0\x42\xe9\xcb\
|
||||
\x1f\x50\x49\x00\x49\x7c\xdf\x84\x81\xf2\xbf\x18\x8e\xbd\x94\x64\
|
||||
\xf8\xca\xc7\x0a\xb4\xf8\x37\xd8\xf7\x90\x92\x13\x7f\x08\x00\x04\
|
||||
\x10\x24\x0a\x40\xb9\x00\x1c\x05\x7f\x31\x7c\x8c\x4c\x8b\xfd\x3d\
|
||||
\xc7\x20\xab\x0a\x32\x0c\xe4\xfb\xdf\x10\xcb\xbf\xf3\x82\x43\xe3\
|
||||
\xd1\x85\x2b\x0c\x17\x39\xfc\xc0\x3e\x06\x5b\x0c\xf5\xd8\x6f\x60\
|
||||
\x54\xa0\x3b\x80\x91\xd1\x90\x13\x14\x76\xff\xff\x9f\xff\x0a\x10\
|
||||
\x40\x2c\xbf\x61\xe5\x00\xb4\x20\x12\x16\xe4\x01\xc7\xf9\xdf\x7f\
|
||||
\xff\xe1\xf4\x2f\x60\x49\xf9\xe3\xc7\x2f\x06\xd3\x3f\x9b\x18\x58\
|
||||
\xe5\x0c\x81\x96\xfe\x02\x26\x40\x60\xe1\xc2\x0c\xcc\xfb\x7f\xf8\
|
||||
\x18\x18\x58\x98\x19\x4e\x3d\x11\x62\xe0\x96\x91\x67\x60\x07\x59\
|
||||
\x0a\xb4\xfc\xc1\x93\x57\xe0\x68\xf8\x05\x0d\x01\xa0\xa5\xcc\x10\
|
||||
\x97\x83\x31\x13\xd4\x21\xac\x00\x01\x04\x29\x07\xa0\x41\x0d\x8a\
|
||||
\x02\x17\x6b\x2d\xb8\x4b\x41\xe2\xdf\x80\x45\xf4\xcf\x9f\xbf\x80\
|
||||
\xc5\xee\x7d\x06\xa1\xaf\x82\x10\xfd\xdf\xff\x43\x8c\xf8\x0d\x34\
|
||||
\xf3\x3f\x2f\xc3\xf3\x2b\x17\x18\xe4\x83\xcb\x19\x64\x79\x25\xc0\
|
||||
\x66\x80\x3c\xd3\x33\x6b\x3d\x98\xfe\xf5\xeb\x17\xd0\x1c\x50\x74\
|
||||
\x31\x88\x61\x89\x01\x4e\x80\x00\x62\x81\xf9\x1c\xbd\x20\xfa\x09\
|
||||
\xf4\xf5\x37\x60\x21\x02\xa9\x19\xff\x31\x70\x3d\x9d\xcd\xc0\x62\
|
||||
\x6c\x01\x2c\xed\x7e\x02\x7d\xfd\x1b\x92\xf7\xff\xf0\x00\x7d\xcf\
|
||||
\xc2\xf0\xe0\x01\xd0\x13\x7a\x40\xcb\x7f\x43\xb3\x33\x10\xff\xfc\
|
||||
\xf1\x13\x6c\xc6\x8f\xef\x3f\xf0\xa6\x01\x80\x00\x02\xe7\x82\x3f\
|
||||
\x48\xf1\x0c\x52\xfc\xf5\xeb\x0f\x70\xf6\x81\xf9\x06\x84\x39\x19\
|
||||
\xaf\x03\x95\xab\x01\x7d\xff\x07\x9c\xe2\x19\x40\x29\xfb\x3f\x1f\
|
||||
\xc3\xf3\x0b\xa7\x18\x7e\xe9\x46\x30\xfc\xfb\x0d\xc9\x72\x5f\xbf\
|
||||
\x7e\x07\xe3\xef\x40\x8b\x61\xe5\x0b\x3e\x07\x00\x04\x10\x22\x0a\
|
||||
\xa0\x16\x7d\xf9\xf2\x9d\xe1\xf4\xe9\xc7\x90\x1c\x01\x4e\x94\x90\
|
||||
\x10\x72\x15\x50\x65\x60\xfb\x07\x2c\x72\xff\x7c\x05\x3a\x00\x58\
|
||||
\xe6\xff\x06\x46\x05\x0b\x2b\xc3\xbd\xc7\xff\x18\x2e\x8b\x4a\x32\
|
||||
\x7c\x7f\x71\x1f\xe8\xe3\x9f\x60\xf5\x32\x32\x82\xe0\x74\xf0\x0f\
|
||||
\xda\xae\xc0\xe7\x00\x80\x00\x62\x81\xd5\x82\x20\xfa\x1b\xd0\xe7\
|
||||
\x3f\x7e\xfc\x66\x90\x93\xe3\x87\x26\xca\xbf\xf0\x28\xf8\x0d\xaa\
|
||||
\xe3\x7f\xdb\x30\x30\xb0\xdf\x05\x46\xc3\x5d\x70\x5a\x78\x7f\xff\
|
||||
\x3a\xc3\x73\x06\x25\x06\x2e\xa0\x5b\xd8\xd9\xd9\x81\xea\x59\xe0\
|
||||
\x8d\x99\xbf\xe0\x28\x05\x95\xb2\x38\x1d\x00\xaa\xf9\xbe\x03\x04\
|
||||
\x10\x0b\x28\xa5\x82\x82\xff\xfb\xf7\x9f\x0c\xdf\x40\xc1\x06\xd4\
|
||||
\xfc\xe1\xc3\x37\x78\xa8\x80\x1c\xc1\xfa\xe6\x24\x03\xa3\x28\x30\
|
||||
\xef\x33\x02\x8b\x5d\x36\x0d\x30\xfe\xfc\xe6\x3a\xc3\xb1\xad\xab\
|
||||
\x19\x5e\xe9\x64\x33\xfc\xf9\xf2\x13\x1e\x52\x20\x9a\x87\x87\x0d\
|
||||
\x6c\xf1\x5f\x70\x3d\x83\x11\x05\xc0\x2c\xc4\xf0\x0d\x98\x05\xbf\
|
||||
\x83\x38\x00\x01\x04\x0e\x01\x50\x70\x7d\xf9\xf2\x0d\xdc\xc4\x02\
|
||||
\xa5\x89\x0f\x1f\xbe\xa3\x18\xc8\xf6\x11\xd8\x58\x91\x16\x87\x9b\
|
||||
\xf0\xf9\xc1\x75\x86\xbd\xb3\xe6\x30\xdc\x51\x4a\x63\xf8\xfb\xf9\
|
||||
\x27\x52\x54\xfd\x07\xd3\xec\xec\xcc\xe0\x2c\xf8\xf7\xff\x5f\xe4\
|
||||
\x10\x00\x59\xf8\x15\x68\xf1\x6f\x64\xd7\x00\x04\x10\x38\x11\x82\
|
||||
\xaa\xcc\x9f\xc0\xec\x02\x4a\xc5\xa0\x32\x5c\x56\x96\x0f\x9e\x26\
|
||||
\x40\xf8\xdf\x1f\x2e\x86\x7d\x07\xae\x32\xe8\xb1\x28\x32\x70\xbd\
|
||||
\xb8\xc8\x70\xf9\xd8\x59\x86\x2f\x96\x59\x0c\xa2\xd0\xac\x0b\x0b\
|
||||
\x29\x78\xe9\x09\xd2\x07\x0c\xfe\xff\xa0\x3a\x04\x9c\xb3\x18\x81\
|
||||
\x8e\x38\xff\x01\x5b\x3c\x00\x04\x10\x0b\xa8\xb6\xfa\x01\xcc\x32\
|
||||
\xbf\x7e\xfe\x81\x36\x36\xff\x30\x5c\xbc\xf8\x1c\x6c\xe0\x3f\x68\
|
||||
\x9d\xc0\xfe\xfa\x2d\xc3\xdf\xef\xbf\x19\xce\xae\x98\xc3\xf0\xf9\
|
||||
\x07\x0f\xc3\x4b\x31\x37\x86\x3f\xb7\x5f\x43\x0a\x2a\xa8\x3a\xe4\
|
||||
\x10\x90\x91\x11\x00\xe6\x10\xa0\xa5\xa0\xc2\xfa\x1f\x28\xaa\x71\
|
||||
\x27\x42\x80\x00\x62\x01\xd5\xd7\xbf\xc1\x3e\xff\x0d\xa9\x40\x80\
|
||||
\x58\x5a\x9a\x17\x25\x01\xfe\xfb\xc9\xc9\xf0\xe3\xfa\x09\x86\x5f\
|
||||
\x52\x96\x0c\xff\x55\x1c\x19\x44\xfe\x21\x4a\xce\xbf\x28\x59\x8d\
|
||||
\x11\x58\x2c\xb0\x30\xb0\xb2\x32\x81\x13\x20\xac\x80\xc3\x97\x0b\
|
||||
\x00\x02\x08\x9c\x0d\xff\x40\xf3\x30\xac\xd9\xcd\xc6\xc6\x04\x64\
|
||||
\x83\x8a\x4f\x08\xfe\x23\x24\x0d\x2c\x84\xa2\x18\x7e\x89\x68\x33\
|
||||
\xf0\x20\x65\x4f\x70\x81\x03\x2c\x25\x41\x0d\x57\x26\x60\xc1\x04\
|
||||
\x0b\x7e\x48\xd9\xf2\x17\x9c\x0d\xff\x82\xb3\x21\x33\x4e\x07\x00\
|
||||
\x04\x10\xcb\x2f\x60\xb9\xfe\xe5\xed\x7b\x86\x4f\xc0\xc6\x23\x28\
|
||||
\x31\xde\xbd\x7b\x07\x29\x07\xc0\x7c\x08\xa4\x99\x44\x19\xfe\xbe\
|
||||
\x7e\x8e\x24\x8e\x54\x79\xa1\xab\x05\xd2\x5f\x5f\xbd\x00\x57\xc3\
|
||||
\x7f\x80\x65\xc3\xff\xff\x5c\x38\x1d\x00\x10\x40\x8c\xa0\xe0\x31\
|
||||
\x30\x48\xfd\xff\xf1\xe3\x17\x70\x02\x14\x10\xe0\x82\x37\xcd\x10\
|
||||
\x3d\x18\x06\x78\x30\xa2\xf2\x11\x6c\x74\xb1\x97\x2f\xdf\x40\xd5\
|
||||
\x83\x3a\x3a\x07\x70\xf6\x0b\x00\x02\x88\x91\x5a\x9d\x53\x72\x01\
|
||||
\x40\x00\x31\x31\x0c\x30\x00\x08\xa0\x01\x77\x00\x40\x80\x01\x00\
|
||||
\x7b\xd6\x28\xba\xe5\x29\x08\xf0\x00\x00\x00\x00\x49\x45\x4e\x44\
|
||||
\xae\x42\x60\x82\
|
||||
\x00\x00\x05\x44\
|
||||
\x89\
|
||||
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
|
||||
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
|
||||
\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\
|
||||
\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
|
||||
\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\
|
||||
\x79\x71\xc9\x65\x3c\x00\x00\x04\xd6\x49\x44\x41\x54\x78\xda\x62\
|
||||
\xfc\xff\xff\x3f\xc3\x40\x02\x80\x00\x62\x62\x18\x60\x00\x10\x40\
|
||||
\x03\xee\x00\x80\x00\x62\x41\x17\x58\xb7\xfe\xc8\xff\xdf\xbf\xff\
|
||||
\x30\xfc\xfe\xf5\x97\x81\x91\x91\x81\xe1\xcf\x9f\xbf\x40\x0c\xe4\
|
||||
\xff\x46\xd0\xa8\xec\x3f\x60\x35\x08\x1a\x55\x0c\xc4\x7f\xf5\xe6\
|
||||
\x23\xc3\xfb\x77\x9f\x19\x2e\x9c\x9f\xc9\x88\x6e\x1f\x40\x00\xa1\
|
||||
\x38\x60\xfd\xfa\xa3\xff\x6d\xed\xf5\x81\x9a\xff\x31\xfc\xfd\xf7\
|
||||
\x8f\x41\x46\x42\x10\x2c\x7e\xf9\xe6\x13\x14\x4d\xba\xea\x32\x24\
|
||||
\xf9\x72\xfb\xc1\xcb\x0c\x7f\x7e\xfd\x66\x70\x72\x2e\xf9\xbf\x6f\
|
||||
\x6f\x0f\x8a\x23\x00\x02\x08\xc5\x01\xbf\x81\xbe\xfa\xf1\xf3\x37\
|
||||
\xc3\xd7\x6f\x3f\x19\xfe\xfc\x45\x38\xc0\xd4\xbf\x91\x41\x52\x54\
|
||||
\x80\x81\x83\x83\x95\x81\x83\x9d\x95\xe1\xfc\x96\x46\x92\x1c\x70\
|
||||
\xe7\xe1\x2b\x86\xbf\x7f\xff\x32\x38\xb9\x9a\x30\x48\x4a\x86\xfe\
|
||||
\x7f\xfe\x7c\x35\xdc\x11\x00\x01\x84\xea\x00\x60\x70\xfd\x05\x5a\
|
||||
\xfc\xfb\x0f\x84\x86\x01\x6e\x2e\x76\x06\x23\x1d\x79\x06\x41\x3e\
|
||||
\x2e\x06\x01\x7e\x2e\x92\xe3\xf9\x0f\xd4\xbc\x5f\xbf\x7e\x31\xb0\
|
||||
\xb0\xa0\x26\x3b\x80\x00\x62\x41\x57\x08\xf2\x39\x18\x03\xd9\x30\
|
||||
\xc0\xc6\xca\xc2\x20\x29\x26\xc0\x20\x00\x72\x00\x1f\x79\x0e\x00\
|
||||
\x99\xf9\xe1\xc3\x27\x86\x7f\xff\xfe\xa1\xc8\x01\x04\x10\x5a\x08\
|
||||
\xfc\x01\xc7\x3d\x38\x24\x90\x14\x4a\x88\xf2\x03\x1d\xc0\x0f\x75\
|
||||
\x00\x37\xc9\x0e\x00\x85\xe8\xa7\x8f\x9f\x19\xbe\x7f\xfb\x01\x74\
|
||||
\x00\x6a\xb9\x03\x10\x40\x18\x21\xf0\xf7\x0f\x28\x04\x50\xa3\x20\
|
||||
\xd0\xcd\x98\x41\x5f\x53\x8e\x81\x07\x18\x15\x3c\xdc\x1c\x24\x3b\
|
||||
\x00\xe4\xf3\x6f\x9f\xbf\x32\xfc\x04\x26\x44\xf4\x82\x0f\x20\x80\
|
||||
\x30\x12\x21\xc8\x72\x58\x90\xc1\x40\x5d\x9e\x1f\x59\x79\x1c\x14\
|
||||
\xdc\xaf\x5e\x7d\x60\xf8\xf2\xe9\x0b\xd8\xec\xdf\x40\x07\xa0\x47\
|
||||
\x01\x40\x00\xa1\x86\x00\x38\x11\xfe\x07\x2a\xfe\x07\x0e\x81\xdb\
|
||||
\x0f\x5e\x82\x83\xec\x1f\xd0\xd5\xff\xa1\x34\xc8\x00\x90\x27\x20\
|
||||
\xe2\xff\xc0\x3e\xfa\x07\x97\xfb\x0f\xe7\xff\xfe\xfd\x9b\xe1\xcd\
|
||||
\xeb\x0f\x0c\x5f\xbf\xfe\x00\x26\xbe\x3f\xe0\x72\xe3\x17\x96\x10\
|
||||
\x00\x08\x20\xcc\x5c\xf0\x0f\x92\x00\x41\xf4\xf5\x3b\xcf\x51\xf8\
|
||||
\x7f\xa1\x09\x14\x99\x86\xb0\x21\x0e\x07\xd1\xa0\x74\xf4\xf9\xd3\
|
||||
\x57\x86\xaf\x5f\xbe\x22\x0a\x30\x50\x81\x04\x72\xc0\xef\xdf\x18\
|
||||
\x69\x00\x20\x80\x30\xa3\x00\x1c\xfc\x7f\xe1\x85\x11\x2e\x8b\xfe\
|
||||
\xa2\x39\x04\x14\xbf\x5f\xbf\x7c\x63\xf8\xf6\xf5\x1b\xb4\x24\x84\
|
||||
\x94\xa6\x10\x33\xa1\xfc\xdf\x98\x21\x00\x10\x40\x98\x51\x00\xca\
|
||||
\x05\xe0\x28\xf8\x8b\xd5\xc7\x7f\x90\x1c\xf3\xf3\xe7\x2f\x30\x06\
|
||||
\xa5\xee\x9f\xc0\x02\x0c\x6e\x31\x88\xfe\x8d\xb0\x1c\xe6\xb1\xdf\
|
||||
\xc0\xa8\x40\x77\x00\x40\x00\xb1\xa0\x67\x17\x58\x19\x00\xb2\x44\
|
||||
\x58\x90\x07\x1c\xe7\x7f\xff\xfd\x87\xd3\xbf\x80\x16\xfd\xf8\x01\
|
||||
\xb4\xf4\xfb\x0f\x06\x56\x46\x56\x06\x76\x66\x46\x06\x2e\x56\x66\
|
||||
\x88\x25\xbf\xff\x22\xd5\x0b\x50\x4b\x81\xf4\x83\x27\xaf\xc0\xd1\
|
||||
\xf0\x0b\x4b\x08\x00\x04\x10\x66\x39\x00\xf5\x1d\x28\x0a\x5c\xac\
|
||||
\xb5\xe0\x72\x20\xf1\x6f\xc0\x22\x1a\xe4\x63\x48\x05\x05\x51\x03\
|
||||
\x71\xec\x5f\x24\xb1\xbf\x18\xf2\x3d\xb3\xd6\x43\x1d\x86\x99\x0b\
|
||||
\x00\x02\x88\x05\x5b\x91\x89\x5e\x10\x81\x82\xf7\x1b\x30\x98\x91\
|
||||
\x0d\x85\xe1\xbf\x7f\xff\x42\x8b\xf0\xbf\x58\xe5\x91\x6b\x4a\x50\
|
||||
\x28\xa0\x87\x00\x40\x00\x61\xe4\x82\x3f\x48\xf1\x0c\x52\x0c\xc9\
|
||||
\x46\xbf\xb1\x1a\x8c\xea\x10\xdc\xf2\x60\x07\xfc\x85\x44\x0b\xba\
|
||||
\x03\x00\x02\x08\x7b\x14\x40\x35\x7e\xf9\xf2\x9d\xe1\xf4\xe9\xc7\
|
||||
\x90\x1c\xf1\xf7\x2f\x3c\x61\xa2\xd2\x08\xcb\xb1\xc9\xc9\xcb\x0b\
|
||||
\x01\xd3\xc1\x6f\x60\x09\x0b\x49\x0f\xe8\x0e\x00\x08\x20\x8c\x44\
|
||||
\x08\xab\x0d\xbf\x01\x7d\xfe\xe3\xc7\x6f\x06\x39\x39\x7e\xb4\x78\
|
||||
\xfe\x87\x16\xe7\xff\x30\xd2\x00\xb2\x27\x60\x39\xe2\x2f\x8e\x10\
|
||||
\x00\x08\x20\xb4\x6c\xf8\x07\x1c\xfc\xdf\xbf\xff\x64\xf8\xf6\xfd\
|
||||
\x07\x58\xc3\x87\x0f\xdf\x90\x7c\x88\x6a\x21\x2e\x3e\x8c\x0d\xc2\
|
||||
\xbc\xbc\xec\x40\xfe\x6f\x78\xcb\x0a\xdd\x01\x00\x01\x84\x11\x02\
|
||||
\xa0\x60\xfa\xf2\xe5\x1b\xbc\x39\xf5\xe1\xc3\x77\x94\x60\x45\x0e\
|
||||
\x6a\xe4\xa8\x41\x15\x47\xb0\x39\x38\x98\xa1\xb5\x2c\x76\x07\x00\
|
||||
\x04\x10\x46\x22\x04\x17\x2a\xc0\x86\x03\x28\xd8\x40\x65\xb8\xac\
|
||||
\x2c\x1f\xd6\xac\x85\x9e\x13\x70\x25\x4a\x48\xc2\xfe\xc3\xf0\x0f\
|
||||
\xe4\x50\x2c\x0e\x00\x08\x20\x54\x07\xfc\x02\x15\x32\x3f\x81\x85\
|
||||
\xcd\x1f\x78\x61\x72\xf1\xe2\x73\xb0\x05\xff\xfe\x21\x07\xed\x3f\
|
||||
\xb4\x50\x41\x84\x04\xb8\xc0\x42\x12\x93\x96\xe6\x07\x27\x40\x50\
|
||||
\x1a\x00\x61\x06\x06\x54\x07\x00\x04\x10\x8a\x03\x40\xe5\xf9\x6f\
|
||||
\xb0\xcf\x7f\x43\x2a\x10\x20\x96\x96\xe6\xc5\xc8\xe3\xc8\x3e\x46\
|
||||
\x4e\x70\xc8\xc1\x8f\x28\x23\xfe\x80\xd3\x00\xac\x80\x43\x0f\x01\
|
||||
\x80\x00\xc2\xc8\x86\xe0\x22\x13\x9c\xef\x21\x69\x80\x8d\x8d\x09\
|
||||
\xc8\xfe\x0f\x6c\xa2\xc3\x30\x23\x10\x33\x41\x7d\x02\x11\x63\x60\
|
||||
\x60\x04\x63\x90\x1c\x8c\xfd\xff\x3f\x04\x43\xa2\x00\x18\x32\x7f\
|
||||
\x60\x51\xc0\x8c\xe2\x00\x80\x00\x42\x71\xc0\xaf\xef\xbf\x18\xbe\
|
||||
\xbc\x7d\xcf\xf0\xe9\xf9\x2b\x70\x62\xbc\x7b\xf7\x0e\x46\x1e\xff\
|
||||
\xf3\xe7\x1f\x96\xc4\xf6\x0f\x6b\x79\x00\x8b\x86\xaf\xaf\x5e\x80\
|
||||
\xab\xe1\x3f\x3f\x7f\x02\x1d\x80\xda\xa6\x04\x08\x20\x46\xf4\x20\
|
||||
\x31\x30\x48\xfd\xff\xf1\xe3\x17\x70\x02\x14\x10\xe0\x82\x37\xcd\
|
||||
\x40\xea\x20\x98\x01\x1e\x8c\xa8\x7c\x04\x1b\x5d\xec\xe5\xcb\x37\
|
||||
\x50\xf5\xa0\xe2\xfe\x00\x4a\xbf\x00\x20\x80\x18\x07\xba\x73\x0a\
|
||||
\x10\x40\x03\xde\x37\x04\x08\xa0\x01\x77\x00\x40\x80\x01\x00\x80\
|
||||
\x70\xef\x0c\xb7\x02\x84\x52\x00\x00\x00\x00\x49\x45\x4e\x44\xae\
|
||||
\x42\x60\x82\
|
||||
\x00\x00\x07\x7b\
|
||||
\x89\
|
||||
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
|
||||
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
|
||||
\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
|
||||
\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
|
||||
\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\
|
||||
\x67\x9b\xee\x3c\x1a\x00\x00\x07\x0d\x49\x44\x41\x54\x58\x85\xc5\
|
||||
\x97\x49\x6c\x1c\x65\x16\xc7\x7f\xef\xab\xea\xcd\x6e\xdb\xe9\xb6\
|
||||
\xe3\x71\x1c\xdb\x31\x31\x6d\x07\x05\xc5\x09\x4b\x34\xc9\x44\x80\
|
||||
\x66\xc4\xa2\x44\x42\x39\x70\xe4\x80\x10\x20\x84\x10\x52\x0e\x13\
|
||||
\x0e\x20\x61\x09\x44\x16\x89\x1c\xb8\xc0\x81\x2b\x42\x82\x03\x17\
|
||||
\x92\x81\x64\x32\x08\x65\x63\x11\x0e\x26\x13\x5b\x4a\x3c\xce\x82\
|
||||
\xdb\x59\xec\x76\xa7\xbb\xdd\x5d\xd5\xdd\xb5\xcc\xa1\xaa\xab\x17\
|
||||
\x5b\x73\x8b\xe6\x93\x4a\x5f\x2d\xaf\xde\xff\x5f\xff\xf7\xbe\xf7\
|
||||
\xbd\x12\xd7\x75\x39\x28\xb2\x17\x98\x00\xc6\x81\x30\xf7\x77\x54\
|
||||
\x80\x29\x60\xe2\xa8\xeb\x9e\x90\xbf\xc3\xde\xae\x58\xec\xf8\xdf\
|
||||
\x1e\x7a\x88\x1d\x43\x43\x44\x74\xfd\xbe\xa2\x97\x2d\x8b\x8b\x37\
|
||||
\x6f\x72\x7a\x66\x86\x9c\x61\xec\xd3\x81\x89\xbf\x6e\xd9\xc2\xf8\
|
||||
\xc6\x8d\x5c\x99\x9f\x67\x3e\x93\xa1\x6a\x59\x6b\xbe\x2c\x22\x68\
|
||||
\x22\x28\xa5\xd0\xfc\x43\x29\x85\x26\x12\x9c\x2b\xa5\x50\xbe\x4d\
|
||||
\xeb\xac\x2b\x45\x22\x1e\xe7\xd1\xa1\x21\x5c\xd7\xe5\xeb\x8b\x17\
|
||||
\x27\x74\x60\x7c\x7c\x70\x90\xab\xe9\x34\xf9\xe1\x61\x52\xaf\xbe\
|
||||
\x8a\x16\x89\xac\x85\x8e\x00\x4a\x04\x44\x50\xfe\x3d\x25\x82\xf8\
|
||||
\xcf\xa4\xe5\x9c\xc6\xfb\x00\xd5\x2a\xa5\x33\x67\xc8\xcd\xce\x32\
|
||||
\x3e\x38\xc8\xd7\x17\x2f\x8e\xeb\x40\x38\xac\x69\xa4\x33\x19\x52\
|
||||
\xaf\xbd\x86\x1e\x8f\xaf\xc6\x6e\x70\x12\xea\xea\x22\xdc\xdd\x4d\
|
||||
\x28\x91\x40\xeb\xea\xc2\xb2\x6d\xcc\x4c\x06\x29\x14\xd0\x56\x56\
|
||||
\x70\x56\x56\x02\xb5\xa4\x75\x0e\x85\x88\x3f\xf1\x04\xf9\xcb\x97\
|
||||
\x59\xe7\xe1\x84\x75\x00\xd7\x75\xa9\xda\x36\xae\x6d\x63\xf9\x0e\
|
||||
\x5a\xc1\xe3\x23\x23\x24\x77\xed\x42\x8f\xc5\x56\x11\xec\xec\xef\
|
||||
\xaf\xc7\xb8\x58\xe4\xc6\xe9\xd3\x24\x0b\x05\x10\x09\xd4\x0b\x66\
|
||||
\xc7\x01\x11\x5c\xd7\x05\x20\x20\x00\x60\x15\x8b\x88\xa6\x35\xc7\
|
||||
\x3c\x16\xa3\xf7\xa9\xa7\xe8\x18\x1d\x5d\x33\x2f\x5a\x47\xa4\xbd\
|
||||
\x9d\xd1\xe7\x9f\xe7\xc6\xe4\x24\x32\x39\x49\xbb\x52\x75\x70\x11\
|
||||
\xc4\x71\x50\xad\x04\x1c\xff\xc2\x2e\x16\xc1\x27\x20\x40\x7c\x78\
|
||||
\x98\xfe\xfd\xfb\x09\x35\x84\xc5\xb1\x6d\x96\xe6\xe7\xb9\x33\x37\
|
||||
\xc7\xdd\xb9\x39\xda\x22\x11\x12\x43\x43\x74\x0f\x0f\xd3\x3d\x30\
|
||||
\x80\xf2\x01\x37\x3d\xf2\x08\xc5\xcd\x9b\xb9\xf6\xd5\x57\xf4\x57\
|
||||
\x2a\x01\x01\xd7\x71\x50\x4a\x05\x98\x1e\x01\xc7\x01\xa0\x9a\xcf\
|
||||
\x23\xa1\x10\x4a\x04\x3d\x1e\x5f\x05\x7e\xed\xb7\xdf\xf8\xd7\xa7\
|
||||
\x9f\xb2\x29\x14\x62\x7d\x3c\xce\x48\x2c\x86\x52\x0a\xb9\x71\x83\
|
||||
\xdc\xf7\xdf\x73\x2b\x12\xa1\x6f\xff\x7e\x7a\xb7\x6c\x01\xa0\x7d\
|
||||
\xdd\x3a\x1e\x78\xe1\x05\xa6\x3e\xfa\x88\x2d\x89\x84\xa7\x80\xeb\
|
||||
\xa2\x44\x02\x4c\x05\x60\xfb\x17\xb7\x4e\x9e\xa4\xba\xbc\x8c\x5d\
|
||||
\x2a\xd1\xbf\x6f\x5f\x00\x5e\x35\x4d\xfe\xf1\xf1\xc7\x9c\x3b\x72\
|
||||
\x84\x3f\xb7\xb7\xf3\x40\x7b\x3b\x1d\x80\x6b\x9a\xb8\x86\x81\x6b\
|
||||
\x18\x44\x2c\x8b\x64\xa9\x84\xf5\xc5\x17\x5c\xff\xf2\x4b\xaa\xe5\
|
||||
\xb2\x47\x22\x91\x60\xfd\x73\xcf\x91\xcb\x66\xc1\x34\x11\xd3\x44\
|
||||
\x44\x02\x4c\xd5\x14\x82\x5c\x8e\xa5\x1f\x7e\xa0\x63\x64\x84\x75\
|
||||
\xdb\xb7\x07\x5f\x7e\xea\x93\x4f\xa8\x5e\xb8\xc0\x63\x3d\x3d\x84\
|
||||
\x2c\xcb\x03\x35\x4d\x22\x03\x03\x44\x06\x07\x71\x0d\xc3\x73\xee\
|
||||
\xcf\x91\xc9\x49\xf2\xdf\x7c\x13\xbc\x9f\xda\xb3\x87\x74\x77\x37\
|
||||
\xf8\x64\x95\x48\x80\x19\x28\xa0\xc0\x93\xb3\x5a\x65\xe8\xc5\x17\
|
||||
\xeb\xb2\xff\xfa\x2b\x37\x4f\x9c\x60\x24\x16\xf3\x80\x4b\x25\x1c\
|
||||
\xc3\x20\xf9\xec\xb3\xf4\xbf\xf1\x06\x7d\xaf\xbf\x4e\x61\xd7\x2e\
|
||||
\x8c\x5c\x0e\xd7\x34\xa1\x54\x02\xc3\xc0\x3a\x73\x86\xc2\xcc\x4c\
|
||||
\xe0\xe7\xd1\x97\x5f\xe6\xf2\xfc\xbc\xa7\x40\x83\xea\xaa\x96\x03\
|
||||
\xb5\x8a\xd6\x91\x4a\x11\x4e\x26\x83\x84\x3b\xfe\xc1\x07\xec\xe8\
|
||||
\xec\xf4\xd8\x97\x4a\x01\x89\xf8\xce\x9d\x81\xf3\x4d\x4f\x3e\xc9\
|
||||
\xd5\x3b\x77\xa0\x54\xf2\x48\x18\x06\x18\x06\xe5\xcf\x3f\xc7\xb5\
|
||||
\x6d\x00\x62\x5d\x5d\x64\xc3\x61\x9c\x4c\x06\x59\x95\x03\xae\x1b\
|
||||
\x94\xd3\x75\xdb\xb6\x05\x8e\xef\x5e\xb9\x42\x78\x66\x86\x68\x0b\
|
||||
\x38\xa6\x89\x34\x54\xcb\x70\x2c\x46\xae\x50\x80\x1a\xb8\x69\x82\
|
||||
\x69\xe2\xcc\xcf\x53\x4d\xa7\x03\xbb\xe8\x86\x0d\x54\xd3\x69\x94\
|
||||
\x08\x76\x63\x08\x1c\xc7\x09\x6a\x79\x57\x03\x81\xf4\xd4\x14\x5d\
|
||||
\x8e\x43\x35\x9d\xc6\x5a\x5a\xf2\xe4\xad\x81\x34\x0e\xd7\x85\x4a\
|
||||
\x05\xca\x65\xa4\x5c\x0e\x08\x88\x69\xe2\xcc\xcd\x05\x66\xbd\xa9\
|
||||
\x14\xf7\x2c\x6b\x0d\x05\x6a\x21\x50\x8a\x8e\x87\x1f\x0e\x5e\x58\
|
||||
\xf8\xfd\x77\x92\xa1\x90\xb7\xb6\x0d\x03\x7b\x79\x19\xf7\xde\x3d\
|
||||
\xdc\x62\xd1\x03\x6d\x1c\x95\x4a\xf0\xf5\x52\x2a\x41\x3e\x8f\x9b\
|
||||
\xcd\x62\x5d\xba\x14\x98\xfc\x69\xeb\x56\x32\xd5\x2a\x4a\xa9\x20\
|
||||
\x07\x74\x00\xdb\xb6\xd1\x94\x42\x6a\x55\xcb\x1f\x22\x42\x5c\xd7\
|
||||
\x83\xdd\x4c\x03\xc4\xb6\xbd\xaf\x6c\x19\x52\x2e\x23\x86\x51\xdf\
|
||||
\x90\xfc\x8d\xaa\xc5\x21\x2b\xb6\xed\x2d\x43\x3f\x37\x14\x80\xe5\
|
||||
\x87\x40\x53\x0a\x63\x7a\x3a\xb0\xdf\x38\x3e\x4e\xb1\x41\x9d\xc6\
|
||||
\xed\xb6\x75\x28\x1f\x50\x35\x80\x8b\x08\xa1\xb1\xb1\xc0\x66\xf1\
|
||||
\xf2\x65\x12\xe1\x30\x4a\x04\xab\x29\x04\xb6\x8d\xf8\xab\xa0\xd8\
|
||||
\x40\xa0\x7f\xdb\x36\x0a\xb5\xfc\x68\xd9\xdb\x57\x29\xb0\x06\xb8\
|
||||
\x12\x41\x4f\xa5\xea\x04\xa6\xa7\x59\x1f\x89\xac\x56\xc0\x76\x9c\
|
||||
\xa0\xd1\x30\x1a\xd6\xee\xfa\x54\x0a\xab\xaf\x6f\xcd\x06\xa3\x55\
|
||||
\x83\x46\xd0\xda\xa1\xf5\xf5\xa1\x86\x86\x02\x9b\xcc\xcc\x4c\x9d\
|
||||
\x40\x6b\x12\x8a\x2f\x6f\xe5\xfa\x75\x2a\xd9\xac\xf7\x50\xd3\x78\
|
||||
\xfc\xfd\xf7\x29\xf8\x3b\x58\x23\x89\x46\xa2\x77\x2e\x5d\x22\xa2\
|
||||
\x69\xcd\x21\x50\x8a\xb6\x03\x07\x82\xdd\xd5\xc8\x66\x51\xe9\x34\
|
||||
\xba\x52\xab\x0b\x91\x65\xdb\x75\xe7\x22\xa4\x8f\x1e\x0d\x9c\x0f\
|
||||
\xef\xde\x8d\xb1\x6f\x5f\xd0\xfd\xd4\xec\x4a\x9f\x7d\xc6\xad\x1f\
|
||||
\x7f\xe4\xe6\xf9\xf3\x9c\x3f\x76\x8c\x91\xb6\xb6\x26\xf0\xf0\xde\
|
||||
\xbd\xe8\xe3\xe3\x81\x9f\x73\x87\x0e\x31\x16\x8f\x7b\xca\x89\x60\
|
||||
\xf9\x21\xd0\x6b\x0a\xa8\x5a\x5f\x27\x42\xe9\xf4\x69\x16\x4f\x9d\
|
||||
\x62\xfd\xd3\x4f\x03\xb0\xfb\xed\xb7\xf9\xb7\xae\x93\x38\x79\x32\
|
||||
\x20\x61\xcf\xce\x22\xef\xbc\x43\xbe\x5a\x65\x4f\x28\x44\x5b\x34\
|
||||
\xda\x04\x1e\x79\xe5\x95\x00\x7c\xf6\xdb\x6f\x29\x9f\x3d\xcb\x58\
|
||||
\x6f\x6f\xd0\xa6\xad\x0a\x41\x6b\xa2\xe5\x8e\x1d\xc3\xcc\x64\x00\
|
||||
\x08\xc5\x62\xec\x78\xf7\x5d\xc2\x87\x0f\x53\xee\xe9\xa9\xc7\x59\
|
||||
\x29\xfa\xa2\x51\xda\x74\xdd\x6b\x5e\x36\x6c\xa0\xfd\xc3\x0f\x89\
|
||||
\xbd\xf9\x26\x2a\x1a\x05\xa0\xb4\xb8\xc8\xcf\x47\x8e\xf0\x97\x64\
|
||||
\xd2\x03\x6f\x21\xa0\xd7\x42\x10\x0d\x87\x9b\x62\xec\xe6\x72\xdc\
|
||||
\x7d\xef\x3d\x7a\x26\x26\x68\xeb\xe9\x01\xa0\x7f\xf7\x6e\x9c\x9d\
|
||||
\x3b\x29\x5e\xbb\x46\xe5\xca\x15\xe4\xea\x55\x22\x9a\x86\x36\x3a\
|
||||
\x8a\x4a\xa5\x08\x6d\xda\xd4\xd4\x51\x95\x16\x17\xf9\xe7\xc1\x83\
|
||||
\x6c\xd7\x34\xda\x43\xa1\x00\xdc\x6d\x0d\x41\x53\x0e\x34\xcc\xf6\
|
||||
\xd4\x14\x0b\x2f\xbd\x44\xe4\xad\xb7\x18\x7c\xe6\x19\x4f\x32\x5d\
|
||||
\xa7\x23\x95\x82\x86\xe5\xb5\xd6\xf8\xcf\x77\xdf\x31\x79\xf4\x28\
|
||||
\x8f\xe9\x3a\x03\x1d\x1d\xf5\xce\xd8\x6f\x4a\x56\x13\x80\xb5\x7b\
|
||||
\xf9\x95\x15\xd4\xe1\xc3\xcc\x9e\x3d\xcb\xc6\x03\x07\x88\x25\x12\
|
||||
\xff\x13\xd8\xc8\x66\x39\x77\xe8\x10\xea\xc2\x05\xf6\x26\x12\x84\
|
||||
\x35\xad\x19\xdc\xb7\x6b\x26\xe0\x38\xb8\xb0\xe6\x7a\xd7\x94\x42\
|
||||
\x44\xe8\x38\x7f\x9e\xc5\x73\xe7\xb8\xdd\xdb\x8b\x1a\x1d\x25\x36\
|
||||
\x36\x46\xf7\xd6\xad\x80\x57\xe1\x32\xd3\xd3\x54\x66\x67\x89\x2e\
|
||||
\x2c\x30\x12\x8b\x31\xd0\xdd\xdd\x14\xf3\xc6\x7f\x84\xaa\x6d\x07\
|
||||
\x95\x50\x07\x2a\xa6\x65\x85\x8b\xa6\x49\xb4\xb3\x73\x4d\xf0\x5a\
|
||||
\xd2\xb5\x29\xc5\x83\xcb\xcb\xc8\x4f\x3f\xa1\x7e\xf9\x05\xd3\x71\
|
||||
\xc8\x59\x16\x09\x4d\x63\x73\x38\xec\xad\xf1\x64\xb2\x0e\xb8\x06\
|
||||
\xb8\x88\x90\x5e\x5a\xc2\xf4\xfe\xbe\x2a\x3a\x30\x75\xbb\x50\x78\
|
||||
\x5c\xc3\xeb\x84\x93\x9d\x9d\x28\xd7\x45\xfc\xd6\xb9\x26\x59\x6d\
|
||||
\xef\x73\xfc\xbf\x22\xc7\x75\x89\x2a\x45\x9b\x5f\xd9\xc4\xbf\x27\
|
||||
\xae\x5b\x07\xac\x9d\xfb\xfe\x6c\xdb\x66\x7e\x71\x91\xab\x0b\x0b\
|
||||
\xdc\x2e\x14\x00\xa6\x74\x60\xe2\x66\x3e\x7f\xdc\x05\xca\xb6\xcd\
|
||||
\x82\x5f\x05\xef\xd7\xb0\x5d\x97\xc5\x52\x89\x3f\xf2\x79\x80\x09\
|
||||
\xf9\x7f\xff\x9e\xff\x17\xc5\xd6\x3d\x9a\xb0\xf3\x6b\xe8\x00\x00\
|
||||
\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
|
||||
\x00\x00\x09\xa3\
|
||||
\x89\
|
||||
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
|
||||
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
|
||||
\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\
|
||||
\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
|
||||
\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\
|
||||
\x79\x71\xc9\x65\x3c\x00\x00\x09\x35\x49\x44\x41\x54\x78\xda\x62\
|
||||
\xfc\xff\xff\x3f\xc3\x40\x02\x80\x00\x62\xa4\x44\x73\xe7\xb4\xa3\
|
||||
\x86\xcc\xcc\x2c\xe7\x4e\x1d\xdd\x2c\xbd\x6a\x51\xcb\x6b\xa0\xd0\
|
||||
\x6f\x52\xcd\x00\x08\x20\x26\x4a\x1c\xc0\xc4\xc4\xdc\xaf\xa2\x20\
|
||||
\xc8\xa0\xa0\xac\x9b\x0d\xe4\xf2\x03\x31\x33\xa9\x66\x00\x04\x10\
|
||||
\x93\xe5\x94\x27\x0f\x8c\x9a\x4e\x98\x03\xd9\x6c\xa4\x84\x48\xf7\
|
||||
\x8c\xe3\x85\x3a\xea\xa2\xf6\x1e\x0e\x4a\x0c\x82\xc2\x92\x49\x40\
|
||||
\x21\x41\x20\x66\x25\xd5\x01\x00\x01\x04\x0c\x81\xff\x8c\x6c\x82\
|
||||
\x92\x6b\xc4\x6d\xe3\x14\xcb\x1a\x57\xaa\xb6\x4f\x3e\x68\x04\x0d\
|
||||
\x19\x9c\x8e\xe9\x98\x72\x58\x91\x83\x9d\xb5\xde\xd1\x4a\x9e\x81\
|
||||
\x9d\x8d\x99\xc1\x40\x5b\x5a\x22\x22\xa1\xce\x11\x28\xc5\x45\x6a\
|
||||
\xb4\x02\x04\x10\xd3\x9f\xef\x9f\xa7\x0b\xf3\xb2\xcb\xc4\xa5\xd6\
|
||||
\xdc\x10\x15\x97\x3b\xcd\xc2\xca\xbe\xaf\xb8\x76\xa9\x0f\x50\x8e\
|
||||
\x1d\x97\x61\xcc\x2c\xac\xfd\x40\x9f\xf3\x83\x2c\xff\xf7\xef\x3f\
|
||||
\x03\x28\x1a\x94\xd4\x8c\x02\x80\x52\xdc\x40\xcc\x02\x52\x23\x97\
|
||||
\x7a\x24\x50\x36\xf9\xf0\x46\xe9\xf8\x3d\x53\x80\x5c\x0e\x5c\xd1\
|
||||
\x0d\x10\x40\xcc\x7c\x4a\x26\xb7\x19\x84\x94\x4a\x7c\x8d\x04\x19\
|
||||
\xbe\x3e\x7f\xc7\xce\xc8\xc8\xc8\xc1\xc9\xc5\x63\xff\xf1\xc3\xeb\
|
||||
\x2d\xcf\x1e\xdf\xfa\x04\x54\xf3\x17\x59\x43\xd7\xf4\xe3\x81\xf2\
|
||||
\x32\x02\xf5\xb6\x66\xb2\x0c\xa0\x0c\x04\x72\x80\x90\x00\x27\xc3\
|
||||
\xfd\xa7\x3f\x55\xd9\xd9\x79\x8e\xc5\xa5\xb5\xc4\x78\x04\xe7\xac\
|
||||
\x79\xfb\x8b\x39\x5e\x5a\x5a\x40\xfd\xc5\x9b\x9f\x66\x0c\x4c\x6c\
|
||||
\x3b\x7f\x3d\x3f\xfb\x06\xa8\xfd\x0f\xba\x03\x00\x02\x88\xf9\xcd\
|
||||
\xd9\x8d\x3f\xa4\x9c\xd3\xd4\x45\x45\xf8\x74\x04\xff\x7c\x63\xe0\
|
||||
\x60\x65\x62\xe0\xe4\x64\xe7\x95\x94\xd1\xd2\x3e\xb0\x6b\xc9\x66\
|
||||
\xa0\x9a\x9f\x40\xfc\x0f\xa4\xb8\x67\xe6\x49\x01\x0e\x76\x96\x03\
|
||||
\xc1\x9e\xea\x1c\xec\xec\x2c\x0c\xa0\x2c\x0c\x72\xc0\xdf\xbf\xff\
|
||||
\x80\xf8\x3f\x83\xbc\xb2\x76\x98\xbb\x83\x9a\x8d\xb4\x18\x0f\x07\
|
||||
\xeb\xd7\xcf\x0c\xd6\x56\x8a\x0c\x57\xef\x7f\x62\xf8\xfc\x83\xe5\
|
||||
\xff\xb7\xdb\x9b\x8e\x02\x8d\xf8\x01\x33\x0b\x06\x00\x02\x08\x14\
|
||||
\x2c\x7f\xff\xfe\xfc\xb6\xf1\xe4\xfd\x6f\x0c\x52\x2a\x12\x0c\x3f\
|
||||
\x7f\xfe\x61\xe0\xe7\x65\x67\xb0\xb3\xd2\x74\x28\xaa\x5d\x52\x0c\
|
||||
\x94\xe7\x81\x05\xdf\xff\xff\xff\x1a\xac\x8c\xa5\xf9\xf9\x80\xf2\
|
||||
\x30\xcb\x61\x0e\xd0\x50\x11\x66\xf8\xf2\xe5\x37\x83\x10\x3f\x07\
|
||||
\x83\x92\x2c\x3f\x03\xd0\x1f\x0c\x2f\xaf\xde\x63\x70\x34\x97\x66\
|
||||
\x60\xe4\x96\xf4\x06\x6a\xe7\xc3\x96\x48\x01\x02\x08\x9c\x6d\x9e\
|
||||
\xef\x9d\x79\x4b\xc8\x21\x3b\x51\x59\x86\x8f\x8f\xf3\xfb\x17\x06\
|
||||
\x36\x16\x26\x06\x61\x01\x0e\x06\x11\x51\x31\xeb\x7f\x4c\xfc\xc7\
|
||||
\xaf\x5e\x3c\xf4\xb8\x6b\xfa\x31\x1b\x79\x19\xc1\xe9\x2e\xb6\x0a\
|
||||
\x60\x8d\x30\xcb\x61\x18\x94\x1e\x9e\xbe\xfc\xc2\xc0\xc7\xcd\xc6\
|
||||
\xc0\xc1\xce\xcc\xf0\xf3\xf7\x3f\x86\xe7\xcf\x3f\x31\xc8\xaa\x49\
|
||||
\x32\x1c\xbd\xf0\x96\xe7\x3f\xb7\xe2\xa3\x9f\x8f\x0f\x5c\x81\x86\
|
||||
\x28\xbc\xf4\x03\x08\x20\x58\xbe\xfd\x2f\x6e\x97\x22\xfe\x8f\x99\
|
||||
\xdd\x5a\x89\xf7\x3f\xc3\xd7\x8f\xdf\x18\x7e\xfe\xfa\xcb\xe0\xe3\
|
||||
\xac\xc2\xf0\xe1\x07\x9f\x03\x0b\x2b\xcf\x41\x79\x25\x9d\x25\xfe\
|
||||
\xee\x6a\xfc\xdc\x5c\xac\x50\xdf\x33\x40\x7d\x0f\x71\xc0\x6f\xa0\
|
||||
\x85\x3c\x40\xcb\xaf\xde\x7a\xc3\x20\x27\xc5\xc7\x20\x08\x0c\x89\
|
||||
\xcb\x37\xdf\x30\x30\x03\x43\xe2\xe3\x7f\x36\x86\xc7\x2f\xff\x70\
|
||||
\xfd\xb8\xb3\x76\x2b\xd0\xae\x6f\xc8\xe9\x0a\x20\x80\x60\x29\xf3\
|
||||
\xdf\x8f\x37\x0f\xe6\x5f\x7c\xf0\x95\x81\x49\x48\x00\x1e\x3c\x8f\
|
||||
\x9f\x7d\x62\x08\xf2\xd4\x96\xb4\x76\x0c\xdb\x69\x6d\x22\x2b\x27\
|
||||
\x26\xcc\x85\xe4\xfb\x7f\x60\x1a\xe4\x18\x88\x83\xfe\x31\xc8\x48\
|
||||
\xf0\x30\x3c\x7f\xfd\x15\xe8\xf8\x3f\x0c\x1c\xc0\x10\x11\x11\xe2\
|
||||
\x64\xf8\xf6\xfa\x3d\x83\x83\x99\x14\x03\x30\xaf\xdb\xb0\x88\x1a\
|
||||
\x49\x43\x73\x17\x1c\x00\x04\x10\x3c\x6b\x5c\xeb\xf3\xbd\xf3\xf7\
|
||||
\xfb\x97\x1d\xd7\xdf\x81\xc2\x05\x12\x30\x77\x1e\xbc\x67\x00\x59\
|
||||
\x6a\x63\x2a\xcb\xfb\xe3\xd7\x5f\xac\x41\x8f\x8c\xbf\x7f\xff\xcd\
|
||||
\xa0\xaa\x28\xc4\xf0\xf0\xe9\x27\xb0\x83\x74\xd4\x44\x18\xfe\xfd\
|
||||
\xf9\xcb\x20\xcc\xfa\x17\x1c\x22\xec\xaa\x51\x61\xd0\xb2\x02\x5e\
|
||||
\x62\x02\x04\x10\x72\xde\xfc\xfb\xfb\xeb\x87\xc5\xc7\x6f\x7e\x62\
|
||||
\x10\x94\x15\x61\x78\xf5\xe6\x2b\xc3\xa7\x2f\xbf\xc0\x51\xa1\x0d\
|
||||
\x34\xe8\xea\xcd\xd7\xe0\x6c\x07\xf3\x31\x72\x22\x84\xe1\x1f\x3f\
|
||||
\x7e\x33\xe8\x6b\x8a\x32\xdc\x7e\xf0\x01\x1c\x45\x52\xa2\xdc\xe0\
|
||||
\xb4\xf1\xe9\xf1\x0b\x06\x67\x5b\x79\x60\x62\x54\x08\x47\x4f\x8c\
|
||||
\x00\x01\x84\xec\x80\xff\x57\x3b\x6d\xd7\xbc\x7e\xff\xed\xc9\xd3\
|
||||
\xbf\x40\xd7\x02\xb3\x19\x28\x47\x80\x2c\x06\xa5\x7a\x59\x60\xbc\
|
||||
\xde\x79\xf0\x0e\xc5\x42\x64\xc7\xc0\x30\x13\x30\x7d\xb1\xb2\x32\
|
||||
\x33\x7c\xf9\xfa\x0b\x58\x57\x30\x30\x28\x02\x73\xc4\xef\x2f\xdf\
|
||||
\x18\x4c\x75\x45\x41\x32\x12\x6c\x5a\x79\x28\x25\x26\x40\x00\xa1\
|
||||
\x97\x4e\x7f\xfe\x7c\xff\xb2\xec\xd4\xed\xcf\x0c\x4c\xdc\x90\xf8\
|
||||
\xbe\xf3\xf0\x03\x98\x06\x87\x02\x30\x81\xe1\x8b\x02\x10\xfe\x0a\
|
||||
\xb4\x18\xa4\xf6\xda\x9d\x77\xe0\x10\x53\x57\x14\x84\x04\xef\xdb\
|
||||
\x77\x0c\x96\x66\x32\x0c\x4c\xfc\x5a\x28\x25\x26\x40\x00\xa1\x3b\
|
||||
\xe0\xdf\xcf\xb7\x0f\xe7\x5f\xb8\xf3\x91\x81\x41\x80\x9f\x01\x16\
|
||||
\xef\xaf\xde\x7e\x03\x17\xb7\x4f\x9e\x7f\x66\xf8\xf4\xf9\x27\x5e\
|
||||
\x07\xfc\xfe\xfd\x97\x41\x51\x86\x0f\x9c\x25\x41\x7c\x2e\x0e\x16\
|
||||
\x70\x08\x7e\x7f\xf1\x9a\xc1\xca\x5c\x8e\xe1\x3f\xab\x88\x27\x93\
|
||||
\xa0\x21\x3c\x31\x02\x04\x10\x46\xf9\x7c\x6f\x4e\xd8\x9d\x3f\x3f\
|
||||
\xbf\xed\xb8\xfe\x16\x18\xa7\xd0\xcc\x72\xee\xf2\x0b\x30\x0d\xac\
|
||||
\xfd\x18\x6e\xdc\x7d\x8b\x35\xe8\x61\x51\x02\x09\xc6\x7f\x0c\x9c\
|
||||
\x40\x8b\x5f\xbe\xf9\x06\x4e\x8c\xa0\x50\x00\x25\x46\x59\x60\xec\
|
||||
\x0b\x09\x72\x32\x30\xca\x04\x45\x40\x43\x81\x19\x20\x80\xb0\x55\
|
||||
\x10\x7f\xff\x02\x13\xe3\xb1\x2b\x6f\x19\x84\x64\x44\x18\x3e\x02\
|
||||
\x7d\x0c\x4a\x88\x20\x6c\xa4\x23\x0e\xce\x19\xd8\x7c\x0e\x71\x08\
|
||||
\x30\x5c\x81\x85\xd8\x8b\x37\xdf\xc0\x06\x89\x02\xb3\x21\x48\x0c\
|
||||
\x14\x22\x20\xf0\xe3\xcd\x7b\x06\x17\x27\x15\x60\xd5\x24\x07\x4f\
|
||||
\x8c\x00\x01\x84\xcd\x01\xff\xef\xce\x70\x5f\xf3\xea\xed\xd7\x27\
|
||||
\xaf\xff\xb3\x83\x13\x22\x28\xd8\x41\x16\x83\x82\x92\x9f\x8f\x1d\
|
||||
\x5c\x3e\x60\x73\x04\x08\xf0\xf2\x71\x32\x1c\x3f\xf7\x94\xc1\x5c\
|
||||
\x5f\x1c\x51\x57\x00\x7d\xaf\xae\x24\xc4\xf0\xf3\xed\x7b\x06\x0b\
|
||||
\x63\x29\x60\x65\xc0\x2a\xc1\x20\x9f\x0e\x4e\x8c\x00\x01\x84\xab\
|
||||
\x45\xf4\xe7\xdf\x8f\x2f\xcb\xce\x00\x13\x23\x8f\x30\x1f\x38\x47\
|
||||
\x80\x12\x20\x08\x68\xa9\x8a\x30\x3c\x7b\xf5\x05\x23\xf8\x41\x80\
|
||||
\x87\x87\x9d\xe1\xdc\xd5\x57\x0c\x12\x22\x5c\xc0\xb8\x67\x85\xcb\
|
||||
\x83\x00\x48\x0c\xdc\x06\xfc\xfc\x11\x58\x49\x01\x8b\x73\x5e\x0d\
|
||||
\x70\x62\x04\x08\x20\x5c\x0e\xf8\xf7\xf3\xfd\x93\xf9\x47\x2f\x02\
|
||||
\xf3\x3e\x1f\x2f\xb8\x4c\x00\x67\x49\xa0\x23\x14\xe5\x04\x19\x9e\
|
||||
\xbd\xfc\xcc\xf0\xeb\xf7\x3f\x94\xe0\x67\x62\x62\x64\xf8\xf6\xf3\
|
||||
\x1f\xc3\xc3\xc7\x1f\x18\x74\x54\x85\xe1\x51\x02\x03\x12\x22\x9c\
|
||||
\xe0\x10\xfc\xf9\xea\x0d\x83\xb5\xad\x12\xb0\xfd\x25\xea\xc9\xc0\
|
||||
\xa7\x2f\x0d\x10\x40\x38\xdb\x84\xcf\x56\xc5\xdd\xf9\xf7\xeb\xc7\
|
||||
\xb1\xb3\x4f\x7e\x33\xb0\x09\xf2\x01\x0b\xa5\x9f\x0c\x27\xcf\x3f\
|
||||
\x05\x17\xb3\x8a\xb2\x02\x0c\x4f\x5e\x7c\x42\x09\x7a\x11\x11\x1e\
|
||||
\x86\xe3\x67\x1f\x33\x98\xe9\x89\xa3\x84\x0e\x2c\x64\x5e\x7f\xf8\
|
||||
\x09\xf6\x04\x37\xb0\x08\x52\x14\x63\x03\xaa\x07\xa6\x41\xc9\x80\
|
||||
\x08\x80\x00\xc2\xd7\x88\xfc\xcf\xa9\xe0\x70\xe3\xf6\x33\xc6\x50\
|
||||
\x23\x53\x39\x76\xae\x3f\xdf\x19\xfe\x02\x2d\x7f\x0d\xcc\x92\xa6\
|
||||
\xfa\xd2\x0c\xe7\xae\x3c\x63\x90\x11\xe7\x03\x5b\xc2\xc5\xc5\xc6\
|
||||
\x70\xf7\xd1\x07\x86\xff\x40\xc7\xc8\x4a\xf2\x81\x7d\x0e\x6c\xd8\
|
||||
\x30\x70\x70\xb2\x32\xdc\x7f\xf2\x99\xe1\xc8\xd9\x67\xc0\xdc\xf3\
|
||||
\x8e\x81\x05\x58\x33\x7d\x03\x16\xd7\xa0\x12\x8a\x55\x58\x90\xe1\
|
||||
\xca\xd5\x0f\x22\x00\x01\x84\xb7\x15\xfb\xe5\xfa\x86\x17\xec\x72\
|
||||
\xb6\xcf\x2f\x3f\xf8\xef\x6f\x65\x21\xcf\xc0\xf4\xe5\x33\xd4\x67\
|
||||
\xff\x18\x7e\xff\xf9\xc3\xc0\x09\x4c\x1b\xa0\xec\xc6\xc2\xc6\xc2\
|
||||
\x70\xfa\xc2\x53\x06\x43\x2d\x71\x70\x2e\x60\x02\xd6\x25\x17\x81\
|
||||
\x35\xe1\xd1\x33\x4f\x81\x59\xf1\x2b\xc4\x52\x70\xf6\x02\x56\xdb\
|
||||
\x62\x22\x0c\x7f\xf9\x85\x18\x2e\x5e\x7e\xc9\x70\xef\xfe\x47\x21\
|
||||
\x80\x00\x62\x24\xa2\xdf\xc0\x21\x1a\xbc\x6e\x8a\x9c\xbc\x4c\x52\
|
||||
\xa1\x1f\xb0\x71\xf1\xee\x2d\xb8\xae\x12\x03\x06\x21\x28\x6f\x9b\
|
||||
\x1a\xc8\x02\x53\xfd\x63\x06\x25\x60\xda\x60\x02\xfa\xec\xfa\x9d\
|
||||
\xb7\x0c\xb7\xee\xbf\x67\x60\x03\x16\xc7\x3f\xa1\x05\x19\x23\x0b\
|
||||
\x33\x03\xa7\x94\x04\xc3\x8b\xef\xcc\x0c\x7b\x0f\xde\x67\x38\x7a\
|
||||
\xf8\x1e\x03\xc3\xaf\x37\x27\x18\x3e\x9c\x5e\x0b\x10\x40\x8c\x44\
|
||||
\xf6\x1d\xb8\x45\x82\x36\xed\xb1\x36\x53\x32\x0b\x37\xe4\x60\xf8\
|
||||
\xfb\xe5\x0b\xd0\x37\x7f\x19\x58\x59\x18\x19\x74\x35\x24\x81\x59\
|
||||
\xf4\x2d\xd8\xf2\x97\xaf\xbf\x01\x7d\xcf\xc4\xf0\xf5\xdb\x1f\x86\
|
||||
\xbf\xc0\xe8\x60\x62\x67\x67\xe0\x92\x93\x66\x38\x75\xf5\x3d\xc3\
|
||||
\xee\xbd\xb7\x19\x1e\x3d\x00\x06\xc7\x8f\x27\x7b\x18\x5e\x6e\x5d\
|
||||
\xcd\xf0\xee\xd8\x03\xa0\xb9\x9f\x00\x02\x88\xd8\x26\x34\x13\xa7\
|
||||
\x66\x94\x3c\xa7\x7a\xcc\xc5\xc4\x50\x6d\x5e\x63\x9e\x4f\x0c\x4c\
|
||||
\xc0\x68\x00\x45\x05\x30\xaa\xc1\x09\x91\x91\x09\x14\xbf\x7f\x19\
|
||||
\xfe\x00\x83\xf9\x3f\x17\x0f\xc3\x07\x26\x6e\x86\xfd\xa7\x5e\x32\
|
||||
\x1c\x3e\x74\x8f\xe1\xdb\xe7\x0f\xf7\x18\x3e\x5f\xdb\xc0\x70\x6f\
|
||||
\xc2\x16\xa0\x59\x5f\x41\x16\x03\xf1\x47\x10\x1b\x20\x80\x48\x69\
|
||||
\xc3\xb3\x70\x5b\x36\xdb\xf3\xc9\x98\xef\x29\x4e\xd0\x62\x90\xf8\
|
||||
\xf1\x0a\x1c\xff\xff\xfe\xfd\x05\x57\xbd\x20\x8b\xff\xf1\x09\x31\
|
||||
\xdc\x78\xcb\xcc\xb0\x73\xdf\x3d\x86\x33\xa7\x1f\x03\x1b\x5f\x2f\
|
||||
\xf6\x30\xbc\x39\xb0\x96\xe1\xe5\x96\xab\xa0\x24\x05\xb5\xf4\x13\
|
||||
\xb4\x55\xf4\x0b\x94\x2c\x00\x02\x88\xd4\xbe\x21\x3b\x8f\xc3\xdc\
|
||||
\x4a\x11\x29\xf9\xfa\x86\x02\x53\x06\x2e\x36\x26\x70\xe3\xee\xdb\
|
||||
\xa7\xaf\x0c\x07\xcf\xbf\x63\xd8\xbe\xeb\x2e\xc3\xeb\x17\x6f\x5e\
|
||||
\xfd\xff\xfa\x68\xf7\xff\x47\x0b\x56\x33\x7c\xbb\xff\x0a\xc9\xb7\
|
||||
\x20\x07\x7c\x87\xf6\x1f\xe1\x2d\x63\x80\x00\x22\xd5\x01\x20\xf5\
|
||||
\x5c\x5c\xf6\x8b\x16\xfd\x67\xe6\x0d\xfa\x0f\x6a\x96\x01\x5b\xc4\
|
||||
\xa0\xec\xf7\xff\xc7\xfb\xcb\x7f\xdf\x9d\x5b\xff\xff\xfe\xcc\x7d\
|
||||
\xe8\xc1\x0c\x6d\x88\xfe\x41\x6e\x8c\xc2\x00\x40\x00\x91\xd3\x3b\
|
||||
\x06\x25\x4a\x5e\x20\x16\x07\x62\x01\x58\xbd\x0e\x6d\x68\x7e\x87\
|
||||
\x5a\xfc\x09\xca\xfe\x85\xde\xb1\x41\x07\x00\x01\x06\x00\x4d\x55\
|
||||
\x78\x5f\x2c\x92\xe0\x60\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\
|
||||
\x60\x82\
|
||||
\x00\x00\x0b\xaa\
|
||||
\x89\
|
||||
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
|
||||
\x00\x00\x58\x00\x00\x00\x1f\x08\x06\x00\x00\x00\x63\xc8\x0a\xe0\
|
||||
\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
|
||||
\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
|
||||
\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\x8b\x00\x00\x01\x8b\x01\
|
||||
\xe1\xd0\xd2\xbc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd8\x02\x13\
|
||||
\x14\x20\x36\x4b\xc4\x25\x64\x00\x00\x0b\x2a\x49\x44\x41\x54\x68\
|
||||
\xde\xed\xda\x7b\xb0\xd5\xd5\x75\x07\xf0\xcf\xfe\x9d\x03\xa2\x08\
|
||||
\x17\xb5\x10\x1e\x5a\x45\xd1\x80\xa6\xc5\x37\x1a\xeb\x63\xe4\xc0\
|
||||
\x45\xf0\x31\x26\x8d\x98\xe9\x10\x9b\xa6\xe3\x74\x92\x34\x8e\xe6\
|
||||
\xa1\x4d\x43\x4d\x27\x35\x49\x9b\x4c\x71\x6c\xc6\x4e\x1e\xad\x4d\
|
||||
\x9a\x6a\x48\x8d\xaf\x40\x78\x9d\xab\x8d\x86\x01\x9f\xa9\x19\xe5\
|
||||
\xa9\xa2\x88\x6f\x44\x11\x23\xdc\xc7\x39\xbb\x7f\xec\x7d\xe5\x70\
|
||||
\xb8\xe7\x72\x41\x9d\xd1\x99\xae\x99\x33\x70\xcf\xf9\xfd\xf6\x6f\
|
||||
\xef\xef\xfe\xae\xb5\xbe\x6b\xed\x5f\xf0\xff\xb6\x4f\xb6\x90\xe1\
|
||||
\x83\x39\x27\x70\x26\x3e\x12\x38\x26\x32\x2a\x20\xf2\x4a\xe4\x9f\
|
||||
\xf1\xb3\x72\x7f\x83\x54\x39\x1d\x9f\x09\x9c\x84\xce\xf7\xd1\xfa\
|
||||
\x02\x5e\xc1\x50\x1c\x90\xd6\xf4\x9e\x5b\x8c\x84\xc0\x81\x18\x8d\
|
||||
\xb6\xc8\xf3\x81\x15\x91\x5b\x6a\x74\x4c\xe7\x39\xe8\x60\x52\xe0\
|
||||
\x26\x1c\x19\xfa\x1b\x71\x19\x57\x04\xbe\x1c\x18\xf7\x3e\x24\xd1\
|
||||
\x7f\x63\x32\x8e\x79\x8f\x9f\xf3\x5a\xe4\xf5\xc0\xf0\xc8\x01\x81\
|
||||
\x55\xb8\xaf\x8b\xef\x9d\xc7\x93\xad\x6e\x5a\xca\xe8\x82\x6f\x97\
|
||||
\xf7\x40\x93\x63\xbd\x3f\xc1\x85\xbb\x71\xd0\x7b\x01\x70\x64\x2b\
|
||||
\x1e\x46\x0f\x26\x61\x74\xe4\xd7\x75\xae\x9d\xce\x03\x03\x19\x63\
|
||||
\x3a\x2f\x76\xd0\xd3\x12\xe0\x05\x1c\x14\x38\x6c\xd7\xe7\xaa\x45\
|
||||
\x6a\xfd\x8c\x5b\x04\x06\x35\xdc\x50\x97\xae\xaf\x0f\xc0\xe5\xcb\
|
||||
\x81\x22\xff\x5d\x8f\x69\x71\xf5\xfc\x7d\xf3\x3c\xd7\x62\x1d\xde\
|
||||
\x7a\x97\x81\xdd\x12\xb8\x33\x30\x0c\x15\x8c\x88\x3c\x5e\x67\xee\
|
||||
\x74\x7e\xbc\x37\x63\x75\xa4\xb0\xba\xbd\x25\xc0\xfb\x71\x22\xc6\
|
||||
\xe6\x07\xff\x14\x73\x17\xb0\xf1\xfa\x7e\xc0\x5a\x40\x51\xe2\xe8\
|
||||
\x41\xfc\x38\x30\x05\xf3\xeb\x5c\x37\x9d\xc7\xf7\x34\xa1\x05\x8c\
|
||||
\xd8\x8f\x0b\x0a\x7e\x82\x85\x81\xcf\x4f\x65\x63\x07\x5f\xc5\x75\
|
||||
\x4d\x97\xdf\xdb\xc3\x73\xe5\x3d\x6f\xdc\x40\x81\x7d\x12\xbf\x42\
|
||||
\x09\x73\x24\x80\xbb\x23\xff\x54\xe3\x7b\xed\x3c\xbb\x0f\xc3\x7e\
|
||||
\x3e\xb2\xa6\xdc\x0f\xa5\x4e\xc2\x78\x2c\x08\x7c\xa3\x93\x4d\xb3\
|
||||
\x68\x3f\x9f\x2b\x32\xe3\x7a\x13\x4b\x91\x5d\x69\x79\x25\x01\xb1\
|
||||
\xb6\x9a\xdc\x68\x4a\x60\x5d\x0f\x4f\x74\x70\x30\x2e\x89\x7c\x02\
|
||||
\xdd\x0d\x8f\x19\x24\x2d\x6e\x7e\x85\x8e\x05\x2c\xd9\x9f\x6d\x58\
|
||||
\x19\xd8\x7a\x3b\x43\x23\x47\x34\x27\x8a\x3a\xf7\x3e\xc3\xd3\x47\
|
||||
\xed\x3a\xd6\xbe\xd8\x86\xc8\x6d\xe8\x09\x5c\x96\x93\x97\xec\xa5\
|
||||
\x7f\x86\x3b\xdb\xe9\x82\x5b\x19\xda\x96\x30\x99\x10\xd8\x8e\xc5\
|
||||
\x15\x5e\x6b\x21\x0e\xe6\xe0\xa8\xc8\xfc\x3d\x01\x3c\x3c\xb2\xbe\
|
||||
\xc2\xba\x65\x49\x82\x9c\x1f\x68\xef\xe3\xf2\x97\x23\x0f\x35\xfc\
|
||||
\x7d\x72\x46\x7f\xcd\x4c\x3a\xab\x29\x96\x7f\x3c\x70\x6e\x8b\xec\
|
||||
\xfc\x56\xf6\x9a\x89\x18\x56\xe3\x81\xe9\x6c\xad\x72\x6a\xe0\x70\
|
||||
\xbb\x03\xfc\xe8\xe5\x69\xdc\x67\x43\x02\xa3\xb4\x97\x8c\x85\xeb\
|
||||
\xb1\x01\x1f\x0b\x9c\xdd\xf0\x5b\x0d\x97\x45\x16\x6c\xa6\xab\x83\
|
||||
\x99\xf8\x2b\xe9\x9a\xe1\xbd\xf7\xf7\x70\x1a\xee\x6f\x02\xb6\x8c\
|
||||
\xd3\x03\xd7\xd6\xf9\xdc\x34\x96\x14\x2d\x32\xe0\x60\x69\xb1\x02\
|
||||
\x4f\xe5\x7f\xdb\x02\xa7\xb6\x98\xf3\xcb\x78\x04\xee\xe2\x0f\x02\
|
||||
\x13\x03\xcf\x04\x5e\xcc\xf7\x8e\x0a\x9c\xd0\x62\xb1\x4f\x6f\xe7\
|
||||
\xf1\xa5\xc9\x2d\x4f\x91\x18\xfc\x58\xfe\xf9\x23\xd9\x8b\x9a\x37\
|
||||
\xbf\x37\xf6\xae\xc3\xc6\xbd\xc0\xb6\x1e\x59\x5f\x63\x2a\x62\xe0\
|
||||
\xab\x8d\xe0\xe2\xcd\xc8\x95\x5b\xb9\x03\x17\x8d\xe4\xc1\x24\x79\
|
||||
\x5d\xd0\x0b\x6e\xb6\x45\x65\x5e\x6a\x02\x77\x7f\x5c\x94\xc3\xe2\
|
||||
\x17\xea\xfc\x0f\xbb\x27\x8f\x5e\x9f\x9f\x22\xb9\xf5\x9a\xc8\xd3\
|
||||
\x99\x35\xc3\x4b\x9c\xdc\x62\xe2\xaf\x46\x56\xdd\xc2\x01\x43\x93\
|
||||
\xf0\xde\x1f\xf7\xc8\x00\xe3\x50\x1c\xd2\xe2\xde\x67\x2e\xe0\x8d\
|
||||
\x0e\xfe\x30\xa6\xb8\xff\x40\x89\x1d\xf9\xb7\x49\x38\xa2\x0f\x80\
|
||||
\x3b\x9b\x00\x1e\x3f\x00\x70\xb7\x45\x6e\xaf\x71\x43\x89\x1b\x42\
|
||||
\xda\xcc\x41\x8d\x6b\xa8\xf3\x5f\xd8\xd1\xc6\x23\x81\x09\x76\x26\
|
||||
\xdd\x46\x6f\x7b\x21\xf2\x95\xcd\x3c\xd3\xfb\xe5\x12\xc6\x44\x2e\
|
||||
\x2f\x98\xd3\xc3\xc5\x91\x87\x66\x64\x31\x50\x6e\x11\x1e\x4e\xcf\
|
||||
\x12\x68\xa5\x9d\x0c\xfe\x70\x3f\x93\x3f\xbb\x60\xed\xa8\x5d\x99\
|
||||
\xf9\x60\x8d\x17\xaa\x69\xa3\x3e\xdc\x82\xbd\xcf\xcb\x1b\x18\x13\
|
||||
\x43\x8e\x97\x62\x62\x57\x7e\xe6\x51\x4d\x20\x40\x2c\x32\xc0\x5d\
|
||||
\xac\x1d\xcc\xc6\x30\x80\x58\x8b\x7f\xc3\xea\x32\x55\x8c\xe8\xe3\
|
||||
\x9a\xa1\x81\x99\x81\x2f\xf4\xc3\xfe\xff\x95\xf2\xc8\xd3\x9f\xcc\
|
||||
\x91\xa6\x9a\x88\x73\x45\xfe\x7c\x07\x8f\xcd\x68\x50\x5a\x45\x8b\
|
||||
\xc1\x4e\xcb\x55\xd2\x63\x52\x92\x1a\x5d\xb4\x70\xf1\x7e\xec\xb7\
|
||||
\xed\x6c\x8d\x29\xd8\x4f\x6a\xb1\x91\x6b\x42\x06\xb8\xc6\x28\x4c\
|
||||
\xa8\xb1\x62\x07\xdb\x97\xf2\x47\xd2\x77\xcd\xf6\x76\x45\x39\x33\
|
||||
\x6d\xd0\x9e\x32\xfc\xfd\x91\xbf\xcf\x9b\xf9\x8b\x16\xe0\xc2\x90\
|
||||
\xcc\xda\xbe\xac\x2b\x72\x47\x8d\x73\x2b\x3c\x35\xad\x41\xbd\x54\
|
||||
\x78\xb5\x87\x6b\x23\xb3\x70\x6c\x99\x7f\xe9\x48\xe1\xae\x6f\x80\
|
||||
\xbf\x9f\x18\x73\x72\x5e\xf4\xda\x4a\x1a\x7c\x4c\x4c\xec\x1a\x68\
|
||||
\x12\xd9\x2c\x97\x8d\x05\xe3\x43\x0b\x80\x23\xab\x7b\x78\xb2\x83\
|
||||
\x21\x65\x26\x07\xba\xea\xac\x9c\x95\xe2\xe3\x49\x7d\x01\x1c\xe9\
|
||||
\x8c\xbb\x96\xc6\x1b\x73\xdc\xee\xcb\x6e\xaf\xf3\xb7\x91\x11\x81\
|
||||
\x7f\x0f\xf6\xc9\xb6\x46\xe6\xf5\xf0\x89\xf6\x54\x80\xec\x66\x33\
|
||||
\xe8\x5c\x9d\x0a\x9f\xbf\xc3\x59\x29\x5f\x27\x2b\x37\x89\xe3\x92\
|
||||
\xc4\xd4\x36\x3c\x53\x6a\x48\x52\x76\x65\xf0\x8d\x35\xfe\xb3\xce\
|
||||
\xe6\x5c\x04\xd4\x03\x83\x0b\x4e\xc9\x0b\x79\x30\xee\x5c\xf4\xa6\
|
||||
\xc8\xcf\x23\xa5\xb0\x2b\x30\x43\x6a\xdc\xd6\xce\xf3\xd5\xb4\x01\
|
||||
\x27\x05\x56\xcd\x60\x4b\xde\x98\x13\x5b\x30\x78\x47\x53\xef\x61\
|
||||
\xbd\xe4\xba\x67\x36\x6d\xc4\x0d\x91\xef\x07\x2e\x0d\xcc\xdd\x47\
|
||||
\x19\xb7\x36\xf2\x8d\x4a\x8a\xcd\xfd\xda\x44\x06\xc7\x24\xf3\xb6\
|
||||
\x35\x16\x56\xe5\x26\xf9\x33\x18\x67\x14\xec\x1f\xa9\xc6\x9c\x29\
|
||||
\x23\xe3\xc2\xae\x49\x6a\x42\xc1\x9c\x82\x52\x64\xd1\x34\xee\xec\
|
||||
\x48\xae\x37\x2b\x8f\xf3\x40\x2f\xab\x3a\xd9\x50\x4a\x85\x4a\xbd\
|
||||
\x8f\x84\x31\x64\x29\x7f\x9a\xc5\xfd\x34\xdc\xd8\xf0\xfb\xe4\xbc\
|
||||
\xd1\xbb\xdc\x13\x9a\xb4\x6f\x64\x75\x48\xd9\xbe\x11\xe0\x1f\x45\
|
||||
\xbe\x5e\xf0\x45\x5c\xb5\x0f\xc0\x76\x47\xbe\x1b\xb9\x71\x1a\x9b\
|
||||
\x96\x31\x2c\x72\x34\xda\x0a\x5e\x0a\xac\x9d\xda\x54\xd1\x96\x18\
|
||||
\x99\xc8\xec\x8e\xc6\x30\x56\x6e\x8a\x89\x83\xf0\xd1\x9c\x58\x1e\
|
||||
\xae\x27\x76\x1d\x1c\xb2\x64\x6b\x2c\xb5\x03\xd3\xf3\xff\x9f\x68\
|
||||
\x48\x52\x53\xb2\x1b\xae\x9c\xc6\x96\x25\x4c\x2e\x71\x5d\xc8\xc0\
|
||||
\xef\xc1\x9e\xad\x67\x5d\xb9\x28\x29\x87\x91\x2d\x4a\xea\x11\xf9\
|
||||
\x5f\xd2\xae\xbc\xb0\x94\x87\x8b\xf4\x65\x0d\xcb\x5f\xe3\xaa\x36\
|
||||
\x3e\x8e\x4b\xb3\xa2\x19\xb0\x8c\xc3\xaa\x1a\x97\x05\xde\x0a\xcc\
|
||||
\xaa\x26\xe9\x75\x7a\x91\x63\x77\xa4\xde\x99\x62\xf5\x86\xa6\x8d\
|
||||
\x9e\x1c\xb8\xa4\x8b\x73\xba\x1a\x4a\xf8\x66\x15\x31\x08\x67\xe4\
|
||||
\x95\x3c\xd2\xce\xd6\x65\x49\xce\x4c\x0a\x7d\xc7\xd0\xf5\xbd\x32\
|
||||
\x2e\xd7\xef\xa7\x61\x7b\x37\xbf\xcb\x83\x1f\xd7\x97\xcc\x6a\x25\
|
||||
\xa3\x6a\x19\xe0\x41\x49\x26\x0e\x6b\x71\xdd\x81\xdd\xa9\x45\xd9\
|
||||
\x28\x2b\x37\xe0\x81\xc8\xf0\x4e\x66\x1f\xc8\x61\x81\x2f\x49\x2a\
|
||||
\x64\xa0\xd6\x15\x59\x83\x15\x25\x6e\xc6\x91\x7d\x28\x98\x6d\xf8\
|
||||
\xf2\x60\x5e\x68\x0a\xad\x67\xe1\xf2\xc8\x37\xcf\xcb\x78\xec\x06\
|
||||
\xf0\x8f\x08\x75\xc6\x97\x52\x42\xdb\x82\x4d\x19\xb8\xf1\x52\x25\
|
||||
\xd6\x97\x3d\xde\x2b\xe3\xea\x8c\x29\xd2\xbd\xbf\x19\x9c\x77\x30\
|
||||
\x72\x6c\x18\x20\xc0\x91\x97\x67\xec\x2c\x1a\xa6\x48\x7d\xd7\x3e\
|
||||
\x6d\x10\x13\xab\xbc\x50\xc9\xe1\xa2\xce\xb8\x22\xb1\xf7\xd2\x59\
|
||||
\xbc\x58\xe5\xfa\x90\x00\xda\x1b\x1b\x1c\xf8\x63\xe9\xd3\x97\x6d\
|
||||
\xc4\x17\x2b\xdc\xda\x54\x60\x9c\x28\x95\xd9\xdb\x2a\xfc\xa0\x8f\
|
||||
\x9a\x22\xd9\xe1\x0c\x2f\x52\x78\x10\xb8\x3f\xe4\x18\x9a\x7b\x01\
|
||||
\xad\x26\xbb\xba\x3b\xa9\x80\x61\x39\x29\xc1\x8a\x90\x75\xac\x14\
|
||||
\xb7\x86\x0e\x60\x71\xaf\x07\x7e\xdb\x10\x07\x4e\xed\x87\xc1\x70\
|
||||
\x7c\x6e\x7c\x5b\xc6\x89\x81\x93\x22\x0b\x2b\x3c\xba\x34\x35\xa8\
|
||||
\xce\xdd\xcb\xd0\xb0\xa7\xcd\xbf\x17\x9f\x9a\xda\x04\xee\x92\x94\
|
||||
\xf8\xaf\x89\x84\x5b\x13\xc8\x5a\x02\xdc\xe0\xe2\xea\xdc\x5f\x67\
|
||||
\xeb\xfc\xb4\xab\xfd\x31\x70\xcd\xcc\x24\x63\xc6\x4a\xb2\x6a\x47\
|
||||
\x64\x65\x8d\xce\xc5\x1c\x1d\x72\xf3\x64\x00\xf6\x72\x16\xf1\x16\
|
||||
\xec\xec\xf1\xf6\xd7\x5f\x38\x3e\x9f\x64\x28\xb8\xb0\xe0\xc8\x67\
|
||||
\xf9\xc7\x2a\xfb\x05\x66\x87\xa6\x10\xf2\x0e\xec\xa1\xc8\x27\x51\
|
||||
\x99\xca\xaf\x9b\x99\x5b\x66\x5e\x60\x53\x8d\xcf\xfe\x6b\x8b\xce\
|
||||
\xde\x2e\x00\xe7\x0a\x4e\xa0\x28\x28\xcd\xa6\xeb\x25\xbe\xb4\x8d\
|
||||
\x83\xdf\xe0\xa0\xc6\xcf\x0e\x46\xd4\x53\xac\x12\x53\xcf\xa0\x1d\
|
||||
\xdb\x6b\xac\x98\x4e\xad\x9c\x18\x3d\x72\xa0\x00\xf7\x32\xf8\x21\
|
||||
\xb6\xbe\xc1\xd1\x8d\xcf\xda\xc2\xf0\x1d\x1c\x16\xb9\x32\x5f\x7f\
|
||||
\x02\xca\xcb\x98\x16\x93\xd2\xb8\xe3\x2f\x52\x47\xaf\x14\x9a\x92\
|
||||
\xe0\x3e\xda\xfa\x3a\x73\xba\x99\x5a\xe1\x67\x95\x26\xe5\xd2\xc1\
|
||||
\x25\xf8\x49\xe4\xae\x4e\xe6\xb6\xef\x2c\xed\x77\xb3\xb7\x63\x70\
|
||||
\x8d\x51\xa5\xcc\xd6\x90\xc4\xf9\x85\xd5\x54\xeb\xff\xbe\x45\xc5\
|
||||
\x57\x47\x5b\x35\x25\xc0\x09\x39\x21\xbc\x59\xe6\x5b\x55\x6a\x21\
|
||||
\xc9\xac\xc3\x07\xb8\xa0\x23\x22\x57\x57\xd3\x42\x5a\xe4\x53\xe5\
|
||||
\xc0\x98\x5e\xd9\x59\x4f\x6c\x6d\xc7\x96\xa9\xdc\x92\xe7\x5d\xcf\
|
||||
\x67\x75\xfb\xd2\x27\xae\xe7\xf6\xe5\xbc\x6e\xfe\xe3\xbc\xb4\x6e\
|
||||
\x4d\x21\x61\x78\x89\xaf\xe5\xaa\xed\x8a\x21\x74\x54\xf6\x70\x1e\
|
||||
\x58\xce\x74\x1f\x11\x76\xc6\xd0\x47\x23\xcb\xf1\x26\xfe\x44\x8a\
|
||||
\x71\x43\x06\x30\xc1\x1e\x6c\x0a\x69\x81\xa7\xe4\x46\x4d\xa3\xab\
|
||||
\xbe\x96\x36\xdf\xd8\xc8\xc8\xdc\x86\x1c\xdc\xdb\x0c\x0a\xa9\xff\
|
||||
\xba\x37\x76\x8e\xd4\xb9\x7b\xaa\x01\xa1\xae\xc0\xd2\x90\xb4\xef\
|
||||
\x81\x03\x1c\xe7\xa9\xc8\x2f\x23\xbf\xb8\x9f\xe5\x5f\x6b\xb1\x39\
|
||||
\xcb\x92\x54\xfb\x2e\x9e\xdb\xce\xb4\xf3\x53\xe9\xbd\x47\x2b\x37\
|
||||
\x54\x6a\x27\x4b\x65\xe8\x0f\xa5\x50\x71\x5c\x60\x63\x64\x75\x4c\
|
||||
\xcc\x6e\x0b\xa9\x37\x31\x3b\xf2\x2a\x3a\x32\x4b\x27\x67\xd6\xad\
|
||||
\xcf\x2e\x7c\x4d\x48\xee\x73\x98\xd4\x71\xda\x9a\x93\xe4\x83\x35\
|
||||
\xbe\x19\x52\x9c\x1f\x9d\x8f\x64\x8a\x90\xe2\xf7\xb0\xc8\xba\x9c\
|
||||
\x1c\xd7\x44\xfe\x32\xb0\x3c\x1f\xe1\x1c\x91\x9b\xf4\xaf\x47\x2e\
|
||||
\x0e\x99\xe1\x05\x7f\x1d\x79\xb4\x9e\x0e\x21\x7b\x35\x71\x1d\xeb\
|
||||
\x16\x73\x4e\x99\xab\x73\xaf\x77\x74\x43\xcf\xf9\x95\x86\xcf\xc3\
|
||||
\xb8\x2b\xf0\xbb\xca\xce\xa4\xbc\x9b\x2d\x4e\xfd\x85\x2b\x03\x67\
|
||||
\x46\xbe\x53\x49\x4d\xa3\x01\x5b\x39\xfb\xdf\x87\xa4\x32\xb7\x4b\
|
||||
\xd2\xb0\xcf\xe3\xac\x1a\xf7\x85\xc4\xe0\x58\x67\x5e\x91\xc0\xec\
|
||||
\xa9\x71\x53\x48\x2c\x5c\x55\xa4\x7b\x4e\xc5\xc8\x98\x7a\xab\x73\
|
||||
\x73\xc3\x7a\x7e\x48\xae\xbf\x06\x8b\x02\x67\x15\xfc\x79\xee\x1b\
|
||||
\xcf\x42\xb5\x87\x9b\x0b\x46\x16\x7c\x0a\xe3\x6a\xfc\x34\xf2\x6a\
|
||||
\x89\xe3\xea\xa9\xe4\x3e\x2f\x72\x77\x9d\x9f\x87\x34\xbf\xe1\x79\
|
||||
\x63\x48\xef\x22\xdc\xa3\x8f\x93\xdd\x2c\xf7\x3e\xb7\x8c\xab\xb6\
|
||||
\x33\xa4\x87\x9e\x8b\xfb\x70\xf9\xfe\xac\xca\xd8\xc0\xdf\xc4\x54\
|
||||
\x21\x2e\xdc\xc1\x47\x67\xe5\x32\x7e\xaf\x01\xc6\xe8\x90\x24\xd5\
|
||||
\x8b\x91\x51\x05\x37\x45\x36\x17\xa9\x69\x71\x08\x7a\x8a\xf4\x62\
|
||||
\xc5\xb0\xc0\x21\x25\x46\xc5\xa4\x30\x4e\xcc\xa1\xe0\xa5\x98\xd8\
|
||||
\xf0\xfb\x90\x04\xf7\x93\xb9\x3f\x30\x3a\xa4\x6b\x9f\xc8\xac\xb9\
|
||||
\x50\x92\x3c\xc7\xd5\xb8\xa6\xc4\x98\x1c\xbf\x9f\x8c\xc9\x0d\x86\
|
||||
\xd4\xd3\xbb\x06\x6f\xa6\x83\x59\x63\xb0\xa3\x48\xed\xce\x0f\xd9\
|
||||
\x19\xc6\xde\x9e\x7f\xe8\x47\x6d\x4c\x4b\x25\xeb\x80\xdf\xe7\x98\
|
||||
\x9b\xdc\x78\xd8\xd0\xc4\xd8\x39\x91\xbb\x22\x17\x4f\x6b\xaa\xda\
|
||||
\xf6\x0a\xe0\x5f\x25\xf7\x3d\x2a\x33\xb9\xc8\x15\xd0\x01\x39\x69\
|
||||
\x4d\xcd\x8b\x7c\x2d\x2f\x66\x42\xe0\x84\x98\x7a\xa7\x3d\x21\x85\
|
||||
\x95\x61\xf9\x73\x11\x16\xc4\x74\xdf\xd5\x21\x31\xe6\x1e\x4c\x2c\
|
||||
\x12\xb0\xcf\xe2\xd8\xc8\x67\x50\x2e\xf1\xad\xfc\x8c\xb1\xb9\x17\
|
||||
\xbb\x39\x52\x94\xd3\xb5\xc7\xe4\x92\x78\x4c\x48\x21\x6a\x4c\x48\
|
||||
\xed\xcb\x83\x9b\xe6\x3f\x26\x26\x02\x3c\xfd\x4e\xf5\x58\x47\xf2\
|
||||
\x8e\xd9\xd2\x21\xeb\x92\xc8\x79\x95\xdc\x06\x78\x27\x16\x96\xf1\
|
||||
\xe9\xc0\x99\x81\x4f\xfb\x00\x5a\x64\x6e\x85\x7f\xd8\xd7\xfb\x17\
|
||||
\x71\xf8\xa0\xd4\x71\xfb\x18\x36\x77\xf3\x95\x1a\x6b\x66\xf5\xff\
|
||||
\x7a\xc2\xc0\x19\x9c\xc1\x3d\xda\x07\xd4\x02\x5f\xaf\x72\xe8\x3c\
|
||||
\x3e\xbb\x70\x80\xf2\x6c\x71\x92\xa4\xd3\x43\xf2\xa6\x71\xb8\x3b\
|
||||
\x72\x45\x25\x9d\xe0\xbc\xbb\xf3\xeb\x48\xf1\x72\xd8\x5e\x14\x05\
|
||||
\xef\x57\x7b\x31\x15\x82\x6e\x43\x75\x6a\x2e\x0e\x7e\xc9\xd0\x03\
|
||||
\x38\x3c\x32\x39\x72\x76\x48\x8d\x99\x21\x81\x15\x75\x6e\xee\xe6\
|
||||
\xbe\x99\xbc\xf1\x9e\x11\xa0\x4a\x5b\x77\xea\x62\x87\x0f\x22\xaa\
|
||||
\x5d\x74\xb7\x71\x68\x39\x25\xc5\x33\x72\x5e\x18\x19\x77\xb6\x37\
|
||||
\xb7\x49\xc7\xfb\xab\x22\xbf\xe9\x4a\xaf\x40\x6d\x38\xff\x5d\x7a\
|
||||
\x69\x65\x4f\xf6\x7f\xd5\x1a\x93\x9b\x75\x2f\x21\x7f\x00\x00\x00\
|
||||
\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
|
||||
\x00\x00\x06\x61\
|
||||
\x89\
|
||||
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
|
||||
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
|
||||
\x00\x00\x06\x28\x49\x44\x41\x54\x58\x85\xb5\x97\xdf\x6f\x54\xc7\
|
||||
\x15\xc7\x3f\x33\x3b\x7b\xf7\xfa\x7a\x0d\x66\x6d\x63\xaf\x1d\x9c\
|
||||
\x18\xc5\x98\x46\x2a\x24\xa1\x84\x52\x70\xdd\x14\x12\x64\x90\x50\
|
||||
\x79\x68\x24\x4b\x95\x12\x50\xd5\x2a\x52\xa3\x52\x45\x95\xda\x3f\
|
||||
\xa2\x95\x2a\xa5\x12\xa2\xea\x0b\x8d\x44\x95\x97\x24\x0a\x20\xd2\
|
||||
\x2a\x0a\x7d\x68\x70\x78\x70\x6d\x6a\xb5\xc1\x05\x6c\x60\x0d\x36\
|
||||
\xd8\xde\x65\xd7\xbb\x7b\xf7\xde\x3b\x33\x7d\x70\xfc\x0b\x0c\xfe\
|
||||
\x51\xf7\x48\x57\xba\xbb\x67\x66\x3e\xdf\x39\x67\x7e\x9c\x2b\x58\
|
||||
\xc6\x4e\x9f\xfe\xb8\x29\x9d\x4e\xf5\x7b\x9e\xeb\x2e\xd7\x76\xa1\
|
||||
\xdd\xbe\x3d\x3a\x70\xfc\xf8\x0f\xbe\x07\xd8\xa7\xb5\x53\xcb\x0d\
|
||||
\x14\x45\xe1\xd6\x9d\x3b\xdb\x1b\xb7\x6c\x69\x7c\x6a\x3b\x6b\xc1\
|
||||
\x62\xb1\x16\xa4\x10\x7c\xfe\xb9\xdd\x05\xd4\x02\xd9\xff\x49\xc0\
|
||||
\x4a\x4c\x1b\x8b\x31\x16\x6d\x2d\xda\x58\x1c\x15\x5b\x71\x5f\xb9\
|
||||
\x5c\x83\x28\x0a\xb1\xf6\xc9\x51\x7c\x14\x6e\x0c\x58\x6b\xd1\x5a\
|
||||
\xaf\x8f\x80\x20\x08\x30\xc6\xac\x10\x6e\xd1\xc6\x60\xe1\xff\x2f\
|
||||
\x60\x69\xf8\xcc\x6f\xac\x45\xeb\x68\xbd\x04\x54\x1e\x13\xf0\x34\
|
||||
\xf8\xec\x7b\x14\xad\x93\x80\x30\x0c\xb0\x76\x5e\xc0\x72\xf0\x20\
|
||||
\xd4\xab\x8a\xc0\xb2\xbb\x60\x36\x02\xf6\x11\xf8\x2c\xd8\x3c\x02\
|
||||
\x37\x5a\x63\xed\x3a\x45\xa0\xbb\xbb\x3b\x9e\xc9\x0c\x75\x1b\x63\
|
||||
\x31\x76\x65\x70\xad\xcd\xac\x00\xb5\x77\xef\xde\xef\xac\x29\x02\
|
||||
\x87\x0f\x1f\x7e\x0e\xd8\xa9\xb5\x7e\xf3\xe5\x97\x77\x1c\x33\xc6\
|
||||
\x60\x0d\x2b\x82\x9b\x68\x26\x02\x52\x8a\x44\x67\x67\xe7\x27\x89\
|
||||
\x44\xe2\xb7\x9e\xe7\x9d\x07\x7a\x2f\x5c\xb8\x50\x7e\xa2\x80\x23\
|
||||
\x47\x8e\x74\x68\xad\x7f\xb7\x7b\xf7\xde\xd7\x76\xef\xfe\xb6\x6c\
|
||||
\x6e\x7e\x06\xcf\xf3\xb8\x74\xe9\xaf\x58\x6b\x30\xac\x0c\x3e\x93\
|
||||
\x02\xf0\x7d\x9f\x37\xde\xe8\x11\x6f\xbd\xf5\xf6\xbb\xb9\x5c\xee\
|
||||
\xdd\xe1\xe1\xeb\xb4\xb7\x77\xdc\xbb\x7a\xb5\xff\x23\xcf\xf3\x7e\
|
||||
\x7d\xfe\xfc\xf9\x87\x73\x02\xba\xbb\xbb\x7f\xdc\xd3\xf3\xe6\x1f\
|
||||
\xf6\xed\xeb\x44\xca\xf9\xac\x48\x29\xc8\xe5\x72\x18\x63\xf0\x03\
|
||||
\x43\xa1\x1c\x51\xaa\x68\x4a\x81\xa6\x5c\xd1\xe4\x4b\x11\x12\x43\
|
||||
\x5c\x42\x5c\x58\xe2\xd2\xa2\xa4\x25\x15\x69\xb4\xd6\xe4\xf3\x39\
|
||||
\x1a\x1a\x9a\xa9\xae\xf6\x68\x69\x69\x66\xff\xfe\xef\xa6\xcb\x65\
|
||||
\xff\xed\xf7\xdf\xff\xe3\x89\x4c\x26\xb3\x63\x60\x60\x60\x48\x1d\
|
||||
\x3d\x7a\xb4\xa6\xad\xed\xf9\xdf\x77\x75\xbd\xfa\x58\x2a\x1c\x47\
|
||||
\x91\x15\x9b\xb9\x1b\xd5\x31\x79\x3d\x47\x22\x2e\x49\x28\x49\x22\
|
||||
\x2e\x48\x55\x2b\x9a\x6b\x1d\x22\x63\x09\x42\x43\x10\x59\x2a\x91\
|
||||
\xa1\x14\x59\xfa\x6f\x97\xd9\xb8\xbd\x8b\x89\x7b\x97\xd9\xb4\xa9\
|
||||
\x80\x94\x02\x29\x25\x42\x08\xa4\x14\xf4\xf4\x1c\x4f\xf4\xf6\x7e\
|
||||
\x71\x0a\x38\xa0\x8c\x31\xaf\x9f\x38\xf1\x13\x27\x16\x13\x4b\xac\
|
||||
\x06\x43\xaa\xb5\x83\xf6\xb6\xd4\x92\x0b\x28\x64\xe6\xaa\x33\x0a\
|
||||
\xa4\x85\x84\xb5\xc4\x2d\x54\x59\xa8\x69\x80\x4b\x83\x21\xed\xcf\
|
||||
\x5b\xa2\xc8\x70\x2f\x77\x9f\x1b\xe1\x5d\xf6\x37\x7c\x13\x80\xae\
|
||||
\xae\x83\x9d\x03\x03\x03\x4d\xca\x5a\xfb\x5a\x7d\x7d\x1d\xb1\xd8\
|
||||
\xe3\x1b\x22\x9f\xcf\x62\x36\xb5\x30\x94\x5f\xec\x8b\x8c\x25\x1f\
|
||||
\x42\x21\x80\x7c\x60\xd1\x73\x57\xc5\xe2\x49\xdc\x2a\x6d\xe0\x58\
|
||||
\xb2\x0a\xdf\x0f\x88\xb9\x92\xec\xbd\x02\x4e\xcb\xcc\xb2\xdb\xb7\
|
||||
\xaf\x4b\x7d\xf8\xe1\x07\x07\x94\x94\xf2\x99\x78\x3c\x8e\x58\xd0\
|
||||
\xd7\x18\x8b\xef\x57\x98\x9a\x9a\xa4\xec\xbd\xc0\x8d\xc2\x8c\xd3\
|
||||
\x8f\xe0\x46\xde\x92\x99\x16\x0b\x2e\xf9\xa5\x22\x37\x63\x65\xbd\
|
||||
\x19\xd7\x8d\xa3\xb5\xa1\xad\x2e\x4d\x5b\x5d\x7a\xce\x97\x4a\x6d\
|
||||
\xc2\x71\x9c\x56\x95\x4a\xa5\x1a\x95\x9a\x9f\x61\x18\x46\x94\x4a\
|
||||
\x15\xac\xb5\xdc\x1c\x2f\x52\x48\x79\xe4\x1e\xc2\x3f\xa7\xe0\xab\
|
||||
\x2c\x68\xfb\x64\xe0\xa3\x16\xb7\x4d\x04\x41\x19\xc7\x71\x1e\xf3\
|
||||
\xc5\x62\x1e\xf1\x78\xbc\x5e\x81\xac\x0b\x82\x10\xd7\x4d\x10\x86\
|
||||
\x11\x41\x10\x32\x2b\xe8\xef\x63\x2e\xd3\x09\xc1\x85\x61\xb8\x5f\
|
||||
\x5a\x31\x77\xce\x44\x94\x62\x7a\x7a\x98\x54\xaa\x61\xb1\xb0\x78\
|
||||
\x8c\x9b\x37\xc7\x50\x4a\xa5\x54\x10\x04\xf2\xcb\x2f\xbf\xc2\x75\
|
||||
\x1d\x3a\x3a\x5a\xa8\xa9\xf1\x30\xc6\x22\x84\xe0\x76\x61\x23\xbd\
|
||||
\x7d\x70\xbf\xb8\x7a\x38\x80\xc5\x63\xe0\x76\x91\x43\x4d\x69\x62\
|
||||
\x31\x49\x10\x44\x8c\x8f\xe7\x18\x1d\x9d\x20\x93\x19\x41\x08\x11\
|
||||
\x57\x4a\xc5\x1f\x02\xf8\x7e\xc0\xc0\xc0\x30\x00\xc9\x64\x15\x0d\
|
||||
\x0d\xb5\xfc\xe8\x5b\x49\x9e\x1b\xce\x30\x9a\xd5\x8c\xe5\x2d\x53\
|
||||
\xe5\x18\x85\xd0\xa1\xa4\x1d\xca\xc6\xa1\x62\x5d\x62\x68\x12\xa2\
|
||||
\x42\x55\x2c\xa0\x5a\x05\x6c\x70\x02\xea\x3d\x4b\x7a\xa3\xa4\xa5\
|
||||
\x56\xf2\x42\x5b\x33\x23\x23\xe3\x4c\x4c\xe4\x89\xa2\xf9\x1a\x41\
|
||||
\x29\x85\xd6\x7a\x4a\x95\xcb\xc5\xb1\x58\x4c\xee\x10\x0b\x56\xa1\
|
||||
\xef\x07\xdc\xb9\x73\x9f\x6a\xe0\x50\x03\x88\xcd\xe0\x79\x2e\x9e\
|
||||
\x97\x20\x16\x2b\x13\x8b\x49\x5c\xd7\x41\x29\x01\x48\x2a\x95\x90\
|
||||
\x20\x88\xd0\x5f\x9f\x88\xd3\xd3\x3e\xbe\x1f\x00\x30\x7e\x8b\x05\
|
||||
\xd0\xf9\x52\x2d\x0c\x7d\xa2\x28\x9a\x50\xc6\xe8\x71\x63\x42\xaa\
|
||||
\xab\x93\x73\xce\x42\xe1\x21\x7d\x7d\xbd\x6b\x8b\xfb\x12\x56\x55\
|
||||
\xe5\xf1\xca\x2b\x9d\x8b\xfe\xab\x54\xca\x84\x61\xf8\x40\x01\xe3\
|
||||
\x61\x58\xc6\x75\xe7\x0f\x9b\x07\x0f\xf2\x7c\xf6\xd9\xb9\x75\x13\
|
||||
\xd0\xd0\xd0\xc8\xfe\xfd\xaf\x2e\x3a\xe6\x2b\x95\x22\x95\x4a\x65\
|
||||
\x4c\x09\x21\x86\x2a\x95\x12\xae\x3b\xbf\x55\x84\x80\xda\xda\x5a\
|
||||
\x5c\xd7\xe5\xe4\xc9\x93\x2c\x4c\xcf\x6a\x6c\x74\x74\x94\x33\x67\
|
||||
\xce\xb0\x61\xc3\x06\x84\xd0\xb8\x0b\x3e\x2d\x8a\xc5\x82\xce\x64\
|
||||
\x32\x43\xca\x71\x9c\xbf\x8c\x8e\x8e\xf0\xd2\x4b\xbb\xe6\x9c\xf5\
|
||||
\xf5\x29\x0e\x1e\x7c\x9d\x74\xba\x85\x74\x3a\xbd\xd4\xd8\xcb\x9a\
|
||||
\xb5\xb0\x65\xcb\x16\xae\x5d\x1b\xa6\xb1\xb1\x9e\x64\xd2\x25\x91\
|
||||
\x98\x11\xa0\x75\xc4\xc8\xc8\xf5\x5b\x93\x93\x93\x77\xd4\xd9\xb3\
|
||||
\x67\x6f\xb9\x6e\xd5\x7f\x8e\x1d\xfb\x61\xfb\xec\x81\xb1\x6d\xdb\
|
||||
\x76\x6a\x6b\x1b\x49\xa7\x53\xa4\xd3\x75\x6b\x82\x6b\x6d\x90\x52\
|
||||
\x70\xe0\x40\x37\xcd\xcd\x8d\x28\x25\x99\xad\xee\x07\x07\xaf\x72\
|
||||
\xf7\xee\xdd\xbf\x01\xd3\x12\x20\x9b\x9d\xfa\xc5\xc5\x8b\x9f\x44\
|
||||
\x53\x53\x93\x73\x83\x64\xb3\xf9\x35\xc2\xed\xd7\xbb\x41\x13\x86\
|
||||
\x11\xdb\xb6\xb5\x32\x32\x72\x07\x10\xe4\x72\x59\x06\x07\xaf\xf2\
|
||||
\xe9\xa7\xe7\xff\x75\xe5\xca\x95\xdf\x00\x7a\x2e\xb9\xc9\x64\xd2\
|
||||
\xdd\xb3\x67\xcf\x4f\x95\x52\x5b\x9b\x9a\x5a\x3a\xde\x79\xe7\x97\
|
||||
\x87\x76\xed\xda\xbe\x06\xb8\x59\xf0\x68\xaa\xab\xab\x38\x75\xea\
|
||||
\x4f\xa5\x73\xe7\xfe\xfc\x91\xef\xfb\x23\xfd\xfd\xfd\x17\xb3\xd9\
|
||||
\xec\xbf\x81\x49\x9e\xf4\xdd\xf8\xde\x7b\x1f\xfc\x2a\x9f\x2f\xda\
|
||||
\xd5\x98\x31\xc6\x86\x61\x64\x7d\x3f\xb0\xc5\xa2\x6f\xf3\xf9\xa2\
|
||||
\xcd\x66\x0b\xb6\x58\xf4\xed\xe5\xcb\xff\xb0\x5d\x5d\xdd\xdf\x5f\
|
||||
\x8a\xb5\x64\x51\xfa\xec\xb3\x4d\x3f\xab\xa9\xf1\x56\x39\x7b\xe6\
|
||||
\x0a\x0e\xa5\x24\x8e\xa3\x48\x24\x1c\xa4\x14\xbc\xf8\xe2\x37\x68\
|
||||
\x6d\xdd\xfa\xf3\xa5\xfa\x3d\x56\x94\x9e\x3e\xfd\x71\x52\x08\xd9\
|
||||
\xd8\xd7\x77\x6d\xd5\x02\xb4\x8e\x88\xa2\x88\x28\x0a\x17\xbc\xcf\
|
||||
\x3c\x35\x35\xd5\xdb\x81\x2a\x60\x51\x61\xfa\x5f\x15\x59\xfb\x56\
|
||||
\x1b\x1f\x81\x0d\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
|
||||
\
|
||||
\x00\x00\x07\xa0\
|
||||
\x89\
|
||||
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
|
||||
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
|
||||
\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\
|
||||
\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\
|
||||
\x0b\x12\x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\
|
||||
\xd3\x08\x1c\x13\x19\x0c\xfe\x17\x9f\xdd\x00\x00\x07\x2d\x49\x44\
|
||||
\x41\x54\x78\xda\xc5\x97\x7f\x6c\x55\x67\x19\xc7\x3f\xe7\xdc\xdb\
|
||||
\xdb\xde\xb6\xb7\x40\xa1\x80\x48\x87\x65\x8b\xc2\x0a\xad\x74\x73\
|
||||
\xb0\x61\x1d\xc3\x65\x03\x2d\x6e\x66\x31\x04\xd0\x88\x26\x1a\xb3\
|
||||
\xd6\x68\x62\x98\x46\x67\x4c\xa7\x38\x05\x9c\x5b\x06\x99\x3f\xc3\
|
||||
\x1f\xca\xfc\xc3\x2c\x66\x9b\x19\xe2\xc6\xac\x94\xe2\xa0\x63\xd8\
|
||||
\x0a\xf2\x63\xfc\x6c\x7b\x29\xed\x2d\xed\xfd\x7d\x7e\xbc\xbf\xfc\
|
||||
\xe3\xdc\x5b\xa8\xa3\x22\x3a\xe5\x4d\xde\x9c\xf7\x9c\x93\xf3\x3e\
|
||||
\xdf\xe7\xfb\x7c\x9f\xe7\x3c\xaf\x65\x8c\xe1\x66\x0e\x9b\x9b\x3c\
|
||||
\xc2\x00\x96\x65\xbd\x2b\x9b\x3d\xbe\xf9\xe5\xba\x10\x25\x3b\x1d\
|
||||
\xdf\xeb\xda\xd2\xfe\xd0\x77\x01\x1f\xd0\xff\x17\x06\xda\x7f\xb8\
|
||||
\xa7\xbd\xa2\xbc\xe2\x6c\xcb\xc7\x1a\xee\xad\xac\xac\xf8\xe6\x9a\
|
||||
\x47\x1e\x5b\x09\x44\x01\xeb\xba\x0c\xfc\x57\x86\xb7\xfc\x61\x09\
|
||||
\x58\x3b\xeb\xe6\xcd\x68\xfc\xc4\xaa\xc5\x94\x46\xc2\x94\x46\x42\
|
||||
\x24\x46\x92\x4f\x03\x2b\x0b\x2c\x88\x49\x37\xf8\x4f\x45\xf8\xe4\
|
||||
\x8f\xf7\x4e\xdd\xfc\xa3\x57\xdb\xb7\x6d\xef\x30\x67\xce\x8d\x19\
|
||||
\x21\x8c\xb9\x7c\xd9\x33\xc3\xc3\x79\x63\x8c\x31\xcf\xed\x3c\x68\
|
||||
\xd6\x7d\xee\xe9\xad\x40\xf5\xbf\x62\xda\x32\xc6\x50\xb1\xb6\xb3\
|
||||
\xc3\x28\x65\x1b\x6d\x2c\x8c\x09\x40\x99\x2b\xe0\x8c\x36\x68\x6f\
|
||||
\xe4\xfb\xea\xb5\xf5\x7b\x01\xf1\xe4\x53\x7f\x5c\x61\xb0\x77\x2e\
|
||||
\x78\xff\xec\x79\x6b\x56\xd5\xe3\x7b\x1a\x21\x14\x4a\x19\x94\x52\
|
||||
\xd8\xb6\x45\x69\x59\x09\x4f\x6c\xd9\x93\xdd\xf7\xfa\xf3\x2d\x07\
|
||||
\xf7\xef\xea\x06\x1c\xc0\x5c\x33\x04\xf7\x2e\xaa\xbe\xf7\xa5\x6f\
|
||||
\xd7\x93\x04\xa4\x02\x57\x81\x27\xc1\x2f\xac\xf7\x1c\x4c\xb3\xed\
|
||||
\x17\x7f\x7d\x25\xbc\xfa\xd7\xed\x5f\x5b\x39\xbd\x66\xda\xb4\xd8\
|
||||
\xa3\x0f\xae\x5c\xc8\x2d\x73\xa7\xe0\xba\x1a\xad\x27\xee\x2b\xa5\
|
||||
\xa6\xdc\xb6\xb9\x7f\xc5\x82\xca\xc4\xc8\xea\xa7\x0e\xee\xdf\xd5\
|
||||
\x52\x08\x83\xb8\x26\x00\x63\x20\x0d\x0c\xe4\x41\xea\x60\x0a\x19\
|
||||
\x5c\x7d\x05\x4b\x1a\xaa\xd8\xb4\xbe\x8e\xfc\x69\xf5\x9d\xe5\xcb\
|
||||
\xdf\xc7\x87\x97\xd6\x61\x0c\x48\x39\x79\x88\xc6\xc6\x72\x3c\x70\
|
||||
\xdf\x7c\x0e\xbd\xd5\xdf\xb4\xa8\xe5\x27\x5b\x8f\x9e\x3c\xb3\x8d\
|
||||
\xb7\xb7\x1e\x05\xd4\xd5\x4c\x84\x29\x22\x98\x64\x68\x01\x17\xdf\
|
||||
\x3c\xce\xec\x6c\x9a\x96\x8d\x4b\x99\x55\x53\x8e\x31\xa0\xf5\xf5\
|
||||
\x75\x32\x32\xe2\xf2\xe9\x4f\x35\x71\xf2\xdc\xe8\x86\x93\x43\x3a\
|
||||
\x25\xe0\x71\x20\x03\xc8\x09\x00\xb4\x01\x75\x0d\x0c\xe9\xc1\x0c\
|
||||
\x7d\x87\x7a\xb9\xbb\x69\x1e\x77\x2e\x59\x78\xc3\x42\xf5\x7d\xc9\
|
||||
\x9c\xd9\x31\x1e\x7a\xf0\x03\xa4\x92\xc3\x75\x2f\x77\x33\xad\xa0\
|
||||
\x85\x89\x00\x8c\x36\x13\x00\x48\x1f\xce\xec\x3f\x4a\x54\xfb\x6c\
|
||||
\x5c\xbb\x94\x58\xe5\x8d\x65\xeb\xb1\x0b\x59\x7e\xdf\x3d\x02\xda\
|
||||
\x60\x85\x2c\x22\xe1\x10\x7d\x62\xf6\xea\x92\x65\x3f\x7f\x42\xe8\
|
||||
\xe8\x45\x08\x8b\xc0\x6b\xd1\x13\x30\x50\x88\xfb\x38\xf2\x9c\xc4\
|
||||
\x4f\xa5\xd8\xf8\xd9\xe5\x37\xec\xf5\xd1\x0b\x39\x1e\xfe\x5e\x0f\
|
||||
\x1f\x5c\x30\x83\xdb\xde\x3b\x25\xd0\x89\x67\x68\x5c\xb6\x88\x5b\
|
||||
\x17\x79\x1b\x94\x21\x69\x8c\x31\x7b\xff\xd2\x17\xcb\x5d\x1a\xfc\
|
||||
\x55\x18\x40\x99\x89\x0c\x94\x4f\x0b\x13\xa9\xae\xa6\xfb\xc8\x00\
|
||||
\x1f\x5a\x32\xf7\xdf\x36\x9e\xca\x09\xbe\xfc\xdc\x09\x9a\x9b\xe6\
|
||||
\xf0\xe8\xba\x7a\x4e\x0e\x05\x22\x06\x88\x94\xc0\xd0\xb0\xcf\xd0\
|
||||
\x58\xde\x73\x32\xee\xa5\x5c\xfe\xcc\x62\xb2\x27\x4e\x4c\xaa\x81\
|
||||
\x3d\xe7\x4b\xd9\xf2\xd2\x59\xe6\xd5\x26\x31\x06\x8c\x0a\xea\x83\
|
||||
\xd1\xba\x10\x32\x83\xd1\x66\xfc\xb9\xd6\x86\xbe\xa1\x3c\x8d\x0b\
|
||||
\x6a\x68\xdd\x50\xcf\x0b\x47\x60\x34\x17\xec\x0d\x60\xdb\x10\x0e\
|
||||
\x45\x38\x70\xe8\xe2\xac\x81\x3f\xf7\x6a\x2a\x84\xcd\x99\xad\x5d\
|
||||
\x85\x10\x68\xa4\xba\x62\x7c\x70\x04\x5e\xdc\x17\x67\xd7\xa6\x46\
|
||||
\x2a\x4b\x0c\xb1\x58\x29\x52\x81\xc4\x20\x34\x48\x65\x90\x12\x84\
|
||||
\x32\x28\x0d\x42\x81\x94\x86\x68\x69\x09\x53\xa7\x97\xf1\x62\x0f\
|
||||
\x64\xdc\x2b\xc6\x2d\x2b\x60\xe0\xd4\x1b\x17\x18\x3c\x70\x42\x13\
|
||||
\xd6\x53\xf1\x47\x0e\x00\xfe\xb8\x06\xae\x66\xa0\xeb\xc8\x30\x8b\
|
||||
\xeb\x62\xb4\xdc\x35\x85\xb3\xe7\xd3\x4c\xad\x2e\xa1\xa2\x2a\x4c\
|
||||
\x06\x48\x0b\xc8\xe4\x21\xed\x04\x33\x97\x87\x8c\x03\x29\x01\x99\
|
||||
\x31\xc8\xc4\x03\xe3\xa2\xe0\x90\x72\x05\xc9\xf8\x18\xc7\xf6\x9f\
|
||||
\x62\x74\x38\xed\x90\xf5\x87\x98\x2a\xdf\x43\xf6\x5c\x17\xe0\x14\
|
||||
\x00\x04\x9e\x14\x2b\xf6\x0b\xaf\xf6\xd1\xbe\x7e\x3e\x2e\x10\xad\
|
||||
\xa9\xe2\xec\x85\x04\xb7\xdd\x5e\x83\x67\xc0\x17\xe0\x0a\x48\xa6\
|
||||
\x21\x9e\x30\x8c\x65\x34\xfd\x83\x1e\xc9\xb4\x26\x95\x51\x64\xb2\
|
||||
\x12\x37\xef\x23\x5c\x0f\x99\xc9\x31\x1a\x1f\x65\x74\x2c\x8f\x72\
|
||||
\x44\x0a\x57\x24\x08\x99\x30\xb6\x29\x25\x75\xb0\x1b\xc8\x17\x44\
|
||||
\x08\xb2\xc0\xc0\xdb\x7d\x92\xc1\x44\x9e\x96\x65\xd5\x78\x1a\x74\
|
||||
\x04\xa8\x9a\xc2\xb1\xb3\x19\xaa\x67\xc5\x38\x1d\x87\xfe\x21\x4d\
|
||||
\x32\xad\x48\xa6\x15\xa9\x8c\x22\x99\x51\xa4\x52\x92\xd1\xb4\x22\
|
||||
\x97\xf5\x90\x8e\x8f\xcc\xe5\x19\x19\xbc\x8c\x92\x1a\x65\x97\x81\
|
||||
\xf0\x83\x0a\x58\x4a\x05\x32\x7f\x9a\xd1\x8e\x3e\x20\x6f\x8f\x33\
|
||||
\x50\x00\xb0\xbb\x33\x4e\xcb\xd2\x1a\xca\x23\x20\x0c\x78\x80\x28\
|
||||
\x8f\x70\x6a\x18\xba\x4f\x18\x86\xc7\xc0\x13\x06\x5f\x04\x5a\x10\
|
||||
\xca\x20\x04\xf8\x32\x58\x1b\x03\xe9\xb4\xc3\xa5\x44\x16\x1d\x89\
|
||||
\x62\x55\x54\xe2\x7c\xf1\x33\xe3\xe1\x9d\x53\xa3\x2b\xf1\x2f\xf7\
|
||||
\x10\x6c\xed\xda\xc5\x2c\x28\xd6\x81\x7d\x87\x87\x58\xb3\x74\x26\
|
||||
\x1e\x90\xf1\xa1\x6f\x14\xe2\x49\xd0\x91\x18\x43\x89\x1c\xbe\x08\
|
||||
\x0c\x4a\x05\xbe\x04\x21\x02\x31\x4a\x6d\x91\x77\x14\xf1\x78\x9a\
|
||||
\xac\x67\x08\x57\xc6\xb0\xc2\x61\x92\x6b\x1f\xa1\xac\xb5\x06\xe7\
|
||||
\xb1\xd6\x6a\x80\x8b\x69\x15\x25\xd9\xf5\x0a\x90\xbf\x4a\x84\x06\
|
||||
\xa9\xa1\xef\x82\x24\x9f\xf3\xf9\xf8\xdd\xd3\x19\xc8\xc2\x40\x16\
|
||||
\x72\x7e\xf0\xd3\x31\x36\x48\x2b\xc4\x68\xca\xc5\xb2\x23\xf8\xd2\
|
||||
\x20\xa5\x09\x32\x40\xc1\x60\x22\xc7\x50\xc2\xc3\x8a\x96\x93\xbc\
|
||||
\xff\x23\x00\x4c\xfb\xed\xef\x0a\x7e\xdf\x09\xec\x86\x52\x53\xe1\
|
||||
\x7c\x69\x13\xc0\x2f\xa3\x6d\xcc\x1d\x07\xa0\x0a\x75\xe0\x37\xbb\
|
||||
\xcf\xf3\xf0\xb2\x99\x24\x3c\xc8\x7a\x10\xb5\x82\x14\xb2\x6d\x08\
|
||||
\x85\xc0\x54\x95\x12\x1f\xc8\x10\x2d\x0f\x11\x41\x12\xb1\x14\x11\
|
||||
\x23\xc8\x8d\x66\x88\x86\x60\xf6\x8c\x32\x8e\xdf\x71\x0f\x65\xad\
|
||||
\x0a\xb7\x37\xc4\x18\x9f\x84\x66\x80\x26\x68\xde\x8d\xc3\x57\xe7\
|
||||
\xd0\x0c\x65\x0d\x0a\x87\xda\x81\x68\x5b\xbf\x1d\x30\x50\xc8\xe7\
|
||||
\x8e\xee\x41\x9e\xdf\xd4\xc8\xc2\x18\x10\xbb\x92\x96\x4a\x81\x10\
|
||||
\x0a\x29\x15\x72\x61\x09\x42\x78\xc1\x5a\x4a\xa4\xd4\x08\x11\x29\
|
||||
\xac\x25\xc7\xc4\x9f\xa8\xdf\x71\x1f\x65\xad\x2b\xa0\xa1\x11\xb8\
|
||||
\x1d\x98\x49\x59\xc3\x4f\xa1\xe1\xef\x40\x0f\xee\x8e\x0e\xa2\x6d\
|
||||
\xfd\x31\x02\x62\x03\x0d\xbc\x76\x28\x4d\x08\xc3\xaa\xa6\xaa\x77\
|
||||
\x76\xae\x36\x84\x42\x16\xb6\x5d\x9c\x36\xb6\x6d\x63\x59\x36\xb6\
|
||||
\x6d\xfd\xd3\x3b\x8b\xbf\xdd\xf5\x3a\xee\x8e\x0e\xdc\xde\x67\x80\
|
||||
\x99\xc0\x1d\xc0\x4c\xdc\xde\x67\x8a\xc6\xe7\x17\x9b\x93\x02\x00\
|
||||
\x43\xe7\x9b\x83\x7c\xfe\x81\x6b\xd7\xfd\x20\x0c\x45\xc3\xa1\x71\
|
||||
\x83\xa1\x90\x8d\x65\x15\x0d\x87\xb0\x6d\x9b\x50\x28\x00\x75\x9d\
|
||||
\x91\x2f\x02\x18\xaf\x84\x47\x7a\x2f\xf1\xb3\x2f\xdc\x33\xe9\x17\
|
||||
\x96\x15\x78\xaa\xf5\x3b\x99\xd0\xda\x10\x0a\x99\xf1\x77\xf5\x6f\
|
||||
\x14\x42\x40\x23\x30\x0c\x1c\x06\x86\x29\x6b\xf8\x0a\x34\xf4\xe0\
|
||||
\xd0\x71\x29\xda\xd6\x6f\x8d\x03\x38\x7d\xf6\x32\xb7\xde\x12\x63\
|
||||
\xc1\x9c\x92\xc9\x0f\x10\x76\xa1\x64\x6b\x81\xe7\xfb\xb8\xae\x87\
|
||||
\xe7\xb9\xb8\xae\x87\xeb\xfa\x38\xae\x8b\xeb\x79\x34\x1f\x5f\x57\
|
||||
\x10\x61\x07\x74\x76\x10\x88\xee\x5b\xb8\xbd\x9b\xa1\x93\xe0\xbe\
|
||||
\x55\xe1\x50\x6b\xa2\x6d\xfd\x56\xb8\xc8\xf1\x58\x5a\xf0\xd1\xaf\
|
||||
\x1f\x06\x13\xa4\x65\xd0\x1d\x07\xed\x9a\x2e\xfc\xf9\xb4\x56\x68\
|
||||
\xa9\x91\x4a\xa1\x95\x46\x2b\x85\x2c\x5c\xfb\x13\x1e\x99\x84\x00\
|
||||
\xbd\x15\x87\x4d\x00\x44\x9f\xfd\x01\x0e\xdf\x80\x86\xb7\xa0\x13\
|
||||
\xa2\x6d\xfd\xcd\xce\xf6\xda\x4e\xb7\x33\x44\x91\x01\xcb\x18\x83\
|
||||
\x65\x59\x55\x40\x2d\x30\xe5\xdd\x3e\xfb\x39\xdb\x6b\xbb\xca\x5a\
|
||||
\x6b\x70\x77\x24\x88\xb6\xf5\xd7\x03\x71\x82\x1e\xd8\x5c\x0d\xa0\
|
||||
\xa4\x70\x8c\x2a\xf9\x5f\x1c\x40\x9d\xed\xb5\x23\xd1\xb6\xfe\xe9\
|
||||
\x05\xe1\x4d\xe8\x09\xad\x9b\x7d\x3c\xff\x07\x19\xbf\x1f\xed\x82\
|
||||
\xbb\x44\xa7\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
|
||||
"
|
||||
|
||||
qt_resource_name = "\
|
||||
\x00\x0e\
|
||||
\x0b\xdf\x7d\x87\
|
||||
\x00\x66\
|
||||
\x00\x69\x00\x6c\x00\x65\x00\x73\x00\x61\x00\x76\x00\x65\x00\x61\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\
|
||||
\x00\x0c\
|
||||
\x05\x68\x0e\x67\
|
||||
\x00\x66\
|
||||
\x00\x69\x00\x6c\x00\x65\x00\x73\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
|
||||
\x00\x0c\
|
||||
\x09\xa7\x0e\x47\
|
||||
\x00\x66\
|
||||
\x00\x69\x00\x6c\x00\x65\x00\x71\x00\x75\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
|
||||
\x00\x0c\
|
||||
\x0b\x21\x0f\x87\
|
||||
\x00\x66\
|
||||
\x00\x69\x00\x6c\x00\x65\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
|
||||
\x00\x07\
|
||||
\x0e\x6f\x57\x87\
|
||||
\x00\x67\
|
||||
\x00\x70\x00\x6c\x00\x2e\x00\x70\x00\x6e\x00\x67\
|
||||
\x00\x0d\
|
||||
\x06\x52\xd9\xe7\
|
||||
\x00\x66\
|
||||
\x00\x69\x00\x6c\x00\x65\x00\x70\x00\x72\x00\x69\x00\x6e\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
|
||||
\x00\x0b\
|
||||
\x04\x14\x52\xc7\
|
||||
\x00\x66\
|
||||
\x00\x69\x00\x6c\x00\x65\x00\x6e\x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\
|
||||
"
|
||||
|
||||
qt_resource_struct = "\
|
||||
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x01\
|
||||
\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x30\x9a\
|
||||
\x00\x00\x00\x22\x00\x00\x00\x00\x00\x01\x00\x00\x08\x19\
|
||||
\x00\x00\x00\x90\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x35\
|
||||
\x00\x00\x00\x40\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x61\
|
||||
\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x01\x00\x00\x14\xe0\
|
||||
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
|
||||
\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x87\
|
||||
"
|
||||
|
||||
def qInitResources():
|
||||
QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
def qCleanupResources():
|
||||
QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
|
||||
|
||||
qInitResources()
|
Binary file not shown.
|
@ -0,0 +1,160 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
|
||||
class ReadingTab(QWidget):
|
||||
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(ReadingTab, self).__init__(parent)
|
||||
|
||||
self.readingTable = QTableWidget()
|
||||
|
||||
self.addReadingButton = QPushButton("Add pages to read")
|
||||
self.editReadingButton = QPushButton("Edit pages")
|
||||
self.readingDoneButton = QPushButton("Done")
|
||||
|
||||
vlayout = QVBoxLayout()
|
||||
hlayout = QHBoxLayout()
|
||||
|
||||
hlayout.addWidget(self.addReadingButton)
|
||||
hlayout.addWidget(self.editReadingButton)
|
||||
hlayout.addWidget(self.readingDoneButton)
|
||||
|
||||
vlayout.addWidget(self.readingTable)
|
||||
vlayout.addLayout(hlayout)
|
||||
|
||||
self.setLayout(vlayout)
|
||||
|
||||
|
||||
class ReadingDlg(QDialog):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(ReadingDlg, self).__init__(parent)
|
||||
|
||||
weekLabel = QLabel(self.trUtf8("&Week"))
|
||||
courseLabel = QLabel(self.trUtf8("&Course"))
|
||||
bookLabel = QLabel(self.trUtf8("&Book"))
|
||||
chapterLabel = QLabel(self.trUtf8("Cha&pter"))
|
||||
pagesLabel = QLabel(self.trUtf8("&Pages"))
|
||||
numberOfPagesLabel = QLabel(self.trUtf8("&Number of pages"))
|
||||
|
||||
weekEdit = QSpinBox()
|
||||
weekEdit.setRange(1, 52)
|
||||
courseEdit = QComboBox()
|
||||
bookEdit = QComboBox()
|
||||
chapterEdit = QLineEdit()
|
||||
pagesEdit = QLineEdit()
|
||||
numberOfPagesEdit = QLabel()
|
||||
|
||||
weekLabel.setBuddy(weekEdit)
|
||||
courseLabel.setBuddy(courseEdit)
|
||||
bookLabel.setBuddy(bookEdit)
|
||||
chapterLabel.setBuddy(chapterEdit)
|
||||
pagesLabel.setBuddy(pagesEdit)
|
||||
numberOfPagesLabel.setBuddy(numberOfPagesEdit)
|
||||
|
||||
self.layout = QGridLayout()
|
||||
self.layout.addWidget(weekLabel, 0, 0)
|
||||
self.layout.addWidget(courseLabel, 1, 0)
|
||||
self.layout.addWidget(bookLabel, 2, 0)
|
||||
self.layout.addWidget(chapterLabel, 3, 0)
|
||||
self.layout.addWidget(pagesLabel, 4, 0)
|
||||
self.layout.addWidget(numberOfPagesLabel, 5, 0)
|
||||
self.layout.addWidget(weekEdit, 0, 1)
|
||||
self.layout.addWidget(courseEdit, 1, 1)
|
||||
self.layout.addWidget(bookEdit, 2, 1)
|
||||
self.layout.addWidget(chapterEdit, 3, 1)
|
||||
self.layout.addWidget(pagesEdit, 4, 1)
|
||||
self.layout.addWidget(numberOfPagesEdit, 5, 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, 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 reading"))
|
||||
|
||||
|
||||
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, 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 reading"))
|
||||
|
||||
def apply(self):
|
||||
pass
|
||||
|
||||
|
||||
class ReadingModel():
|
||||
|
||||
week = ""
|
||||
course = ""
|
||||
book = ""
|
||||
chapter = ""
|
||||
pages = ""
|
||||
|
||||
def setWeek(self, week):
|
||||
self.week = week
|
||||
|
||||
def getWeek(self):
|
||||
return self.week
|
||||
|
||||
def setCourse(self, course):
|
||||
self.course = course
|
||||
|
||||
def getCourse(self):
|
||||
return self.course
|
||||
|
||||
def setBook(self, book):
|
||||
self.book = book
|
||||
|
||||
def getBook(self):
|
||||
return self.book
|
||||
|
||||
def setChapter(self, chapter):
|
||||
self.chapter = chapter
|
||||
|
||||
def getChapter(self):
|
||||
return self.chapter
|
||||
|
||||
def setPages(self, pages):
|
||||
self.pages = pages
|
||||
|
||||
def getPages(self):
|
||||
return self.pages
|
||||
|
||||
def getNumberOfPages(self):
|
||||
pages = self.getPages()
|
||||
pagesArray = pages.split(", ")
|
||||
nextArray = []
|
||||
sum = 0
|
||||
for p in pagesArray:
|
||||
nextArray.append(p.split("-"))
|
||||
for n in nextArray:
|
||||
sum += int(n[1]) - int(n[0])
|
||||
return sum
|
||||
|
Binary file not shown.
|
@ -0,0 +1,158 @@
|
|||
#!/usr/bin/env python
|
||||
#coding: utf-8
|
||||
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from PyQt4.QtCore import *
|
||||
from PyQt4.QtGui import *
|
||||
|
||||
class ScheduleTab(QWidget):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(ScheduleTab, self).__init__(parent)
|
||||
|
||||
self.scheduleTable = QTableWidget()
|
||||
|
||||
self.addScheduleButton = QPushButton("Add lesson")
|
||||
self.editScheduleButton = QPushButton("Edit lesson")
|
||||
|
||||
vlayout = QVBoxLayout()
|
||||
hlayout = QHBoxLayout()
|
||||
|
||||
hlayout.addWidget(self.addScheduleButton)
|
||||
hlayout.addWidget(self.editScheduleButton)
|
||||
|
||||
vlayout.addWidget(self.scheduleTable)
|
||||
vlayout.addLayout(hlayout)
|
||||
|
||||
self.setLayout(vlayout)
|
||||
|
||||
|
||||
class ScheduleDlg(QDialog):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(ScheduleDlg, self).__init__(parent)
|
||||
|
||||
dayLabel = QLabel(self.trUtf8("&Day"))
|
||||
fromLabel = QLabel(self.trUtf8("&From"))
|
||||
toLabel = QLabel(self.trUtf8("&To"))
|
||||
courseLabel = QLabel(self.trUtf8("&Course"))
|
||||
typeLabel = QLabel(self.trUtf8("Ty&pe"))
|
||||
roomLabel = QLabel(self.trUtf8("&Room"))
|
||||
|
||||
dayEdit = QComboBox()
|
||||
days = [self.trUtf8("Monday"), self.trUtf8("Tuesday"), self.trUtf8("Wednesday"), self.trUtf8("Thursday"), self.trUtf8("Friday")]
|
||||
dayEdit.addItems(days)
|
||||
fromEdit = QSpinBox()
|
||||
fromEdit.setRange(08.15, 18.15)
|
||||
fromEdit.setSingleStep(01.00)
|
||||
toEdit = QSpinBox()
|
||||
toEdit.setRange(09.00, 19.00)
|
||||
toEdit.setSingleStep(01.00)
|
||||
courseEdit = QComboBox()
|
||||
typeEdit = QComboBox()
|
||||
types = [self.trUtf8("Lecture"), self.trUtf8("Assignment lecture"), self.trUtf8("Assignment help"), self.trUtf8("Assignment"), self.trUtf8("Lab"), self.trUtf8("Seminar"), self.trUtf8("Other")]
|
||||
typeEdit.addItems(types)
|
||||
roomEdit = QLineEdit()
|
||||
|
||||
dayLabel.setBuddy(dayEdit)
|
||||
fromLabel.setBuddy(fromEdit)
|
||||
toLabel.setBuddy(toEdit)
|
||||
courseLabel.setBuddy(courseEdit)
|
||||
typeLabel.setBuddy(typeEdit)
|
||||
roomLabel.setBuddy(roomEdit)
|
||||
|
||||
self.layout = QGridLayout()
|
||||
self.layout.addWidget(dayLabel, 0, 0)
|
||||
self.layout.addWidget(fromLabel, 1, 0)
|
||||
self.layout.addWidget(toLabel, 2, 0)
|
||||
self.layout.addWidget(courseLabel, 3, 0)
|
||||
self.layout.addWidget(typeLabel, 4, 0)
|
||||
self.layout.addWidget(roomLabel, 5, 0)
|
||||
self.layout.addWidget(dayEdit, 0, 1)
|
||||
self.layout.addWidget(fromEdit, 1, 1)
|
||||
self.layout.addWidget(toEdit, 2, 1)
|
||||
self.layout.addWidget(courseEdit, 3, 1)
|
||||
self.layout.addWidget(typeEdit, 4, 1)
|
||||
self.layout.addWidget(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"))
|
||||
|
||||
|
||||
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 = ""
|
||||
fromTime = ""
|
||||
toTime = ""
|
||||
course = ""
|
||||
type = ""
|
||||
room = ""
|
||||
|
||||
def setDay(self, day):
|
||||
self.day = day
|
||||
|
||||
def getDay(self):
|
||||
return self.day
|
||||
|
||||
def setFromTime(self, fromTime):
|
||||
self.fromTime = fromTime
|
||||
|
||||
def getFromTime(self):
|
||||
return self.fromTime
|
||||
|
||||
def setToTime(self, toTime):
|
||||
self.toTime = toTime
|
||||
|
||||
def getToTime(self):
|
||||
return self.toTime
|
||||
|
||||
def setCourse(self, course):
|
||||
self.course = course
|
||||
|
||||
def getCourse(self):
|
||||
return self.course
|
||||
|
||||
def setType(self, type):
|
||||
self.type = type
|
||||
|
||||
def getType(self):
|
||||
return self.type
|
||||
|
||||
def setRoom(self, room):
|
||||
self.room = room
|
||||
|
||||
def getRoom(self):
|
||||
return self.room
|
Binary file not shown.
Reference in New Issue