Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirk Winans <winansk@penne.union.edu>2010-08-04 16:42:05 (GMT)
committer Kirk Winans <winansk@penne.union.edu>2010-08-04 16:42:05 (GMT)
commit3c7f41a95fc9ef0a5dcfdf1f6915cfcf284b0cf0 (patch)
treeddffd7a554d27c16af78c76dbcb148b47254bb3a
parent58434112491ef108dfc9d036c43d10cbbc2ba5ff (diff)
Second PushHEADmaster
-rw-r--r--FlashcardActivity.py74
-rw-r--r--FlashcardActivity.pycbin0 -> 9603 bytes
-rw-r--r--Select Test Deck.xml1
-rw-r--r--Test Deck.xml51
-rw-r--r--browseeditpanel.py8
-rw-r--r--browseeditpanel.pycbin0 -> 6446 bytes
-rw-r--r--creationpanel.py50
-rw-r--r--creationpanel.pycbin0 -> 7055 bytes
-rw-r--r--decks.dtd7
-rw-r--r--decks.xml3
-rw-r--r--decks.xml~3
-rw-r--r--new test deck.xml1
-rw-r--r--port/__init__.pycbin0 -> 147 bytes
-rw-r--r--port/widgets.pycbin0 -> 16256 bytes
-rw-r--r--reviewpanel.py32
-rw-r--r--reviewpanel.pycbin0 -> 8941 bytes
-rw-r--r--reviewselection.py6
-rw-r--r--reviewselection.pycbin0 -> 4347 bytes
-rw-r--r--selectdeckpanel.py140
-rw-r--r--selectdeckpanel.pycbin0 -> 3991 bytes
-rw-r--r--selectdeckpanel.py~71
-rw-r--r--testfile.xml51
22 files changed, 412 insertions, 86 deletions
diff --git a/FlashcardActivity.py b/FlashcardActivity.py
index a78ef87..a3d0a5e 100644
--- a/FlashcardActivity.py
+++ b/FlashcardActivity.py
@@ -41,10 +41,12 @@ import creationpanel
import browseeditpanel
import reviewselection
import reviewpanel
+import selectdeckpanel
_REVIEW_MODE = 1
_CREATE_MODE = 2
_BROWSE_MODE = 3
+_SELECT_DECK_MODE = 4
_EMPTY = ""
@@ -111,11 +113,25 @@ class FlashcardActivity(activity.Activity):
self.browse_edit_button.show()
separator = gtk.SeparatorToolItem()
+ separator.props.draw = True
+ separator.set_expand(False)
+ separator.show()
+ toolbar_box.toolbar.insert(separator, -1)
+
+ # Select Deck Button
+ self.select_deck_button = ToolButton( "fileopen" )
+ self.select_deck_button.set_tooltip(_('Select Deck'))
+ self.select_deck_button.props.sensitive = True
+ self.select_deck_button.connect('clicked', self._select_deck_cb)
+ toolbar_box.toolbar.insert(self.select_deck_button, -1)
+ self.select_deck_button.show()
+
+ separator = gtk.SeparatorToolItem()
separator.props.draw = False
separator.set_expand(True)
separator.show()
toolbar_box.toolbar.insert(separator, -1)
-
+
separator = gtk.SeparatorToolItem()
separator.props.draw = True
separator.set_expand(False)
@@ -127,19 +143,21 @@ class FlashcardActivity(activity.Activity):
stop_button.props.accelerator = _('<Ctrl>Q')
toolbar_box.toolbar.insert(stop_button, -1)
stop_button.show()
-
+
self.set_toolbar_box(toolbar_box)
toolbar_box.show()
self.canvas = gtk.HBox(False)
self.set_canvas(self.canvas)
+ self.deckfile = "emptydeck.xml"
+
self.canvas.show()
self.show_all()
self.mode = 0
- self.review_mode()
+ self.select_deck_mode()
-
+
# Places Activity into Review Mode, to review flashcards
def review_mode(self):
@@ -148,7 +166,7 @@ class FlashcardActivity(activity.Activity):
self.button_box = gtk.VButtonBox()
self.reviewpanel = reviewselection.ReviewSelection(
- self.get_activity_root())
+ self.deckfile)
self.canvas.pack_start(self.reviewpanel, True, True)
@@ -173,7 +191,7 @@ class FlashcardActivity(activity.Activity):
self.remove_all()
self.creationpanel = creationpanel.CreationPanel(
- self.get_activity_root(), front, back, catagory, editing)
+ self.deckfile, front, back, catagory, editing)
self.canvas.pack_start(self.creationpanel, True, True)
@@ -188,7 +206,7 @@ class FlashcardActivity(activity.Activity):
self.button_box = gtk.VButtonBox()
self.browseeditpanel = browseeditpanel.BrowseEditPanel(
- self.get_activity_root())
+ self.deckfile)
self.canvas.pack_start(self.browseeditpanel, True, True)
self.browseeditpanel.show()
@@ -206,6 +224,27 @@ class FlashcardActivity(activity.Activity):
self.mode = _BROWSE_MODE
+ # Places Activity into Select Deck Mode, select deck to work with
+ def select_deck_mode(self):
+ self.remove_all()
+ self.selectdeckpanel = selectdeckpanel.SelectDeckPanel()
+ self.canvas.pack_start(self.selectdeckpanel, True, True)
+ self.selectdeckpanel.show()
+
+ # Loads the deck to be worked with
+ self.button_box = gtk.VButtonBox()
+
+ self.load_deck_button = ToolButton(tooltip = _('Select Deck'))
+ self.load_deck_button.connect('clicked', self._load_deck_cb)
+ self.load_deck_button.set_icon_widget(
+ self.make_label('fileopen', ' ' + _('Select Deck')))
+ self.button_box.pack_start(self.load_deck_button)
+ self.canvas.pack_start(self.button_box, False)
+ self.load_deck_button.show()
+ self.button_box.show()
+
+ self.mode = _SELECT_DECK_MODE
+
# Removes current screen from the canvas
@@ -218,6 +257,10 @@ class FlashcardActivity(activity.Activity):
elif self.mode == _BROWSE_MODE:
self.canvas.remove(self.browseeditpanel)
self.canvas.remove(self.button_box)
+ elif self.mode == _SELECT_DECK_MODE:
+ self.canvas.remove(self.selectdeckpanel)
+ self.canvas.remove(self.button_box)
+
# Review button callback
def _review_cb(self, button):
@@ -241,6 +284,21 @@ class FlashcardActivity(activity.Activity):
if self.mode != _BROWSE_MODE:
self.browse_edit_mode()
+
+ # Select Deck button callback
+ def _select_deck_cb(self, button):
+ if self.mode != _SELECT_DECK_MODE:
+ self.select_deck_mode()
+
+ # Load Deck button callback
+ def _load_deck_cb(self, button):
+ self.deckfile = self.selectdeckpanel.get_deckfile()
+
+ self.review_mode()
+
+
+
+
# Edit button callback, passes flashcard information to create panel
# so that it can be edited
def _edit_button_cb(self, button):
@@ -256,7 +314,7 @@ class FlashcardActivity(activity.Activity):
expired_only = self.reviewpanel.get_expired_only()
self.canvas.remove(self.reviewpanel)
self.canvas.remove(self.button_box)
- self.reviewpanel = reviewpanel.ReviewPanel(selected_box, selected_catagory, expired_only)
+ self.reviewpanel = reviewpanel.ReviewPanel(self.deckfile, selected_box, selected_catagory, expired_only)
self.canvas.pack_start(self.reviewpanel, True, True)
self.reviewpanel.show()
diff --git a/FlashcardActivity.pyc b/FlashcardActivity.pyc
new file mode 100644
index 0000000..3871ad9
--- /dev/null
+++ b/FlashcardActivity.pyc
Binary files differ
diff --git a/Select Test Deck.xml b/Select Test Deck.xml
new file mode 100644
index 0000000..afe3b89
--- /dev/null
+++ b/Select Test Deck.xml
@@ -0,0 +1 @@
+<deck><card><front>First</front><back>Card</back><last_reviewed>1280934537.99</last_reviewed><stage>1</stage><catagory>new</catagory></card><card><front>Second</front><back>Card</back><last_reviewed>1280934542.46</last_reviewed><stage>1</stage><catagory>new</catagory></card></deck> \ No newline at end of file
diff --git a/Test Deck.xml b/Test Deck.xml
new file mode 100644
index 0000000..4777419
--- /dev/null
+++ b/Test Deck.xml
@@ -0,0 +1,51 @@
+<deck> Test Deck
+ <card>
+ <front>date</front>
+ <back>work</back>
+ <last_reviewed>1280767905.54</last_reviewed>
+ <stage>0</stage>
+ <catagory>thanks</catagory>
+ </card>
+ <card>
+ <front>Edit</front>
+ <back>works</back>
+ <last_reviewed>1280767937.74</last_reviewed>
+ <stage>0</stage>
+ <catagory>thanks</catagory>
+ </card>
+ <card>
+ <front>Clearing</front>
+ <back>Text Boxes</back>
+ <last_reviewed>1280767944.82</last_reviewed>
+ <stage>0</stage>
+ <catagory>Works</catagory>
+ </card>
+ <card>
+ <front>Clear</front>
+ <back>Entry</back>
+ <last_reviewed>1280767951.73</last_reviewed>
+ <stage>0</stage>
+ <catagory>test</catagory>
+ </card>
+ <card>
+ <front>front</front>
+ <back>back</back>
+ <last_reviewed>1280253050.31</last_reviewed>
+ <stage>3</stage>
+ <catagory>catagory</catagory>
+ </card>
+ <card>
+ <front>time</front>
+ <back>stamp</back>
+ <last_reviewed>1280846528.77</last_reviewed>
+ <stage>0</stage>
+ <catagory>works</catagory>
+ </card>
+ <card>
+ <front>timestap</front>
+ <back>becomes date</back>
+ <last_reviewed>1280767959.74</last_reviewed>
+ <stage>0</stage>
+ <catagory>because</catagory>
+ </card>
+<card><front>new</front><back>card</back><last_reviewed>1280845759.25</last_reviewed><stage>0</stage><catagory>works</catagory></card><card><front>last reviewed</front><back>minus 1 day</back><last_reviewed>1280846719.28</last_reviewed><stage>0</stage><catagory>reviewed</catagory></card><card><front>more cards</front><back>to review</back><last_reviewed>1280846821.05</last_reviewed><stage>1</stage><catagory>more</catagory></card><card><front>another card</front><back>to review</back><last_reviewed>1280846828.61</last_reviewed><stage>1</stage><catagory>more</catagory></card><card><front>I like</front><back>turtles</back><last_reviewed>1280846833.41</last_reviewed><stage>1</stage><catagory>more</catagory></card></deck>
diff --git a/browseeditpanel.py b/browseeditpanel.py
index 71e9871..3a8d324 100644
--- a/browseeditpanel.py
+++ b/browseeditpanel.py
@@ -40,14 +40,12 @@ import FlashcardActivity
#
class BrowseEditPanel(gtk.VBox):
- def __init__(self, activity_root):
+ def __init__(self, deckfile):
gtk.VBox.__init__(self)
- self.activity_root = activity_root
-
# Loading in tree of cards
- self.testfile = "testfile.xml"
- self.tree = xml.etree.ElementTree.parse(self.testfile)
+ self.deckfile = deckfile
+ self.tree = xml.etree.ElementTree.parse(self.deckfile)
self.deck_element = self.tree.getroot()
self.deck = self.deck_element.findall("card")
diff --git a/browseeditpanel.pyc b/browseeditpanel.pyc
new file mode 100644
index 0000000..2414e44
--- /dev/null
+++ b/browseeditpanel.pyc
Binary files differ
diff --git a/creationpanel.py b/creationpanel.py
index 542569d..74e3732 100644
--- a/creationpanel.py
+++ b/creationpanel.py
@@ -37,16 +37,16 @@ from datetime import date
import time
_logger = logging.getLogger("test-activity")
+_DAY = 60 * 60 * 24
+
#
# Creation Panel for Flashcard Activity
#
class CreationPanel(gtk.VBox):
- def __init__(self, activity_root, front_text, back_text, catagory_text, editing):
+ def __init__(self, deckfile, front_text, back_text, catagory_text, editing):
gtk.VBox.__init__(self)
- self.activity_root = activity_root
-
self.main_box = gtk.VBox()
self.side_entries_box = gtk.VBox()
self.catagory_box = gtk.HBox()
@@ -72,6 +72,7 @@ class CreationPanel(gtk.VBox):
self.catagory_box.pack_start(self.catagory_entry, True, True)
self.main_box.pack_start(self.catagory_box, True, True)
+
self.add(self.main_box)
@@ -118,13 +119,11 @@ class CreationPanel(gtk.VBox):
self.pack_start(self.button_bar, False, False)
self.button_bar.show()
+ self.deckfile = deckfile
- self.testfile = "testfile.xml"
-
+ self.decktree = xml.etree.ElementTree.parse(self.deckfile)
- self.tree = xml.etree.ElementTree.parse(self.testfile)
-
- self.deck = self.tree.getroot()
+ self.deck = self.decktree.getroot()
self.front_text = front_text
@@ -132,6 +131,7 @@ class CreationPanel(gtk.VBox):
def _save_card_cb(self, button):
if (self.card_complete()):
self._save_card()
+ self.clear_entry_text()
# Returns if the card is complete with a front, back, and category
def card_complete(self):
@@ -169,7 +169,7 @@ class CreationPanel(gtk.VBox):
n_c_back.text = self.side_2_entry.get_text()
- n_c_last.text = str(time.time())
+ n_c_last.text = str(time.time()-_DAY)
n_c_stage.text = "0"
@@ -186,12 +186,40 @@ class CreationPanel(gtk.VBox):
new_card.append(n_c_catagory)
+
+
self.deck.append(new_card)
+ self.decktree.write(self.deckfile)
+
+
+ # # Returns the appropriate deck based on the subject
+ # def get_deck(self, subject_string):
+ # subject_filename = subject_string + ".xml"
+ # for deck in self.decklist:
+ # if deck.text == subject_string:
+ # return subject_filename
+
+
+ # self.add_to_deck_list(subject_string)
+ # self.create_xml_file(subject_filename)
+ # return subject_filename
+
+ # # Adds new deck to the deck list xml file
+ # def add_to_deck_list(self, deckname):
+ # new_deck = xml.etree.ElementTree.Element("deck")
+ # new_deck.text = deckname
+ # self.decklist.append(new_deck)
+ # self.decktree.write(self.decklistfile)
+
+
+ # # Creates a new xml file with the name of the new subject
+ # def create_xml_file(self, filename):
+ # new_deck = xml.etree.ElementTree.Element("deck")
+ # new_tree = xml.etree.ElementTree.ElementTree(new_deck)
+ # new_tree.write(filename)
- self.tree.write(self.testfile)
- return file_dsobject
# Saves changes to the edited card, and writes the change to the xml file
def _save_changes(self):
diff --git a/creationpanel.pyc b/creationpanel.pyc
new file mode 100644
index 0000000..1acef3f
--- /dev/null
+++ b/creationpanel.pyc
Binary files differ
diff --git a/decks.dtd b/decks.dtd
new file mode 100644
index 0000000..db2f02d
--- /dev/null
+++ b/decks.dtd
@@ -0,0 +1,7 @@
+<?xml version = "1.0" encoding = "utf-8"?>
+
+<!-- decks.dtd - a document type definition for the decks.xml document -->
+
+<!ELEMENT all (deck+)>
+
+<!ELEMENT deck (#PCDATA)>
diff --git a/decks.xml b/decks.xml
new file mode 100644
index 0000000..dca79da
--- /dev/null
+++ b/decks.xml
@@ -0,0 +1,3 @@
+<all>
+ <deck>Test Deck</deck>
+<deck>new test deck</deck><deck>Select Test Deck</deck></all>
diff --git a/decks.xml~ b/decks.xml~
new file mode 100644
index 0000000..e2a821a
--- /dev/null
+++ b/decks.xml~
@@ -0,0 +1,3 @@
+<all>
+ <deck> Test Deck </deck>
+<deck>new test deck</deck><deck>Select Test Deck</deck></all> \ No newline at end of file
diff --git a/new test deck.xml b/new test deck.xml
new file mode 100644
index 0000000..b2b38f6
--- /dev/null
+++ b/new test deck.xml
@@ -0,0 +1 @@
+<deck><card><front>maybe first</front><back>card</back><last_reviewed>1280768303.54</last_reviewed><stage>0</stage><catagory>for</catagory></card><card><front>second</front><back>card</back><last_reviewed>1280768358.26</last_reviewed><stage>0</stage><catagory>for</catagory></card></deck> \ No newline at end of file
diff --git a/port/__init__.pyc b/port/__init__.pyc
new file mode 100644
index 0000000..13be69c
--- /dev/null
+++ b/port/__init__.pyc
Binary files differ
diff --git a/port/widgets.pyc b/port/widgets.pyc
new file mode 100644
index 0000000..94a2a2b
--- /dev/null
+++ b/port/widgets.pyc
Binary files differ
diff --git a/reviewpanel.py b/reviewpanel.py
index a65c855..4fa4649 100644
--- a/reviewpanel.py
+++ b/reviewpanel.py
@@ -41,12 +41,14 @@ _1_WEEK = _1_DAY * 7
_2_WEEKS = _1_WEEK * 2
_1_MONTH = _2_WEEKS * 2
+_REVIEWED = False
+
#
# Review Panel for the Flashcard Activity
#
class ReviewPanel(gtk.VBox):
- def __init__(self, box, catagory, expired_only):
+ def __init__(self, deckfile, box, catagory, expired_only):
gtk.VBox.__init__(self)
self.catagory = catagory
@@ -85,6 +87,11 @@ class ReviewPanel(gtk.VBox):
_checkbutton.set_icon_widget(
self.make_label('next', ' ' + _('Check Answer!')))
+ _nextcard = ToolButton(tooltip=_('Next Card'))
+ _nextcard.connect('clicked', self._next_card_cb)
+ _nextcard.set_icon_widget(
+ self.make_label('next', ' ' + _('Next Card')))
+
self.view_box.pack_start(self.frontlabel)
self.view_box.pack_start(self.viewcard)
@@ -92,6 +99,7 @@ class ReviewPanel(gtk.VBox):
self.entry_box.pack_start(self.answer_entry)
self.button_box.pack_start(_checkbutton)
+ self.button_box.pack_start(_nextcard)
self.answer_box.pack_start(self.answerlabel)
self.answer_box.pack_start(self.correct)
@@ -112,6 +120,7 @@ class ReviewPanel(gtk.VBox):
self.correct.show()
_checkbutton.show()
+ _nextcard.show()
self.view_box.show()
self.entry_box.show()
@@ -120,9 +129,9 @@ class ReviewPanel(gtk.VBox):
self.current_date = time.time()
- self.testfile = "testfile.xml"
+ self.deckfile = deckfile
- self.tree = xml.etree.ElementTree.parse(self.testfile)
+ self.tree = xml.etree.ElementTree.parse(self.deckfile)
self.deck = self.get_selected_deck()
@@ -130,6 +139,8 @@ class ReviewPanel(gtk.VBox):
self.card = self.next_card()
+ self.card_reviewed = False
+
self.textbuffer.set_text(self.card.find("front").text)
# Returns the box number of the selected box
@@ -153,9 +164,16 @@ class ReviewPanel(gtk.VBox):
# Check answer callback
def _check_answer_cb(self, button):
self.correcttextbuffer.set_text(self.check_answer())
- self.answer_entry.set_text("")
- self.card = self.next_card()
- self.textbuffer.set_text(self.card.find("front").text)
+ self.card_reviewed = True
+
+
+ def _next_card_cb(self, button):
+ if self.card_reviewed:
+ self.answer_entry.set_text("")
+ self.card = self.next_card()
+ self.textbuffer.set_text(self.card.find("front").text)
+ self.correcttextbuffer.set_text("")
+ self.card_reviewed = False
# Checks the answer submitted, returns "Correct" or the back of the card
@@ -290,7 +308,7 @@ class ReviewPanel(gtk.VBox):
self.card.find("last_reviewed").text = str(time.time())
self.card.find("stage").text = str(stage)
- self.tree.write(self.testfile)
+ self.tree.write(self.deckfile)
# Gets the icon for the button and makes the label
# Written by Simon Schampijer
diff --git a/reviewpanel.pyc b/reviewpanel.pyc
new file mode 100644
index 0000000..c888468
--- /dev/null
+++ b/reviewpanel.pyc
Binary files differ
diff --git a/reviewselection.py b/reviewselection.py
index b3c2307..c0c0ff2 100644
--- a/reviewselection.py
+++ b/reviewselection.py
@@ -43,11 +43,9 @@ from gettext import gettext as _
#
class ReviewSelection(gtk.VBox):
- def __init__(self, activity_root):
+ def __init__(self, deckfile):
gtk.VBox.__init__(self)
- self.activity_root = activity_root
-
self.box_selection_box = gtk.HBox()
self.catagory_selection_box = gtk.HBox()
@@ -68,7 +66,7 @@ class ReviewSelection(gtk.VBox):
self.expired.set_active(True)
- self.cardfile = "testfile.xml"
+ self.cardfile = deckfile
self.tree = xml.etree.ElementTree.parse(self.cardfile)
diff --git a/reviewselection.pyc b/reviewselection.pyc
new file mode 100644
index 0000000..18afb0e
--- /dev/null
+++ b/reviewselection.pyc
Binary files differ
diff --git a/selectdeckpanel.py b/selectdeckpanel.py
new file mode 100644
index 0000000..f2655ac
--- /dev/null
+++ b/selectdeckpanel.py
@@ -0,0 +1,140 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2010, Kirk Winans
+# Code originally based on Simon Schampijer's code for the Memorize
+# Activity
+
+
+# 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.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+import gtk
+from os import environ
+from os.path import join, basename
+import hippo
+
+import shutil
+import tempfile
+from gettext import gettext as _
+import logging
+from gobject import SIGNAL_RUN_FIRST, TYPE_PYOBJECT
+from sugar.graphics import style
+from sugar.graphics.toolbutton import ToolButton
+from sugar.graphics.icon import Icon
+from sugar.graphics.palette import Palette
+from port.widgets import ToggleToolButton
+from port.widgets import CanvasRoundBox, ToolComboBox
+#from port import chooser
+
+from sugar.datastore import datastore
+import xml.etree.ElementTree
+
+#
+# Select Deck Panel for Flashcard Activity
+#
+class SelectDeckPanel(gtk.VBox):
+
+ def __init__(self):
+
+ gtk.VBox.__init__(self)
+
+ self.available_decks_box = gtk.HBox()
+ self.new_deck_box = gtk.HBox()
+
+ self.available_decks_label = gtk.Label(_('Deck:'))
+ self.available_decks = gtk.ComboBoxEntry()
+ self.available_decks = gtk.combo_box_new_text()
+
+ self.new_deck_label = gtk.Label(_('New Deck Name:'))
+ self.new_deck = gtk.Entry()
+
+
+ self.decklistfile = "decks.xml"
+ self.decktree = xml.etree.ElementTree.parse(self.decklistfile)
+ self.decklist = self.decktree.getroot()
+ decks = self.get_decks()
+
+ for text in decks:
+ self.available_decks.append_text(text)
+
+
+ self.available_decks.set_active(0)
+
+ self.available_decks_box.pack_start(self.available_decks_label)
+ self.available_decks_box.pack_start(self.available_decks)
+ self.add(self.available_decks_box)
+
+ self.new_deck_box.pack_start(self.new_deck_label)
+ self.new_deck_box.pack_start(self.new_deck)
+ self.add(self.new_deck_box)
+
+
+ self.available_decks_label.show()
+ self.available_decks.show()
+ self.available_decks_box.show()
+
+ self.new_deck_label.show()
+ self.new_deck.show()
+ self.new_deck_box.show()
+
+
+
+
+
+ # Returns list of decks
+ def get_decks(self):
+
+ decks = ['NEW DECK']
+
+ for deck in self.decklist:
+ decks = decks + [deck.text]
+
+ decks = sorted(decks)
+
+ for idx in range(len(decks)):
+ if decks[idx] == 'NEW DECK':
+ decks[idx] = decks[0]
+ decks[0] = 'NEW DECK'
+
+ return decks
+
+
+ # Returns the selected deck file name
+ def get_deckfile(self):
+ deck_name = self.available_decks.get_active_text()
+
+ if deck_name == 'NEW DECK':
+ deckfile = self.gen_new_deck(self.new_deck.get_text())
+
+ else:
+ deckfile = deck_name + '.xml'
+
+
+ return deckfile
+
+ # Generates a new deck file and returns the name
+ def gen_new_deck(self, new_deck_name):
+ deckfilename = new_deck_name + '.xml'
+ self.add_to_deck_list(new_deck_name)
+ self.create_xml_file(deckfilename)
+
+ return deckfilename
+
+ # Adds new deck to the deck list xml file
+ def add_to_deck_list(self, deckname):
+ new_deck = xml.etree.ElementTree.Element("deck")
+ new_deck.text = deckname
+ self.decklist.append(new_deck)
+ self.decktree.write(self.decklistfile)
+
+
+ # Creates a new xml file with the name of the new subject
+ def create_xml_file(self, filename):
+ new_deck = xml.etree.ElementTree.Element("deck")
+ new_tree = xml.etree.ElementTree.ElementTree(new_deck)
+ new_tree.write(filename)
diff --git a/selectdeckpanel.pyc b/selectdeckpanel.pyc
new file mode 100644
index 0000000..c2c6f8b
--- /dev/null
+++ b/selectdeckpanel.pyc
Binary files differ
diff --git a/selectdeckpanel.py~ b/selectdeckpanel.py~
new file mode 100644
index 0000000..05f5285
--- /dev/null
+++ b/selectdeckpanel.py~
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2010, Kirk Winans
+# Code originally based on Simon Schampijer's code for the Memorize
+# Activity
+
+
+# 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.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+import gtk
+from os import environ
+from os.path import join, basename
+import hippo
+
+import shutil
+import tempfile
+from gettext import gettext as _
+import logging
+from gobject import SIGNAL_RUN_FIRST, TYPE_PYOBJECT
+from sugar.graphics import style
+from sugar.graphics.toolbutton import ToolButton
+from sugar.graphics.icon import Icon
+from sugar.graphics.palette import Palette
+from port.widgets import ToggleToolButton
+from port.widgets import CanvasRoundBox, ToolComboBox
+#from port import chooser
+
+from sugar.datastore import datastore
+import xml.etree.ElementTree
+
+#
+# Select Deck Panel for Flashcard Activity
+#
+class SelectDeckPanel(gtk.VBox):
+
+ def __init__(self)
+
+ gtk.VBox.__init__(self)
+
+ available_decks_box = gtk.HBox()
+ new_deck_box = gtk.HBox()
+
+ self.available_decks_label = gtk.Label(_('Deck:'))
+ self.available_decks = gtk.ComboBoxEntry()
+
+ self.new_deck_label = gtk.Label(_('New Deck Name:'))
+ self.new_deck = gtk.Entry()
+
+
+ self.available_decks_box.pack_start(self.available_decks_label)
+ self.available_decks_box.pack_start(self.available_decks)
+ self.pack_start(available_decks_box)
+
+ self.new_deck_box(self.new_deck_label)
+ self.new_deck_box(self.new_deck)
+ self.pack_start(new_deck_box)
+
+
+ self.available_decks_label.show()
+ self.available_decks.show()
+ self.available_decks_box.show()
+
+ self.new_deck_label.show()
+ self.new_deck.show()
+ self.new_deck_box.show()
diff --git a/testfile.xml b/testfile.xml
deleted file mode 100644
index 1b2f3d3..0000000
--- a/testfile.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<deck> Test Deck
- <card>
- <front>date</front>
- <back>work</back>
- <last_reviewed>1280767905.54</last_reviewed>
- <stage>0</stage>
- <catagory>thanks</catagory>
- </card>
- <card>
- <front>Edit</front>
- <back>works</back>
- <last_reviewed>1280767937.74</last_reviewed>
- <stage>0</stage>
- <catagory>thanks</catagory>
- </card>
- <card>
- <front>Clearing</front>
- <back>Text Boxes</back>
- <last_reviewed>1280767944.82</last_reviewed>
- <stage>0</stage>
- <catagory>Works</catagory>
- </card>
- <card>
- <front>Clear</front>
- <back>Entry</back>
- <last_reviewed>1280767951.73</last_reviewed>
- <stage>0</stage>
- <catagory>test</catagory>
- </card>
- <card>
- <front>front</front>
- <back>back</back>
- <last_reviewed>1280253050.31</last_reviewed>
- <stage>3</stage>
- <catagory>catagory</catagory>
- </card>
- <card>
- <front>time</front>
- <back>stamp</back>
- <last_reviewed>1279823320.53</last_reviewed>
- <stage>2</stage>
- <catagory>works</catagory>
- </card>
- <card>
- <front>timestap</front>
- <back>becomes date</back>
- <last_reviewed>1280767959.74</last_reviewed>
- <stage>0</stage>
- <catagory>why?</catagory>
- </card>
-</deck> \ No newline at end of file