Compare commits
10 Commits
3205c764ba
...
83e370f033
Author | SHA1 | Date |
---|---|---|
rot | 83e370f033 | |
Tiril Anette Langfeldt Rødland | c26b65eba0 | |
Tiril Anette Langfeldt Rødland | cf7cab2e4a | |
Tiril Anette Langfeldt Rødland | 85cfc171d2 | |
Tiril Anette Langfeldt Rødland | fc3b2bd1cc | |
Tiril Anette Langfeldt Rødland | 7c6335cafe | |
Tiril Anette Langfeldt Rødland | e29712856c | |
Tiril Anette Langfeldt Rødland | b431ce82f2 | |
Tiril Anette Langfeldt Rødland | 7b3699273c | |
Tiril Anette Langfeldt Rødland | 0136308391 |
|
@ -1,33 +0,0 @@
|
||||||
#!/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)
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
#!/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)
|
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
# 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.
|
|
@ -1,34 +0,0 @@
|
||||||
#!/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)
|
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
#!/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)
|
|
16
actions.py
16
actions.py
|
@ -1,16 +0,0 @@
|
||||||
#!/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 *
|
|
||||||
|
|
BIN
actions.pyc
BIN
actions.pyc
Binary file not shown.
|
@ -1,25 +0,0 @@
|
||||||
#!/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.
|
@ -1,24 +0,0 @@
|
||||||
#!/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"))
|
|
||||||
|
|
BIN
addBookDlg.pyc
BIN
addBookDlg.pyc
Binary file not shown.
|
@ -1,20 +0,0 @@
|
||||||
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"))
|
|
||||||
|
|
BIN
addCourseDlg.pyc
BIN
addCourseDlg.pyc
Binary file not shown.
|
@ -1,27 +0,0 @@
|
||||||
#!/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.
|
@ -1,28 +0,0 @@
|
||||||
#!/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.
185
assignment.py
185
assignment.py
|
@ -1,185 +0,0 @@
|
||||||
#!/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
|
|
||||||
|
|
BIN
assignment.pyc
BIN
assignment.pyc
Binary file not shown.
|
@ -1,61 +0,0 @@
|
||||||
#!/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.
|
@ -1,66 +0,0 @@
|
||||||
#!/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.
67
book.py
67
book.py
|
@ -1,67 +0,0 @@
|
||||||
#!/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"))
|
|
||||||
|
|
||||||
|
|
50
bookDlg.py
50
bookDlg.py
|
@ -1,50 +0,0 @@
|
||||||
#!/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)
|
|
BIN
bookDlg.pyc
BIN
bookDlg.pyc
Binary file not shown.
20
calendar.py
20
calendar.py
|
@ -1,20 +0,0 @@
|
||||||
#!/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)
|
|
||||||
|
|
BIN
calendar.pyc
BIN
calendar.pyc
Binary file not shown.
104
course.py
104
course.py
|
@ -1,104 +0,0 @@
|
||||||
#!/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
|
|
BIN
course.pyc
BIN
course.pyc
Binary file not shown.
39
courseDlg.py
39
courseDlg.py
|
@ -1,39 +0,0 @@
|
||||||
#!/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)
|
|
BIN
courseDlg.pyc
BIN
courseDlg.pyc
Binary file not shown.
170
db.py
170
db.py
|
@ -1,170 +0,0 @@
|
||||||
#!/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()
|
|
|
@ -1,28 +0,0 @@
|
||||||
#!/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.
|
@ -1,32 +0,0 @@
|
||||||
#!/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.
|
@ -1,31 +0,0 @@
|
||||||
#!/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
|
#!/usr/bin/env python
|
||||||
#coding: utf-8
|
#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.
|
# 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/>.
|
# 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 *
|
from qrc_resources import *
|
||||||
|
|
||||||
|
|
||||||
__version__ = "1.0.2"
|
__version__ = "1.1.0"
|
||||||
|
|
||||||
|
|
||||||
main = None
|
main = None
|
||||||
|
@ -39,7 +39,7 @@ class MainWindow(QMainWindow):
|
||||||
super(MainWindow, self).__init__(parent)
|
super(MainWindow, self).__init__(parent)
|
||||||
|
|
||||||
# The program name
|
# The program name
|
||||||
self.title = "Egon"
|
self.title = self.trUtf8("Egon")
|
||||||
|
|
||||||
# The days
|
# The days
|
||||||
self.days = [self.trUtf8("Monday"), self.trUtf8("Tuesday"), self.trUtf8("Wednesday"), self.trUtf8("Thursday"), self.trUtf8("Friday")]
|
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
|
# Set the tabs in the middle
|
||||||
self.tabs = QTabWidget()
|
self.tabs = QTabWidget()
|
||||||
self.tabs.addTab(self.assignment, "&Assignments")
|
self.tabs.addTab(self.assignment, self.trUtf8("&Assignment"))
|
||||||
self.tabs.addTab(self.reading, "&Reading List")
|
self.tabs.addTab(self.reading, self.trUtf8("&Reading List"))
|
||||||
self.tabs.addTab(self.schedule, "&Schedule")
|
self.tabs.addTab(self.schedule, self.trUtf8("&Schedule"))
|
||||||
self.tabs.setTabShape(QTabWidget.Rounded)
|
self.tabs.setTabShape(QTabWidget.Rounded)
|
||||||
self.tabs.setTabPosition(QTabWidget.North)
|
self.tabs.setTabPosition(QTabWidget.North)
|
||||||
self.setCentralWidget(self.tabs)
|
self.setCentralWidget(self.tabs)
|
||||||
|
@ -61,7 +61,7 @@ class MainWindow(QMainWindow):
|
||||||
# The calendar
|
# The calendar
|
||||||
self.calendarFrame = QFrame()
|
self.calendarFrame = QFrame()
|
||||||
self.calendarFrame.setFrameStyle(QFrame.StyledPanel|QFrame.Sunken)
|
self.calendarFrame.setFrameStyle(QFrame.StyledPanel|QFrame.Sunken)
|
||||||
self.calendarDockWidget = QDockWidget("Calendar", self)
|
self.calendarDockWidget = QDockWidget(self.trUtf8("Calendar"), self)
|
||||||
self.calendarDockWidget.setVisible(False)
|
self.calendarDockWidget.setVisible(False)
|
||||||
self.calendarDockWidget.setObjectName("CalendarDockWidget")
|
self.calendarDockWidget.setObjectName("CalendarDockWidget")
|
||||||
self.calendarDockWidget.setAllowedAreas(Qt.LeftDockWidgetArea|Qt.RightDockWidgetArea|Qt.BottomDockWidgetArea)
|
self.calendarDockWidget.setAllowedAreas(Qt.LeftDockWidgetArea|Qt.RightDockWidgetArea|Qt.BottomDockWidgetArea)
|
||||||
|
@ -84,21 +84,21 @@ class MainWindow(QMainWindow):
|
||||||
self.load(semester)
|
self.load(semester)
|
||||||
|
|
||||||
# Actions
|
# Actions
|
||||||
fileNewAction = self.createAction("&New", self.fileNew, QKeySequence.New, "filenew", "Create a new semester plan")
|
fileNewAction = self.createAction(self.trUtf8("&New"), self.fileNew, QKeySequence.New, "filenew", self.trUtf8("Create a new semester plan"))
|
||||||
fileOpenAction = self.createAction("&Open", self.fileOpen, QKeySequence.Open, "fileopen", "Open an existing semester plan")
|
fileOpenAction = self.createAction(self.trUtf8("&Open"), self.fileOpen, QKeySequence.Open, "fileopen", self.trUtf8("Open an existing semester plan"))
|
||||||
fileQuitAction = self.createAction("&Quit", self.close, "Ctrl+Q", "filequit", "Quit program")
|
fileQuitAction = self.createAction(self.trUtf8("&Quit"), self.close, "Ctrl+Q", "filequit", self.trUtf8("Quit program"))
|
||||||
editAddCourse = self.createAction("Add &course", self.addCourse, "Ctrl+C", None, "Add a new course")
|
editAddCourse = self.createAction(self.trUtf8("Add &course"), self.addCourse, "Ctrl+C", None, self.trUtf8("Add a new course"))
|
||||||
editAddBook = self.createAction("Add &book", self.addBook, "Ctrl+B", None, "Add a new book")
|
editAddBook = self.createAction(self.trUtf8("Add &book"), self.addBook, "Ctrl+B", None, self.trUtf8("Add a new book"))
|
||||||
editAddAssignment = self.createAction("Add &assignment", self.addAssignment, "Ctrl+A", None, "Add a new assignment")
|
editAddAssignment = self.createAction(self.trUtf8("Add &assignment"), self.addAssignment, "Ctrl+A", None, self.trUtf8("Add a new assignment"))
|
||||||
editAddReading = self.createAction("Add &reading", self.addReading, "Ctrl+R", None, "Add a new reading")
|
editAddReading = self.createAction(self.trUtf8("Add &reading"), self.addReading, "Ctrl+R", None, self.trUtf8("Add a new reading"))
|
||||||
editAddLesson = self.createAction("Add &lesson", self.addLesson, "Ctrl+L", None, "Add a new lesson")
|
editAddLesson = self.createAction(self.trUtf8("Add &lesson"), self.addLesson, "Ctrl+L", None, self.trUtf8("Add a new lesson"))
|
||||||
editShowCalendar = self.createAction("Cal&endar", self.showCalendar, "Ctrl+E", None, "Show the calendar")
|
editShowCalendar = self.createAction(self.trUtf8("Cal&endar"), self.showCalendar, "Ctrl+E", None, self.trUtf8("Show the calendar"))
|
||||||
helpAboutScheduler = self.createAction("&About %s" % self.title)
|
helpAboutScheduler = self.createAction(self.trUtf8("&About Egon"))
|
||||||
|
|
||||||
# Menus
|
# Menus
|
||||||
self.fileMenu = self.menuBar().addMenu("&File")
|
self.fileMenu = self.menuBar().addMenu(self.trUtf8("&File"))
|
||||||
self.editMenu = self.menuBar().addMenu("&Edit")
|
self.editMenu = self.menuBar().addMenu(self.trUtf8("&Edit"))
|
||||||
self.helpMenu = self.menuBar().addMenu("&Help")
|
self.helpMenu = self.menuBar().addMenu(self.trUtf8("&Help"))
|
||||||
|
|
||||||
# Add actions to the menus
|
# Add actions to the menus
|
||||||
self.addActions(self.fileMenu, (fileNewAction, fileOpenAction, None, fileQuitAction))
|
self.addActions(self.fileMenu, (fileNewAction, fileOpenAction, None, fileQuitAction))
|
||||||
|
@ -115,7 +115,7 @@ class MainWindow(QMainWindow):
|
||||||
self.connect(helpAboutScheduler, SIGNAL("triggered()"), self.helpAbout)
|
self.connect(helpAboutScheduler, SIGNAL("triggered()"), self.helpAbout)
|
||||||
self.connect(self.assignment.addAssignmentButton, SIGNAL("pressed()"), self.addAssignment)
|
self.connect(self.assignment.addAssignmentButton, SIGNAL("pressed()"), self.addAssignment)
|
||||||
self.connect(self.assignment.deleteAssignmentButton, SIGNAL("pressed()"), self.deleteAssignment)
|
self.connect(self.assignment.deleteAssignmentButton, SIGNAL("pressed()"), self.deleteAssignment)
|
||||||
self.connect(self.assignment.completeAssignmentBox, SIGNAL("currentIndexChanged(QString)"), self.completeAssignment)
|
self.connect(self.assignment.statusAssignmentBox, SIGNAL("currentIndexChanged(QString)"), self.statusAssignment)
|
||||||
self.connect(self.reading.addReadingButton, SIGNAL("pressed()"), self.addReading)
|
self.connect(self.reading.addReadingButton, SIGNAL("pressed()"), self.addReading)
|
||||||
self.connect(self.reading.deleteReadingButton, SIGNAL("pressed()"), self.deleteReading)
|
self.connect(self.reading.deleteReadingButton, SIGNAL("pressed()"), self.deleteReading)
|
||||||
self.connect(self.reading.readingDoneButton, SIGNAL("pressed()"), self.doneReading)
|
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)
|
self.connect(self.schedule.deleteScheduleButton, SIGNAL("pressed()"), self.deleteLesson)
|
||||||
|
|
||||||
# The toolbars
|
# The toolbars
|
||||||
fileToolbar = self.addToolBar("File")
|
fileToolbar = self.addToolBar(self.trUtf8("File"))
|
||||||
fileToolbar.setObjectName("FileToolBar")
|
fileToolbar.setObjectName("FileToolBar")
|
||||||
self.addActions(fileToolbar, (fileNewAction, fileOpenAction, None, fileQuitAction))
|
self.addActions(fileToolbar, (fileNewAction, fileOpenAction, None, fileQuitAction))
|
||||||
editToolbar = self.addToolBar("Edit")
|
editToolbar = self.addToolBar(self.trUtf8("Edit"))
|
||||||
editToolbar.setObjectName("EditToolBar")
|
editToolbar.setObjectName("EditToolBar")
|
||||||
self.addActions(editToolbar, (editAddCourse, editAddBook, None, editShowCalendar))
|
self.addActions(editToolbar, (editAddCourse, editAddBook, None, editShowCalendar))
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ class MainWindow(QMainWindow):
|
||||||
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||||
|
|
||||||
## Update the assignment's completion level to the specified level
|
## Update the assignment's completion level to the specified level
|
||||||
def completeAssignment(self, completionLevel):
|
def statusAssignment(self, completionLevel):
|
||||||
course, number = self.getCourseAndNumber()
|
course, number = self.getCourseAndNumber()
|
||||||
table, row = self.getAssignmentTableAndRow()
|
table, row = self.getAssignmentTableAndRow()
|
||||||
updateAssignmentCompletion(course, number, completionLevel)
|
updateAssignmentCompletion(course, number, completionLevel)
|
||||||
|
@ -223,10 +223,10 @@ class MainWindow(QMainWindow):
|
||||||
|
|
||||||
## Delete the reading from the database and the table
|
## Delete the reading from the database and the table
|
||||||
def deleteReading(self):
|
def deleteReading(self):
|
||||||
week, course, book = self.getWeekCourseAndBook()
|
week, course, book, chapter = self.getWeekCourseBookAndChapter()
|
||||||
table, row = self.getReadingTableAndRow()
|
table, row = self.getReadingTableAndRow()
|
||||||
global semester
|
global semester
|
||||||
removeReadingFromDB(week, course, book)
|
removeReadingFromDB(week, course, book, chapter)
|
||||||
table.removeRow(row)
|
table.removeRow(row)
|
||||||
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ class MainWindow(QMainWindow):
|
||||||
item = QTableWidgetItem(self.trUtf8("Done"))
|
item = QTableWidgetItem(self.trUtf8("Done"))
|
||||||
item.setBackground(QBrush(Qt.green, Qt.SolidPattern))
|
item.setBackground(QBrush(Qt.green, Qt.SolidPattern))
|
||||||
else:
|
else:
|
||||||
done = False
|
done = True
|
||||||
item = QTableWidgetItem(self.trUtf8("Not done"))
|
item = QTableWidgetItem(self.trUtf8("Not done"))
|
||||||
item.setBackground(QBrush(Qt.red, Qt.SolidPattern))
|
item.setBackground(QBrush(Qt.red, Qt.SolidPattern))
|
||||||
table.setItem(row, 6, item)
|
table.setItem(row, 6, item)
|
||||||
|
@ -249,7 +249,9 @@ class MainWindow(QMainWindow):
|
||||||
bookTitle = table.item(row, 2).text()
|
bookTitle = table.item(row, 2).text()
|
||||||
book = getBookWithTitleFromDB(bookTitle)
|
book = getBookWithTitleFromDB(bookTitle)
|
||||||
bookIsbn = book.getIsbn()
|
bookIsbn = book.getIsbn()
|
||||||
updateReadingDone(week, courseCode, bookIsbn, True)
|
chapter = table.item(row, 3).text()
|
||||||
|
updateReadingDone(week, courseCode, bookIsbn, chapter, done)
|
||||||
|
print week, courseCode, bookIsbn, chapter, done
|
||||||
|
|
||||||
## Return the reading table and its current row
|
## Return the reading table and its current row
|
||||||
def getReadingTableAndRow(self):
|
def getReadingTableAndRow(self):
|
||||||
|
@ -258,22 +260,24 @@ class MainWindow(QMainWindow):
|
||||||
return table, row
|
return table, row
|
||||||
|
|
||||||
## Return the week, course and book of the current reading
|
## Return the week, course and book of the current reading
|
||||||
def getWeekCourseAndBook(self):
|
def getWeekCourseBookAndChapter(self):
|
||||||
table, row = self.getReadingTableAndRow()
|
table, row = self.getReadingTableAndRow()
|
||||||
weekItem = table.item(row, 0)
|
weekItem = table.item(row, 0)
|
||||||
courseItem = table.item(row, 1)
|
courseItem = table.item(row, 1)
|
||||||
bookItem = table.item(row, 2)
|
bookItem = table.item(row, 2)
|
||||||
|
chapterItem = table.item(row, 3)
|
||||||
week = (weekItem.text().toInt())[0]
|
week = (weekItem.text().toInt())[0]
|
||||||
courseFull = courseItem.text()
|
courseFull = courseItem.text()
|
||||||
courseCode = getCourseCode(courseFull)
|
courseCode = getCourseCode(courseFull)
|
||||||
book = getBookWithTitleFromDB(bookItem.text())
|
book = getBookWithTitleFromDB(bookItem.text())
|
||||||
return week, courseCode, book.getIsbn()
|
chapter = chapterItem.text()
|
||||||
|
return week, courseCode, book.getIsbn(), chapter
|
||||||
|
|
||||||
# Schedule
|
# Schedule
|
||||||
|
|
||||||
## Open the Add Lesson dialog
|
## Open the Add Lesson dialog
|
||||||
def addLesson(self):
|
def addLesson(self):
|
||||||
self.sdlg = ScheduleDlg()
|
self.sdlg = ScheduleDlg()
|
||||||
self.sdlg.show()
|
self.sdlg.show()
|
||||||
|
|
||||||
## Delete the lesson from the database and the table
|
## Delete the lesson from the database and the table
|
||||||
|
@ -333,15 +337,15 @@ class MainWindow(QMainWindow):
|
||||||
|
|
||||||
# General
|
# General
|
||||||
|
|
||||||
## Make and open the About dialog
|
## Make and open the About dialo
|
||||||
def helpAbout(self):
|
def helpAbout(self):
|
||||||
QMessageBox.about(self, "About %s" % self.title, u"""
|
QMessageBox.about(self, "About %s" % self.title, """
|
||||||
<b>%s</b> v %s
|
<b>%s</b> v %s
|
||||||
<p>Copyright © 2008 Tiril Anette Langfeldt Rødland. No rights reserved.
|
<p>Copyright © 2008 Tiril Anette Langfeldt Roedland. 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>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>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>Python %s - Qt %s - PyQt %s on %s
|
||||||
<p>Developer: Tiril Anette Langfeldt Rødland, tirilane@pvv.ntnu.no
|
<p>Developer: Tiril Anette Langfeldt Roedland, tirilane@pvv.ntnu.no
|
||||||
""" % (self.title, __version__, platform.python_version(), QT_VERSION_STR, PYQT_VERSION_STR, platform.system()))
|
""" % (self.title, __version__, platform.python_version(), QT_VERSION_STR, PYQT_VERSION_STR, platform.system()))
|
||||||
|
|
||||||
## Updates the File menu
|
## Updates the File menu
|
||||||
|
@ -398,7 +402,7 @@ class NewSemesterDlg(QDialog):
|
||||||
super(NewSemesterDlg, self).__init__(parent)
|
super(NewSemesterDlg, self).__init__(parent)
|
||||||
|
|
||||||
# Labels
|
# Labels
|
||||||
self.termLabel = QLabel(self.trUtf8("Term"))
|
self.termLabel = QLabel(self.trUtf8("Semester"))
|
||||||
self.yearLabel = QLabel(self.trUtf8("Year"))
|
self.yearLabel = QLabel(self.trUtf8("Year"))
|
||||||
|
|
||||||
# Widgets
|
# Widgets
|
||||||
|
@ -548,13 +552,13 @@ class AssignmentTab(QWidget):
|
||||||
## Initialize the Assignment tab
|
## Initialize the Assignment tab
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super(AssignmentTab, self).__init__(parent)
|
super(AssignmentTab, self).__init__(parent)
|
||||||
|
|
||||||
# Widgets
|
# Widgets
|
||||||
self.addAssignmentButton = QPushButton("Add assignment")
|
self.addAssignmentButton = QPushButton("Add assignment")
|
||||||
self.completeAssignmentBox = QComboBox()
|
self.statusAssignmentBox = QComboBox()
|
||||||
self.deleteAssignmentButton = QPushButton("Delete assignment")
|
self.deleteAssignmentButton = QPushButton("Delete assignment")
|
||||||
completeTypes = [self.trUtf8("Not available"), self.trUtf8("Available"), self.trUtf8("Begun"), self.trUtf8("Finished"), self.trUtf8("Delivered"), self.trUtf8("Approved"), self.trUtf8("Not approved")]
|
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.completeAssignmentBox.addItems(completeTypes)
|
self.statusAssignmentBox.addItems(statusTypes)
|
||||||
|
|
||||||
# Make the table
|
# Make the table
|
||||||
self.makeTable()
|
self.makeTable()
|
||||||
|
@ -564,7 +568,7 @@ class AssignmentTab(QWidget):
|
||||||
self.hlayout = QHBoxLayout()
|
self.hlayout = QHBoxLayout()
|
||||||
self.hlayout.addWidget(self.addAssignmentButton)
|
self.hlayout.addWidget(self.addAssignmentButton)
|
||||||
self.hlayout.addWidget(self.deleteAssignmentButton)
|
self.hlayout.addWidget(self.deleteAssignmentButton)
|
||||||
self.hlayout.addWidget(self.completeAssignmentBox)
|
self.hlayout.addWidget(self.statusAssignmentBox)
|
||||||
self.hlayout.addStretch()
|
self.hlayout.addStretch()
|
||||||
self.vlayout.addWidget(self.assignmentTable)
|
self.vlayout.addWidget(self.assignmentTable)
|
||||||
self.vlayout.addLayout(self.hlayout)
|
self.vlayout.addLayout(self.hlayout)
|
||||||
|
@ -574,14 +578,14 @@ class AssignmentTab(QWidget):
|
||||||
def makeTable(self, current=None):
|
def makeTable(self, current=None):
|
||||||
self.assignmentTable = QTableWidget(0, 5, self)
|
self.assignmentTable = QTableWidget(0, 5, self)
|
||||||
self.assignmentTable.clear()
|
self.assignmentTable.clear()
|
||||||
|
|
||||||
self.assignmentHeaderList = QStringList()
|
self.assignmentHeaderList = QStringList()
|
||||||
self.assignmentHeaderList.append(self.trUtf8("Date"))
|
self.assignmentHeaderList.append(self.trUtf8("Date"))
|
||||||
self.assignmentHeaderList.append(self.trUtf8("Course"))
|
self.assignmentHeaderList.append(self.trUtf8("Course"))
|
||||||
self.assignmentHeaderList.append(self.trUtf8("Number"))
|
self.assignmentHeaderList.append(self.trUtf8("Number"))
|
||||||
self.assignmentHeaderList.append(self.trUtf8("Description"))
|
self.assignmentHeaderList.append(self.trUtf8("Description"))
|
||||||
self.assignmentHeaderList.append(self.trUtf8("Complete"))
|
self.assignmentHeaderList.append(self.trUtf8("Status"))
|
||||||
|
|
||||||
self.assignmentTable.setHorizontalHeaderLabels(self.assignmentHeaderList)
|
self.assignmentTable.setHorizontalHeaderLabels(self.assignmentHeaderList)
|
||||||
self.assignmentTable.setAlternatingRowColors(True)
|
self.assignmentTable.setAlternatingRowColors(True)
|
||||||
self.assignmentTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
|
self.assignmentTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
|
||||||
|
@ -607,43 +611,43 @@ class AssignmentTab(QWidget):
|
||||||
if assignment == None:
|
if assignment == None:
|
||||||
assignment = self.assignments[row]
|
assignment = self.assignments[row]
|
||||||
|
|
||||||
complete = QString(assignment.getComplete())
|
status = QString(assignment.getStatus())
|
||||||
brush = self.makeBrush(complete)
|
brush = self.makeBrush(status)
|
||||||
|
|
||||||
self.assignmentTable.setItem(row, 0, QTableWidgetItem(QString(assignment.getDate().toString("yyyy-MM-dd hh:mm, ddd"))))
|
self.assignmentTable.setItem(row, 0, QTableWidgetItem(QString(assignment.getDate().toString("yyyy-MM-dd hh:mm, ddd"))))
|
||||||
self.assignmentTable.setItem(row, 1, QTableWidgetItem(QString(assignment.getCourse().getFull())))
|
self.assignmentTable.setItem(row, 1, QTableWidgetItem(QString(assignment.getCourse().getFull())))
|
||||||
self.assignmentTable.setItem(row, 2, QTableWidgetItem(QString("%i" % assignment.getNumber())))
|
self.assignmentTable.setItem(row, 2, QTableWidgetItem(QString("%i" % assignment.getNumber())))
|
||||||
self.assignmentTable.setItem(row, 3, QTableWidgetItem(QString("%s" % assignment.getDescription())))
|
self.assignmentTable.setItem(row, 3, QTableWidgetItem(QString("%s" % assignment.getDescription())))
|
||||||
|
|
||||||
completeItem = QTableWidgetItem(complete)
|
statusItem = QTableWidgetItem(status)
|
||||||
completeItem.setBackground(brush)
|
statusItem.setBackground(brush)
|
||||||
self.assignmentTable.setItem(row, 4, completeItem)
|
self.assignmentTable.setItem(row, 4, statusItem)
|
||||||
|
|
||||||
## Set the right brush and color for the assignment, depending on level of completion
|
## Set the right brush and color for the assignment, depending on level of completion
|
||||||
def makeBrush(self, complete):
|
def makeBrush(self, status):
|
||||||
brush = QBrush(Qt.NoBrush)
|
brush = QBrush(Qt.NoBrush)
|
||||||
if complete.compare(QString(self.trUtf8("Available"))) == 0:
|
if status.compare(QString(self.trUtf8("Available"))) == 0:
|
||||||
brush.setStyle(Qt.Dense7Pattern)
|
brush.setStyle(Qt.Dense7Pattern)
|
||||||
brush.setColor(QColor(Qt.cyan))
|
brush.setColor(QColor(Qt.cyan))
|
||||||
elif complete.compare(QString(self.trUtf8("Begun"))) == 0:
|
elif status.compare(QString(self.trUtf8("Begun"))) == 0:
|
||||||
brush.setStyle(Qt.Dense5Pattern)
|
brush.setStyle(Qt.Dense5Pattern)
|
||||||
brush.setColor(QColor(Qt.cyan))
|
brush.setColor(QColor(Qt.cyan))
|
||||||
elif complete.compare(QString(self.trUtf8("Finished"))) == 0:
|
elif status.compare(QString(self.trUtf8("Finished"))) == 0:
|
||||||
brush.setStyle(Qt.Dense3Pattern)
|
brush.setStyle(Qt.Dense3Pattern)
|
||||||
brush.setColor(QColor(Qt.cyan))
|
brush.setColor(QColor(Qt.cyan))
|
||||||
elif complete.compare(QString(self.trUtf8("Delivered"))) == 0:
|
elif status.compare(QString(self.trUtf8("Delivered"))) == 0:
|
||||||
brush.setStyle(Qt.Dense1Pattern)
|
brush.setStyle(Qt.Dense1Pattern)
|
||||||
brush.setColor(QColor(Qt.cyan))
|
brush.setColor(QColor(Qt.cyan))
|
||||||
elif complete.compare(QString(self.trUtf8("Approved"))) == 0:
|
elif status.compare(QString(self.trUtf8("Approved"))) == 0:
|
||||||
brush.setStyle(Qt.SolidPattern)
|
brush.setStyle(Qt.SolidPattern)
|
||||||
brush.setColor(QColor(Qt.green))
|
brush.setColor(QColor(Qt.green))
|
||||||
elif complete.compare(QString(self.trUtf8("Not approved"))) == 0:
|
elif status.compare(QString(self.trUtf8("Not approved"))) == 0:
|
||||||
brush.setStyle(Qt.SolidPattern)
|
brush.setStyle(Qt.SolidPattern)
|
||||||
brush.setColor(QColor(Qt.red))
|
brush.setColor(QColor(Qt.red))
|
||||||
else:
|
else:
|
||||||
brush.setStyle(Qt.NoBrush)
|
brush.setStyle(Qt.NoBrush)
|
||||||
return brush
|
return brush
|
||||||
|
|
||||||
|
|
||||||
### The Add Assignment dialog
|
### The Add Assignment dialog
|
||||||
class AssignmentDlg(QDialog):
|
class AssignmentDlg(QDialog):
|
||||||
|
@ -651,13 +655,13 @@ class AssignmentDlg(QDialog):
|
||||||
## Initialize the Add Assignment dialog
|
## Initialize the Add Assignment dialog
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super(AssignmentDlg, self).__init__(parent)
|
super(AssignmentDlg, self).__init__(parent)
|
||||||
|
|
||||||
# Labels
|
# Labels
|
||||||
self.dateLabel = QLabel(self.trUtf8("&Date"))
|
self.dateLabel = QLabel(self.trUtf8("&Date"))
|
||||||
self.courseLabel = QLabel(self.trUtf8("&Course"))
|
self.courseLabel = QLabel(self.trUtf8("&Course"))
|
||||||
self.numberLabel = QLabel(self.trUtf8("&Number"))
|
self.numberLabel = QLabel(self.trUtf8("&Number"))
|
||||||
self.descriptionLabel = QLabel(self.trUtf8("De&scription"))
|
self.descriptionLabel = QLabel(self.trUtf8("De&scription"))
|
||||||
self.completeLabel = QLabel(self.trUtf8("&Complete"))
|
self.statusLabel = QLabel(self.trUtf8("&Status"))
|
||||||
|
|
||||||
# Widgets
|
# Widgets
|
||||||
self.dateEdit = QLineEdit("DD.MM.YYYY HH:MM")
|
self.dateEdit = QLineEdit("DD.MM.YYYY HH:MM")
|
||||||
|
@ -667,9 +671,9 @@ class AssignmentDlg(QDialog):
|
||||||
self.numberEdit = QSpinBox()
|
self.numberEdit = QSpinBox()
|
||||||
self.numberEdit.setRange(1, 20)
|
self.numberEdit.setRange(1, 20)
|
||||||
self.descriptionEdit = QLineEdit()
|
self.descriptionEdit = QLineEdit()
|
||||||
self.completeEdit = QComboBox()
|
self.statusEdit = 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")]
|
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.completeEdit.addItems(completeTypes)
|
self.statusEdit.addItems(statusTypes)
|
||||||
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
|
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel)
|
||||||
|
|
||||||
# Buddies
|
# Buddies
|
||||||
|
@ -677,7 +681,7 @@ class AssignmentDlg(QDialog):
|
||||||
self.courseLabel.setBuddy(self.courseEdit)
|
self.courseLabel.setBuddy(self.courseEdit)
|
||||||
self.numberLabel.setBuddy(self.numberEdit)
|
self.numberLabel.setBuddy(self.numberEdit)
|
||||||
self.descriptionLabel.setBuddy(self.descriptionEdit)
|
self.descriptionLabel.setBuddy(self.descriptionEdit)
|
||||||
self.completeLabel.setBuddy(self.completeEdit)
|
self.statusLabel.setBuddy(self.statusEdit)
|
||||||
|
|
||||||
# Layout
|
# Layout
|
||||||
self.layout = QGridLayout()
|
self.layout = QGridLayout()
|
||||||
|
@ -685,12 +689,12 @@ class AssignmentDlg(QDialog):
|
||||||
self.layout.addWidget(self.courseLabel, 1, 0)
|
self.layout.addWidget(self.courseLabel, 1, 0)
|
||||||
self.layout.addWidget(self.numberLabel, 2, 0)
|
self.layout.addWidget(self.numberLabel, 2, 0)
|
||||||
self.layout.addWidget(self.descriptionLabel, 3, 0)
|
self.layout.addWidget(self.descriptionLabel, 3, 0)
|
||||||
self.layout.addWidget(self.completeLabel, 4, 0)
|
self.layout.addWidget(self.statusLabel, 4, 0)
|
||||||
self.layout.addWidget(self.dateEdit, 0, 1)
|
self.layout.addWidget(self.dateEdit, 0, 1)
|
||||||
self.layout.addWidget(self.courseEdit, 1, 1)
|
self.layout.addWidget(self.courseEdit, 1, 1)
|
||||||
self.layout.addWidget(self.numberEdit, 2, 1)
|
self.layout.addWidget(self.numberEdit, 2, 1)
|
||||||
self.layout.addWidget(self.descriptionEdit, 3, 1)
|
self.layout.addWidget(self.descriptionEdit, 3, 1)
|
||||||
self.layout.addWidget(self.completeEdit, 4, 1)
|
self.layout.addWidget(self.statusEdit, 4, 1)
|
||||||
self.layout.addWidget(self.buttonBox, 5, 0, 1, 2)
|
self.layout.addWidget(self.buttonBox, 5, 0, 1, 2)
|
||||||
self.setLayout(self.layout)
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
|
@ -708,7 +712,7 @@ class AssignmentDlg(QDialog):
|
||||||
assignment.append(unicode(self.courseEdit.currentText()))
|
assignment.append(unicode(self.courseEdit.currentText()))
|
||||||
assignment.append(self.numberEdit.value())
|
assignment.append(self.numberEdit.value())
|
||||||
assignment.append(unicode(self.descriptionEdit.text()))
|
assignment.append(unicode(self.descriptionEdit.text()))
|
||||||
assignment.append(unicode(self.completeEdit.currentText()))
|
assignment.append(unicode(self.statusEdit.currentText()))
|
||||||
return assignment
|
return assignment
|
||||||
|
|
||||||
## Accept the dialog and add the specified assignment
|
## Accept the dialog and add the specified assignment
|
||||||
|
@ -718,7 +722,7 @@ class AssignmentDlg(QDialog):
|
||||||
courseFull = assignmentList[1]
|
courseFull = assignmentList[1]
|
||||||
number = assignmentList[2]
|
number = assignmentList[2]
|
||||||
description = assignmentList[3]
|
description = assignmentList[3]
|
||||||
complete = assignmentList[4]
|
status = assignmentList[4]
|
||||||
|
|
||||||
regex = QRegExp(r"[01-31].[01-12].[2000-2050] [00-23]:[00-60]")
|
regex = QRegExp(r"[01-31].[01-12].[2000-2050] [00-23]:[00-60]")
|
||||||
validator = QRegExpValidator(regex, self)
|
validator = QRegExpValidator(regex, self)
|
||||||
|
@ -753,14 +757,14 @@ class AssignmentDlg(QDialog):
|
||||||
datetime = QDateTime(date, time)
|
datetime = QDateTime(date, time)
|
||||||
except ValueError, e:
|
except ValueError, e:
|
||||||
valueMessage = QErrorMessage()
|
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))
|
course = getCourseFromDB(getCourseCode(courseFull))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
global semester
|
global semester
|
||||||
addNewAssignmentToDB(semester, datetime, course, number, description, complete)
|
addNewAssignmentToDB(semester, datetime, course, number, description, status)
|
||||||
assignment = AssignmentModel(datetime, course, number, description, complete)
|
assignment = AssignmentModel(datetime, course, number, description, status)
|
||||||
except UnboundLocalError, e:
|
except UnboundLocalError, e:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -780,15 +784,15 @@ class AssignmentModel():
|
||||||
course = None
|
course = None
|
||||||
number = 0
|
number = 0
|
||||||
description = ""
|
description = ""
|
||||||
complete = ""
|
status = ""
|
||||||
|
|
||||||
## Initialize the assignment model
|
## Initialize the assignment model
|
||||||
def __init__(self, date, course, number, description, complete):
|
def __init__(self, date, course, number, description, status):
|
||||||
self.date = date
|
self.date = date
|
||||||
self.course = course
|
self.course = course
|
||||||
self.number = number
|
self.number = number
|
||||||
self.description = description
|
self.description = description
|
||||||
self.complete = complete
|
self.status = status
|
||||||
|
|
||||||
## Return the date the assignment is due
|
## Return the date the assignment is due
|
||||||
def getDate(self):
|
def getDate(self):
|
||||||
|
@ -807,8 +811,8 @@ class AssignmentModel():
|
||||||
return self.description
|
return self.description
|
||||||
|
|
||||||
## Return the level of completion for the assignment
|
## Return the level of completion for the assignment
|
||||||
def getComplete(self):
|
def getStatus(self):
|
||||||
return self.complete
|
return self.status
|
||||||
|
|
||||||
|
|
||||||
### The contents of the Reading tab
|
### The contents of the Reading tab
|
||||||
|
@ -899,14 +903,14 @@ class ReadingDlg(QDialog):
|
||||||
## Initialize the Add Reading dialog
|
## Initialize the Add Reading dialog
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super(ReadingDlg, self).__init__(parent)
|
super(ReadingDlg, self).__init__(parent)
|
||||||
|
|
||||||
# Labels
|
# Labels
|
||||||
self.weekLabel = QLabel(self.trUtf8("&Week"))
|
self.weekLabel = QLabel(self.trUtf8("&Week"))
|
||||||
self.courseLabel = QLabel(self.trUtf8("&Course"))
|
self.courseLabel = QLabel(self.trUtf8("&Course"))
|
||||||
self.bookLabel = QLabel(self.trUtf8("&Book"))
|
self.bookLabel = QLabel(self.trUtf8("&Book"))
|
||||||
self.chapterLabel = QLabel(self.trUtf8("Cha&pter"))
|
self.chapterLabel = QLabel(self.trUtf8("Cha&pter"))
|
||||||
self.pagesLabel = QLabel(self.trUtf8("&Pages"))
|
self.pagesLabel = QLabel(self.trUtf8("&Pages"))
|
||||||
|
|
||||||
# Widgets
|
# Widgets
|
||||||
self.weekEdit = QSpinBox()
|
self.weekEdit = QSpinBox()
|
||||||
self.weekEdit.setRange(1, 52)
|
self.weekEdit.setRange(1, 52)
|
||||||
|
@ -1030,7 +1034,7 @@ class ReadingModel():
|
||||||
p.strip()
|
p.strip()
|
||||||
nextArray.append(p.split("-"))
|
nextArray.append(p.split("-"))
|
||||||
for n in nextArray:
|
for n in nextArray:
|
||||||
sum += int(n[1]) - int(n[0])
|
sum += int(n[1]) - int(n[0]) + 1
|
||||||
return sum
|
return sum
|
||||||
|
|
||||||
## Return whether the reading has been done or not
|
## Return whether the reading has been done or not
|
||||||
|
@ -1075,8 +1079,8 @@ class ScheduleTab(QWidget):
|
||||||
selected = None
|
selected = None
|
||||||
|
|
||||||
def updateHeaders(self):
|
def updateHeaders(self):
|
||||||
self.scheduleHorizontalHeaderList = QStringList()
|
self.scheduleHorizontalHeaderList = QStringList()
|
||||||
self.scheduleHorizontalHeaderList.append(self.trUtf8("Monday"))
|
self.scheduleHorizontalHeaderList.append(self.trUtf8("Monday"))
|
||||||
self.scheduleHorizontalHeaderList.append(self.trUtf8("Tuesday"))
|
self.scheduleHorizontalHeaderList.append(self.trUtf8("Tuesday"))
|
||||||
self.scheduleHorizontalHeaderList.append(self.trUtf8("Wednesday"))
|
self.scheduleHorizontalHeaderList.append(self.trUtf8("Wednesday"))
|
||||||
self.scheduleHorizontalHeaderList.append(self.trUtf8("Thursday"))
|
self.scheduleHorizontalHeaderList.append(self.trUtf8("Thursday"))
|
||||||
|
@ -1119,7 +1123,7 @@ class ScheduleTab(QWidget):
|
||||||
item = QTableWidgetItem(text)
|
item = QTableWidgetItem(text)
|
||||||
item.setBackground(self.getBackground(QString("%s" % type), lesson.getCourse(), collision))
|
item.setBackground(self.getBackground(QString("%s" % type), lesson.getCourse(), collision))
|
||||||
self.scheduleTable.setItem(row, column, item)
|
self.scheduleTable.setItem(row, column, item)
|
||||||
|
|
||||||
## Return the column specified by the day
|
## Return the column specified by the day
|
||||||
def getColumn(self, dayString):
|
def getColumn(self, dayString):
|
||||||
day = QString("%s" % dayString)
|
day = QString("%s" % dayString)
|
||||||
|
@ -1134,7 +1138,7 @@ class ScheduleTab(QWidget):
|
||||||
elif day.compare(QString(self.trUtf8("Friday"))) == 0:
|
elif day.compare(QString(self.trUtf8("Friday"))) == 0:
|
||||||
return 4
|
return 4
|
||||||
else:
|
else:
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
## Set the right brush and color for the lesson, depending on type of lesson
|
## Set the right brush and color for the lesson, depending on type of lesson
|
||||||
def getBackground(self, type, course, collision):
|
def getBackground(self, type, course, collision):
|
||||||
|
@ -1165,7 +1169,7 @@ class ScheduleDlg(QDialog):
|
||||||
## Initialize the Add Lesson dialog
|
## Initialize the Add Lesson dialog
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super(ScheduleDlg, self).__init__(parent)
|
super(ScheduleDlg, self).__init__(parent)
|
||||||
|
|
||||||
# Labels
|
# Labels
|
||||||
self.dayLabel = QLabel(self.trUtf8("&Day"))
|
self.dayLabel = QLabel(self.trUtf8("&Day"))
|
||||||
self.fromLabel = QLabel(self.trUtf8("&From"))
|
self.fromLabel = QLabel(self.trUtf8("&From"))
|
||||||
|
@ -1345,7 +1349,7 @@ class CourseDlg(QDialog):
|
||||||
booksDB = getBooksFromDB()
|
booksDB = getBooksFromDB()
|
||||||
booksStringList = QStringList()
|
booksStringList = QStringList()
|
||||||
for book in booksDB:
|
for book in booksDB:
|
||||||
booksStringList.append(book.getTitle())
|
booksStringList.append(book.getAuthor() + u" : " + book.getTitle() + u", " + str(book.getEdition()) + self.trUtf8(". edition"))
|
||||||
self.booksEdit.addItems(booksStringList)
|
self.booksEdit.addItems(booksStringList)
|
||||||
self.booksEdit.sortItems()
|
self.booksEdit.sortItems()
|
||||||
|
|
||||||
|
@ -1430,7 +1434,7 @@ class BookDlg(QDialog):
|
||||||
## Initialize the Add Book dialog
|
## Initialize the Add Book dialog
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super(BookDlg, self).__init__(parent)
|
super(BookDlg, self).__init__(parent)
|
||||||
|
|
||||||
# Labels
|
# Labels
|
||||||
self.titleLabel = QLabel(self.trUtf8("&Title"))
|
self.titleLabel = QLabel(self.trUtf8("&Title"))
|
||||||
self.authorLabel = QLabel(self.trUtf8("&Author"))
|
self.authorLabel = QLabel(self.trUtf8("&Author"))
|
||||||
|
@ -1567,7 +1571,7 @@ def initAssignmentDB(cursor):
|
||||||
course TEXT,
|
course TEXT,
|
||||||
number INT,
|
number INT,
|
||||||
description TEXT,
|
description TEXT,
|
||||||
complete TEXT,
|
status TEXT,
|
||||||
term TEXT,
|
term TEXT,
|
||||||
year INT,
|
year INT,
|
||||||
PRIMARY KEY (course, number)
|
PRIMARY KEY (course, number)
|
||||||
|
@ -1586,7 +1590,7 @@ def initReadingDB(cursor):
|
||||||
done BOOLEAN,
|
done BOOLEAN,
|
||||||
term TEXT,
|
term TEXT,
|
||||||
year INT,
|
year INT,
|
||||||
PRIMARY KEY (week, course, book)
|
PRIMARY KEY (week, course, book, chapter)
|
||||||
)
|
)
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
@ -1653,7 +1657,7 @@ def addNewSemesterToDB(term, year):
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
## Add new assignment to the database
|
## Add new assignment to the database
|
||||||
def addNewAssignmentToDB(semester, datetime, course, number, description, complete):
|
def addNewAssignmentToDB(semester, datetime, course, number, description, status):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
day = datetime.date().day()
|
day = datetime.date().day()
|
||||||
|
@ -1666,9 +1670,9 @@ def addNewAssignmentToDB(semester, datetime, course, number, description, comple
|
||||||
year = semester.getYear()
|
year = semester.getYear()
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
INSERT INTO Assignment (date, course, number, description, complete, term, year)
|
INSERT INTO Assignment (date, course, number, description, status, term, year)
|
||||||
VALUES (datetime(?), ?, ?, ?, ?, ?, ?)
|
VALUES (datetime(?), ?, ?, ?, ?, ?, ?)
|
||||||
''', (timestring, course.getCode(), number, description, complete, term, year))
|
''', (timestring, course.getCode(), number, description, status, term, year))
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -1717,7 +1721,7 @@ def addNewCourseToDB(code, title, short, color, books):
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
INSERT INTO CourseUsesBook (courseCode, bookIsbn)
|
INSERT INTO CourseUsesBook (courseCode, bookIsbn)
|
||||||
VALUES (?, ?)
|
VALUES (?, ?)
|
||||||
''', (code, book.getIsbn()))
|
''', (code, book))
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -1941,7 +1945,7 @@ def getBookWithTitleFromDB(booktitle):
|
||||||
def updateAssignmentCompletion(coursecode, num, completion):
|
def updateAssignmentCompletion(coursecode, num, completion):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
complete = "%s" % completion
|
status = "%s" % completion
|
||||||
course = "%s" % coursecode
|
course = "%s" % coursecode
|
||||||
number = (num.toInt())[0]
|
number = (num.toInt())[0]
|
||||||
|
|
||||||
|
@ -1950,16 +1954,17 @@ def updateAssignmentCompletion(coursecode, num, completion):
|
||||||
SET complete = ?
|
SET complete = ?
|
||||||
WHERE course = ?
|
WHERE course = ?
|
||||||
AND number = ?
|
AND number = ?
|
||||||
''', (complete, course, number))
|
''', (status, course, number))
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
## Update whether the specified reading is done or not
|
## Update whether the specified reading is done or not
|
||||||
def updateReadingDone(week, coursecode, bookisbn, done):
|
def updateReadingDone(week, coursecode, bookisbn, chapter, done):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
course = "%s" % coursecode
|
course = "%s" % coursecode
|
||||||
book = "%s" % bookisbn
|
book = "%s" % bookisbn
|
||||||
|
ch = "%s" % chapter
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
UPDATE Reading
|
UPDATE Reading
|
||||||
|
@ -1967,7 +1972,8 @@ def updateReadingDone(week, coursecode, bookisbn, done):
|
||||||
WHERE week = ?
|
WHERE week = ?
|
||||||
AND course = ?
|
AND course = ?
|
||||||
AND book = ?
|
AND book = ?
|
||||||
''', (done, week, course, book))
|
AND chapter = ?
|
||||||
|
''', (done, week, course, book, ch))
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -1990,11 +1996,12 @@ def removeAssignmentFromDB(coursecode, num):
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
## Remove the specified reading from the database
|
## Remove the specified reading from the database
|
||||||
def removeReadingFromDB(week, coursecode, bookisbn):
|
def removeReadingFromDB(week, coursecode, bookisbn, chapter):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
course = "%s" % coursecode
|
course = "%s" % coursecode
|
||||||
book = "%s" % bookisbn
|
book = "%s" % bookisbn
|
||||||
|
ch = "%s" % chapter
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
DELETE
|
DELETE
|
||||||
|
@ -2002,7 +2009,8 @@ def removeReadingFromDB(week, coursecode, bookisbn):
|
||||||
WHERE week = ?
|
WHERE week = ?
|
||||||
AND course = ?
|
AND course = ?
|
||||||
AND book = ?
|
AND book = ?
|
||||||
''', (week, course, book))
|
AND chapter = ?
|
||||||
|
''', (week, course, book, ch))
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -2041,7 +2049,7 @@ def getCourseCode(courseFull):
|
||||||
## Add a new course to the list of courses
|
## Add a new course to the list of courses
|
||||||
def addNewCourse(course):
|
def addNewCourse(course):
|
||||||
courses.append(course)
|
courses.append(course)
|
||||||
addNewCourseToDB(course.getCode(), course.getTitle(), course.getShort(), course.getColor())
|
addNewCourseToDB(course.getCode(), course.getTitle(), course.getShort(), course.getColor(), course.getBooks())
|
||||||
addNewCourseString(course)
|
addNewCourseString(course)
|
||||||
|
|
||||||
## Return the list of courses
|
## Return the list of courses
|
||||||
|
@ -2155,6 +2163,14 @@ def getMain():
|
||||||
## Run the program
|
## Run the program
|
||||||
def main():
|
def main():
|
||||||
app = QApplication(sys.argv)
|
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()
|
form = MainWindow()
|
||||||
app.setOrganizationName("PVV")
|
app.setOrganizationName("PVV")
|
||||||
app.setOrganizationDomain("pvv.ntnu.no")
|
app.setOrganizationDomain("pvv.ntnu.no")
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,657 @@
|
||||||
|
<?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
|
## Delete the reading from the database and the table
|
||||||
def deleteReading(self):
|
def deleteReading(self):
|
||||||
week, course, book = self.getWeekCourseAndBook()
|
week, course, book, chapter = self.getWeekCourseBookAndChapter()
|
||||||
table, row = self.getReadingTableAndRow()
|
table, row = self.getReadingTableAndRow()
|
||||||
global semester
|
global semester
|
||||||
removeReadingFromDB(week, course, book)
|
removeReadingFromDB(week, course, book, chapter)
|
||||||
table.removeRow(row)
|
table.removeRow(row)
|
||||||
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ class MainWindow(QMainWindow):
|
||||||
item = QTableWidgetItem(self.trUtf8("Ferdig"))
|
item = QTableWidgetItem(self.trUtf8("Ferdig"))
|
||||||
item.setBackground(QBrush(Qt.green, Qt.SolidPattern))
|
item.setBackground(QBrush(Qt.green, Qt.SolidPattern))
|
||||||
else:
|
else:
|
||||||
done = False
|
done = True
|
||||||
item = QTableWidgetItem(self.trUtf8("Ikke ferdig"))
|
item = QTableWidgetItem(self.trUtf8("Ikke ferdig"))
|
||||||
item.setBackground(QBrush(Qt.red, Qt.SolidPattern))
|
item.setBackground(QBrush(Qt.red, Qt.SolidPattern))
|
||||||
table.setItem(row, 6, item)
|
table.setItem(row, 6, item)
|
||||||
|
@ -249,7 +249,9 @@ class MainWindow(QMainWindow):
|
||||||
bookTitle = table.item(row, 2).text()
|
bookTitle = table.item(row, 2).text()
|
||||||
book = getBookWithTitleFromDB(bookTitle)
|
book = getBookWithTitleFromDB(bookTitle)
|
||||||
bookIsbn = book.getIsbn()
|
bookIsbn = book.getIsbn()
|
||||||
updateReadingDone(week, courseCode, bookIsbn, True)
|
chapter = table.item(row, 3).text()
|
||||||
|
updateReadingDone(week, courseCode, bookIsbn, chapter, done)
|
||||||
|
print week, courseCode, bookIsbn, chapter, done
|
||||||
|
|
||||||
## Return the reading table and its current row
|
## Return the reading table and its current row
|
||||||
def getReadingTableAndRow(self):
|
def getReadingTableAndRow(self):
|
||||||
|
@ -258,16 +260,18 @@ class MainWindow(QMainWindow):
|
||||||
return table, row
|
return table, row
|
||||||
|
|
||||||
## Return the week, course and book of the current reading
|
## Return the week, course and book of the current reading
|
||||||
def getWeekCourseAndBook(self):
|
def getWeekCourseBookAndChapter(self):
|
||||||
table, row = self.getReadingTableAndRow()
|
table, row = self.getReadingTableAndRow()
|
||||||
weekItem = table.item(row, 0)
|
weekItem = table.item(row, 0)
|
||||||
courseItem = table.item(row, 1)
|
courseItem = table.item(row, 1)
|
||||||
bookItem = table.item(row, 2)
|
bookItem = table.item(row, 2)
|
||||||
|
chapterItem = table.item(row, 3)
|
||||||
week = (weekItem.text().toInt())[0]
|
week = (weekItem.text().toInt())[0]
|
||||||
courseFull = courseItem.text()
|
courseFull = courseItem.text()
|
||||||
courseCode = getCourseCode(courseFull)
|
courseCode = getCourseCode(courseFull)
|
||||||
book = getBookWithTitleFromDB(bookItem.text())
|
book = getBookWithTitleFromDB(bookItem.text())
|
||||||
return week, courseCode, book.getIsbn()
|
chapter = chapterItem.text()
|
||||||
|
return week, courseCode, book.getIsbn(), chapter
|
||||||
|
|
||||||
# Schedule
|
# Schedule
|
||||||
|
|
||||||
|
@ -1030,7 +1034,7 @@ class ReadingModel():
|
||||||
p.strip()
|
p.strip()
|
||||||
nextArray.append(p.split("-"))
|
nextArray.append(p.split("-"))
|
||||||
for n in nextArray:
|
for n in nextArray:
|
||||||
sum += int(n[1]) - int(n[0])
|
sum += int(n[1]) - int(n[0]) + 1
|
||||||
return sum
|
return sum
|
||||||
|
|
||||||
## Return whether the reading has been done or not
|
## Return whether the reading has been done or not
|
||||||
|
@ -1345,7 +1349,7 @@ class CourseDlg(QDialog):
|
||||||
booksDB = getBooksFromDB()
|
booksDB = getBooksFromDB()
|
||||||
booksStringList = QStringList()
|
booksStringList = QStringList()
|
||||||
for book in booksDB:
|
for book in booksDB:
|
||||||
booksStringList.append(book.getTitle())
|
booksStringList.append(book.getAuthor() + u" : " + book.getTitle() + u", " + str(book.getEdition()) + u". utgave")
|
||||||
self.booksEdit.addItems(booksStringList)
|
self.booksEdit.addItems(booksStringList)
|
||||||
self.booksEdit.sortItems()
|
self.booksEdit.sortItems()
|
||||||
|
|
||||||
|
@ -1524,7 +1528,7 @@ def initDB():
|
||||||
home = os.environ['HOME']
|
home = os.environ['HOME']
|
||||||
else:
|
else:
|
||||||
home = ""
|
home = ""
|
||||||
path = home+"/.egon/egon_bm.db"
|
path = home+"/.egon/egon_no.db"
|
||||||
conn = sqlite.connect(path)
|
conn = sqlite.connect(path)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
@ -1586,7 +1590,7 @@ def initReadingDB(cursor):
|
||||||
done BOOLEAN,
|
done BOOLEAN,
|
||||||
term TEXT,
|
term TEXT,
|
||||||
year INT,
|
year INT,
|
||||||
PRIMARY KEY (week, course, book)
|
PRIMARY KEY (week, course, book, chapter)
|
||||||
)
|
)
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
@ -1717,7 +1721,7 @@ def addNewCourseToDB(code, title, short, color, books):
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
INSERT INTO CourseUsesBook (courseCode, bookIsbn)
|
INSERT INTO CourseUsesBook (courseCode, bookIsbn)
|
||||||
VALUES (?, ?)
|
VALUES (?, ?)
|
||||||
''', (code, book.getIsbn()))
|
''', (code, book))
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -1955,11 +1959,12 @@ def updateAssignmentCompletion(coursecode, num, completion):
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
## Update whether the specified reading is done or not
|
## Update whether the specified reading is done or not
|
||||||
def updateReadingDone(week, coursecode, bookisbn, done):
|
def updateReadingDone(week, coursecode, bookisbn, chapter, done):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
course = "%s" % coursecode
|
course = "%s" % coursecode
|
||||||
book = "%s" % bookisbn
|
book = "%s" % bookisbn
|
||||||
|
ch = "%s" % chapter
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
UPDATE Reading
|
UPDATE Reading
|
||||||
|
@ -1967,7 +1972,8 @@ def updateReadingDone(week, coursecode, bookisbn, done):
|
||||||
WHERE week = ?
|
WHERE week = ?
|
||||||
AND course = ?
|
AND course = ?
|
||||||
AND book = ?
|
AND book = ?
|
||||||
''', (done, week, course, book))
|
AND chapter = ?
|
||||||
|
''', (done, week, course, book, ch))
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -1990,11 +1996,12 @@ def removeAssignmentFromDB(coursecode, num):
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
## Remove the specified reading from the database
|
## Remove the specified reading from the database
|
||||||
def removeReadingFromDB(week, coursecode, bookisbn):
|
def removeReadingFromDB(week, coursecode, bookisbn, chapter):
|
||||||
cursor, conn = initDB()
|
cursor, conn = initDB()
|
||||||
|
|
||||||
course = "%s" % coursecode
|
course = "%s" % coursecode
|
||||||
book = "%s" % bookisbn
|
book = "%s" % bookisbn
|
||||||
|
ch = "%s" % chapter
|
||||||
|
|
||||||
cursor.execute('''
|
cursor.execute('''
|
||||||
DELETE
|
DELETE
|
||||||
|
@ -2002,7 +2009,8 @@ def removeReadingFromDB(week, coursecode, bookisbn):
|
||||||
WHERE week = ?
|
WHERE week = ?
|
||||||
AND course = ?
|
AND course = ?
|
||||||
AND book = ?
|
AND book = ?
|
||||||
''', (week, course, book))
|
AND chapter = ?
|
||||||
|
''', (week, course, book, ch))
|
||||||
|
|
||||||
exitDB(conn)
|
exitDB(conn)
|
||||||
|
|
||||||
|
@ -2041,7 +2049,7 @@ def getCourseCode(courseFull):
|
||||||
## Add a new course to the list of courses
|
## Add a new course to the list of courses
|
||||||
def addNewCourse(course):
|
def addNewCourse(course):
|
||||||
courses.append(course)
|
courses.append(course)
|
||||||
addNewCourseToDB(course.getCode(), course.getTitle(), course.getShort(), course.getColor())
|
addNewCourseToDB(course.getCode(), course.getTitle(), course.getShort(), course.getColor(), course.getBooks())
|
||||||
addNewCourseString(course)
|
addNewCourseString(course)
|
||||||
|
|
||||||
## Return the list of courses
|
## Return the list of courses
|
255
main.py
255
main.py
|
@ -1,255 +0,0 @@
|
||||||
#!/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()
|
|
979
qrc_resources.py
979
qrc_resources.py
|
@ -1,979 +0,0 @@
|
||||||
# -*- 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.
160
reading.py
160
reading.py
|
@ -1,160 +0,0 @@
|
||||||
#!/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
|
|
||||||
|
|
BIN
reading.pyc
BIN
reading.pyc
Binary file not shown.
158
schedule.py
158
schedule.py
|
@ -1,158 +0,0 @@
|
||||||
#!/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
|
|
BIN
schedule.pyc
BIN
schedule.pyc
Binary file not shown.
Reference in New Issue