def start(self): print "lang start" self.saved_policy = gcompris.sound.policy_get() gcompris.sound.policy_set(gcompris.sound.PLAY_AND_INTERRUPT) # init config to default values self.config_dict = self.init_config() print "init self.config_dict :", self.config_dict # change configured values print "gcompris.get_board_conf() : ", gcompris.get_board_conf() self.config_dict.update(gcompris.get_board_conf()) print "self.config_dict final :", self.config_dict if self.config_dict.has_key('locale_sound'): gcompris.set_locale(self.config_dict['locale_sound']) # Set the buttons we want in the bar gcompris.bar_set(gcompris.BAR_LEVEL | gcompris.BAR_REPEAT | gcompris.BAR_CONFIG) gcompris.bar_location(gcompris.BOARD_WIDTH / 2 - 100, -1, 0.6) # Set a background image gcompris.set_default_background( self.gcomprisBoard.canvas.get_root_item()) # Create our rootitem. We put each canvas item in it so at the end we # only have to kill it. The canvas deletes all the items it contains # automaticaly. self.rootitem = goocanvas.Group( parent=self.gcomprisBoard.canvas.get_root_item()) self.langLib = LangLib(gcompris.DATA_DIR + "/lang/lang.xml") self.chapters = self.langLib.getChapters() # FIXME Do not manage Chapter yet self.currentChapterId = 0 # Manage levels (a level is a lesson in the lang model) self.gcomprisBoard.level = 1 self.gcomprisBoard.maxlevel = \ len ( self.chapters.getChapters()[self.currentChapterId].getLessons() ) gcompris.bar_set_level(self.gcomprisBoard) self.currentExercise = None self.currentLesson = self.langLib.getLesson( self.currentChapterId, self.gcomprisBoard.level - 1) self.displayLesson(self.currentLesson)
def start(self): print "lang start" self.saved_policy = gcompris.sound.policy_get() gcompris.sound.policy_set(gcompris.sound.PLAY_AND_INTERRUPT) # init config to default values self.config_dict = self.init_config() print "init self.config_dict :", self.config_dict # change configured values print "gcompris.get_board_conf() : ", gcompris.get_board_conf() self.config_dict.update(gcompris.get_board_conf()) print "self.config_dict final :", self.config_dict if self.config_dict.has_key('locale_sound'): gcompris.set_locale(self.config_dict['locale_sound']) # Set the buttons we want in the bar gcompris.bar_set(gcompris.BAR_LEVEL|gcompris.BAR_REPEAT|gcompris.BAR_CONFIG) gcompris.bar_location(gcompris.BOARD_WIDTH / 2 - 100, -1, 0.6) # Set a background image gcompris.set_default_background(self.gcomprisBoard.canvas.get_root_item()) # Create our rootitem. We put each canvas item in it so at the end we # only have to kill it. The canvas deletes all the items it contains # automaticaly. self.rootitem = goocanvas.Group(parent = self.gcomprisBoard.canvas.get_root_item()) self.langLib = LangLib(gcompris.DATA_DIR + "/lang/lang.xml") self.chapters = self.langLib.getChapters() # FIXME Do not manage Chapter yet self.currentChapterId = 0 # Manage levels (a level is a lesson in the lang model) self.gcomprisBoard.level = 1 self.gcomprisBoard.maxlevel = \ len ( self.chapters.getChapters()[self.currentChapterId].getLessons() ) gcompris.bar_set_level(self.gcomprisBoard) self.currentExercise = None self.currentLesson = self.langLib.getLesson(self.currentChapterId, self.gcomprisBoard.level - 1) self.displayLesson( self.currentLesson )
def start(self): self.gcomprisBoard.level=1 self.gcomprisBoard.maxlevel=1 self.gcomprisBoard.sublevel=1 self.gcomprisBoard.number_of_sublevel=1 gcompris.bar_set(gcompris.BAR_REPEAT|gcompris.BAR_CONFIG) gcompris.bar_set_level(self.gcomprisBoard) gcompris.set_background(self.gcomprisBoard.canvas.get_root_item(), backgrounds[self.gcomprisBoard.level-1]) # Get the default profile self.Prop = gcompris.get_properties() if not self.Prop: return # init config to default values self.config_dict = self.init_config() # change configured values self.config_dict.update(gcompris.get_board_conf()) # Create and Initialize the rootitem. self.init_rootitem(self.Prop) # Get the user list users = [] if self.Prop.profile: for group_id in self.Prop.profile.group_ids: users.extend( gcompris.admin.get_users_from_group(group_id)) self.users = self.check_unique_id(users) if eval(self.config_dict['entry_text']): self.entry_text() else: self.display_user_by_letter(self.users, "")
def start(self): logged = gcompris.admin.get_current_user() # API Test, return the absolute path to this file print gcompris.utils.find_file_absolute("sounds/bleep.wav") # wordlist = gcompris.get_wordlist('wordslevel_max_pt_BR') # print wordlist # print wordlist.filename # print wordlist.level # print wordlist.locale # print wordlist.description # print wordlist.words if logged: print "User Logged in:" print " ", logged.login, logged.firstname, logged.lastname self.gcomprisBoard.level=1 self.gcomprisBoard.maxlevel=1 self.gcomprisBoard.sublevel=1 self.gcomprisBoard.number_of_sublevel=1 # init config to default values self.config_dict = self.init_config() print "init self.config_dict :", self.config_dict # change configured values print "gcompris.get_board_conf() : ", gcompris.get_board_conf() self.config_dict.update(gcompris.get_board_conf()) print "self.config_dict final :", self.config_dict if self.config_dict.has_key('locale'): gcompris.set_locale(self.config_dict['locale']) # self.colors['line'] s set in init. # I put here the configuration use color_name = self.config_dict['color_line'] self.colors['line'] = self.config_colors[color_name] gcompris.bar_set(gcompris.BAR_CONFIG) gcompris.set_default_background(self.gcomprisBoard.canvas.get_root_item()) gcompris.bar_set_level(self.gcomprisBoard) # Create our rootitem. We put each canvas item in it so at the end we # only have to kill it. The canvas deletes all the items it contains automaticaly. self.rootitem = goocanvas.Group(parent = self.gcomprisBoard.canvas.get_root_item()) # distance is used to demo of gcompris.spin_int distance = eval(self.config_dict['distance_circle']) # pattern is for gcompris.radio_buttons pattern = self.config_dict['pattern'] patterns = { 'circle': goocanvas.Ellipse, 'rectangle': goocanvas.Rect } #error check if not patterns.has_key(pattern): pattern = 'circle' self.canvasitems[1] = patterns[pattern]( parent = self.rootitem, fill_color_rgba= self.colors['circle_in'], stroke_color_rgba= self.colors['circle_out'], line_width=1.0 ) self.canvasitems[1].connect("button_press_event", self.circle_item_event) self.canvasitems[1].connect("button_release_event", self.circle_item_event) self.canvasitems[1].connect("motion_notify_event", self.circle_item_event) if(pattern == 'circle'): self.canvasitems[1].set_properties( center_x = 400.0 - distance, center_y = 200.0, radius_x = 20, radius_y = 20) else: self.canvasitems[1].set_properties( x = 400.0 - distance, y = 200.0, width = 20, height = 20) self.canvasitems[2] = patterns[pattern]( parent = self.rootitem, fill_color_rgba= self.colors['circle_in'], stroke_color_rgba= self.colors['circle_out'], line_width=1.0 ) self.canvasitems[2].connect("button_press_event", self.circle_item_event) self.canvasitems[2].connect("button_release_event", self.circle_item_event) self.canvasitems[2].connect("motion_notify_event", self.circle_item_event) if(pattern == 'circle'): self.canvasitems[2].set_properties( center_x = 400.0 + distance, center_y = 200.0, radius_x = 20, radius_y = 20) else: self.canvasitems[2].set_properties( x = 400.0 + distance, y = 200.0, width = 20, height = 20) self.canvasitems[3] = goocanvas.Text( parent = self.rootitem, x=400.0, y=100.0, text=_("This is the first plugin in GCompris coded in the Python\nProgramming language."), fill_color="black", anchor = gtk.ANCHOR_CENTER, alignment = pango.ALIGN_CENTER ) self.canvasitems[4] = goocanvas.Text( parent = self.rootitem, x=400.0, y=140.0, text=_("It is now possible to develop GCompris activities in C or in Python.\nThanks to Olivier Samys who makes this possible."), fill_color="black", anchor = gtk.ANCHOR_CENTER, alignment = pango.ALIGN_CENTER ) self.canvasitems[5] = goocanvas.Text( parent = self.rootitem, x=400.0, y=250.0, text=_("This activity is not playable, just a test"), fill_color="black", anchor = gtk.ANCHOR_CENTER, alignment = pango.ALIGN_CENTER ) #---------------------------------------- # A simple game. # Try to hit left shift and right shift together. The peed increases goocanvas.Rect( parent = self.rootitem, x = 20, y = gcompris.BOARD_HEIGHT-220, width = gcompris.BOARD_WIDTH-40, height = 150, fill_color_rgba=0xFF663333L, stroke_color_rgba=0xFF33CCAAL, line_width=2.0) # For the game status WIN/LOOSE self.canvasitems[6] = goocanvas.Text( parent = self.rootitem, x=gcompris.BOARD_WIDTH / 2, y=gcompris.BOARD_HEIGHT - 100, font=gcompris.skin.get_font("gcompris/content"), fill_color_rgba=0x102010FFL, anchor = gtk.ANCHOR_CENTER, alignment = pango.ALIGN_CENTER ) goocanvas.Text( parent = self.rootitem, x=400.0, y=360.0, text=("Test your reflex with the counter. Hit the 2 shifts key together.\nHit space to reset the counter and increase the speed.\nBackspace to reset the speed"), fill_color="black", anchor = gtk.ANCHOR_CENTER, alignment = pango.ALIGN_CENTER ) # The basic tick for object moves self.timerinc = 1000 self.timer_inc = gobject.timeout_add(self.timerinc, self.timer_inc_display) self.counter_left = 0 self.counter_right = 0 self.canvasitems[7] =goocanvas.Text( parent = self.rootitem, x=gcompris.BOARD_WIDTH / 2, y=gcompris.BOARD_HEIGHT - 120, font=gcompris.skin.get_font("gcompris/content"), text="Speed="+str(self.timerinc)+" ms", fill_color="black", anchor = gtk.ANCHOR_CENTER, alignment = pango.ALIGN_CENTER ) self.textitem_left = goocanvas.Text( parent = self.rootitem, font=gcompris.skin.get_font("gcompris/content"), x=gcompris.BOARD_WIDTH / 3, y=gcompris.BOARD_HEIGHT - 100, fill_color_rgba=0xFF000FFFL ) self.textitem_right =goocanvas.Text( parent = self.rootitem, font=gcompris.skin.get_font("gcompris/content"), x=gcompris.BOARD_WIDTH / 1.5, y=gcompris.BOARD_HEIGHT - 100, fill_color_rgba=0xFF000FFFL ) self.left_continue = True self.right_continue = True print("Gcompris_pythontest start.")
def start(self): progname='tuxpaint' tuxpaint_dir = None flags = gobject.SPAWN_DO_NOT_REAP_CHILD | gobject.SPAWN_SEARCH_PATH print platform.platform(), platform.platform().split('-')[0] if (platform.platform().split('-')[0] == 'Windows'): progname = 'tuxpaint.exe' try: import _winreg tuxpaint_key = _winreg.OpenKey( _winreg.HKEY_LOCAL_MACHINE, "Software\\TuxPaint" ) tuxpaint_dir, type = _winreg.QueryValueEx(tuxpaint_key, "Install_Dir") flags = gobject.SPAWN_DO_NOT_REAP_CHILD # escape mandatory in Win pygtk2.6 tuxpaint_dir = '"' + tuxpaint_dir + '"' except: pass self.window = self.gcomprisBoard.canvas.get_toplevel() Prop = gcompris.get_properties() #get default values self.config_dict = self.init_config() #replace configured values self.config_dict.update(gcompris.get_board_conf()) self.rootitem = goocanvas.Group(parent = self.gcomprisBoard.canvas.get_root_item()) # first run: find version options = [progname] options.append('--version') global pid try: # bug in working_directory=None ? if (tuxpaint_dir): pid, stdin, stdout, stderr = gobject.spawn_async( argv=options, flags=flags, working_directory=tuxpaint_dir, standard_output=True ) else: pid, stdin, stdout, stderr = gobject.spawn_async( argv=options, flags=flags, standard_output=True ) except: gcompris.utils.dialog(_("Cannot find Tuxpaint.\nInstall it to use this activity !"),stop_board) return gobject.child_watch_add(pid, child_callback, data=self, priority=gobject.PRIORITY_HIGH) output=os.read(stdout, 255) parsenext = False oldfullscreensyntax = False for i in output.split(): if ( parsenext): tpversion = i.split(".") major, minor, sub = tpversion if (int(major) < 1 and int(minor) < 10 and int(sub) < 22): oldfullscreensyntax=True break if (i == "Version"): # next is the version number parsenext = True # second run: adapt the parms to the version and run options = [progname] if (Prop.fullscreen and eval(self.config_dict['fullscreen'])): if (oldfullscreensyntax): options.append('--fullscreen') options.append('--native') else: options.append('--fullscreen=native') if eval(self.config_dict['disable_shape_rotation']): options.append('--simpleshapes') if eval(self.config_dict['uppercase_text']): options.append('--uppercase') if eval(self.config_dict['disable_stamps']): options.append('--nostamps') if eval(self.config_dict['disable_stamps_control']): options.append('--nostampcontrols') gcompris.sound.close() try: # bug in working_directory=None ? if (tuxpaint_dir): pid, stdin, stdout, stderr = gobject.spawn_async( argv=options, flags=flags, working_directory=tuxpaint_dir) else: pid, stdin, stdout, stderr = gobject.spawn_async( argv=options, flags=flags) except: gcompris.utils.dialog(_("Cannot find Tuxpaint.\nInstall it to use this activity !"),stop_board) return gobject.child_watch_add(pid, child_callback, data=self, priority=gobject.PRIORITY_HIGH) gcompris.bar_set(gcompris.BAR_CONFIG) gcompris.bar_hide(1) gcompris.set_default_background(self.gcomprisBoard.canvas.get_root_item()) textItem = goocanvas.Text( parent = self.rootitem, text = _("Waiting for Tuxpaint to finish"), x = gcompris.BOARD_WIDTH/2, y = 185, fill_color_rgba = 0x000000ffL, anchor = gtk.ANCHOR_CENTER, font = gcompris.skin.get_font("gcompris/board/title bold"), )
def start(self): self.saved_policy = gcompris.sound.policy_get() gcompris.sound.policy_set(gcompris.sound.PLAY_AND_INTERRUPT) gcompris.sound.pause() # init config to default values self.config_dict = self.init_config() # change configured values self.config_dict.update(gcompris.get_board_conf()) if self.config_dict.has_key('locale_sound'): gcompris.set_locale(self.config_dict['locale_sound']) # Set the buttons we want in the bar handle = gcompris.utils.load_svg("lang/repeat.svg") gcompris.bar_set_repeat_icon(handle) gcompris.bar_set(gcompris.BAR_LEVEL | gcompris.BAR_REPEAT_ICON | gcompris.BAR_CONFIG) gcompris.bar_location(gcompris.BOARD_WIDTH / 2 - 100, -1, 0.6) # Set a background image gcompris.set_background(self.gcomprisBoard.canvas.get_root_item(), "lang/background.svgz") # Create our rootitem. We put each canvas item in it so at the end we # only have to kill it. The canvas deletes all the items it contains # automaticaly. self.rootitem = goocanvas.Group( parent=self.gcomprisBoard.canvas.get_root_item()) self.langLib = LangLib(gcompris.DATA_DIR + "/lang/words.xml") self.chapters = self.langLib.getChapters() if self.gcomprisBoard.mode == "": gcompris.utils.dialog( "ERROR, missing 'mode' in the xml menu to specify the chapter", None) return self.currentChapterName = self.gcomprisBoard.mode # Manage levels (a level is a lesson in the lang model) self.gcomprisBoard.level = 1 try: self.gcomprisBoard.maxlevel = \ len ( self.chapters.getChapters()[self.currentChapterName].getLessons() ) except: gcompris.utils.dialog( "ERROR, missing chapter '" + self.currentChapterName + "'", None) return if self.gcomprisBoard.maxlevel == 0: gcompris.utils.dialog( _("ERROR, we found no words in this language.") + " " + _("Please consider contributing a voice set."), None) return gcompris.bar_set_level(self.gcomprisBoard) self.currentExerciseModes = [] self.currentExercise = None self.currentLesson = self.langLib.getLesson( self.currentChapterName, self.gcomprisBoard.level - 1) self.displayLesson(self.currentLesson) self.pause(0)
def start(self): self.saved_policy = gcompris.sound.policy_get() gcompris.sound.policy_set(gcompris.sound.PLAY_AND_INTERRUPT) gcompris.sound.pause() # init config to default values self.config_dict = self.init_config() # change configured values self.config_dict.update(gcompris.get_board_conf()) if self.config_dict.has_key('locale_sound'): gcompris.set_locale(self.config_dict['locale_sound']) # Set the buttons we want in the bar handle = gcompris.utils.load_svg("lang/repeat.svg") gcompris.bar_set_repeat_icon(handle) gcompris.bar_set(gcompris.BAR_LEVEL|gcompris.BAR_REPEAT_ICON|gcompris.BAR_CONFIG) # Set a background image gcompris.set_background(self.gcomprisBoard.canvas.get_root_item(), "lang/background.svgz") # Create our rootitem. We put each canvas item in it so at the end we # only have to kill it. The canvas deletes all the items it contains # automaticaly. self.rootitem = goocanvas.Group(parent = self.gcomprisBoard.canvas.get_root_item()) self.langLib = LangLib(gcompris.DATA_DIR + "/lang/words.xml") self.chapters = self.langLib.getChapters() self.currentExercise = None self.currentExerciseModes = [] if self.gcomprisBoard.mode == "": gcompris.utils.dialog("ERROR, missing 'mode' in the xml menu to specify the chapter", None) return self.currentChapterName = self.gcomprisBoard.mode # Manage levels (a level is a lesson in the lang model) self.gcomprisBoard.level = 1 try: self.gcomprisBoard.maxlevel = \ len ( self.chapters.getChapters()[self.currentChapterName].getLessons() ) except: gcompris.utils.dialog("ERROR, missing chapter '" + self.currentChapterName + "'", None) return if self.gcomprisBoard.maxlevel == 0: gcompris.utils.dialog(_("ERROR, we found no words in this language.") + " " + _("Please consider contributing a voice set."), None) return if not (gcompris.get_properties().fx): gcompris.utils.dialog(_("Error: This activity cannot be \ played with the\nsound effects disabled.\nGo to the configuration \ dialogue to\nenable the sound."), None) gcompris.bar_set_level(self.gcomprisBoard) readyButton = TextButton(400, 255, ' ' * 20 + _('I am Ready') + ' ' * 20, self.rootitem, 0x11AA11FFL) readyButton.getBackground().connect("button_press_event", self.ready_event, readyButton) self.pause(1);
def start(self): progname='tuxpaint' tuxpaint_dir = None flags = gobject.SPAWN_DO_NOT_REAP_CHILD | gobject.SPAWN_SEARCH_PATH print platform.platform(), platform.platform().split('-')[0] if (platform.platform().split('-')[0] == 'Windows'): progname = 'tuxpaint.exe' try: import _winreg tuxpaint_key = _winreg.OpenKey( _winreg.HKEY_LOCAL_MACHINE, "Software\\TuxPaint" ) tuxpaint_dir, type = _winreg.QueryValueEx(tuxpaint_key, "Install_Dir") flags = gobject.SPAWN_DO_NOT_REAP_CHILD # escape mandatory in Win pygtk2.6 tuxpaint_dir = '"' + tuxpaint_dir + '"' except: pass self.window = self.gcomprisBoard.canvas.get_toplevel() Prop = gcompris.get_properties() #get default values self.config_dict = self.init_config() #replace configured values self.config_dict.update(gcompris.get_board_conf()) self.rootitem = goocanvas.Group(parent = self.gcomprisBoard.canvas.get_root_item()) options = [progname] if (Prop.fullscreen and eval(self.config_dict['fullscreen'])): options.append('--fullscreen') if eval(self.config_dict['disable_shape_rotation']): options.append('--simpleshapes') if eval(self.config_dict['uppercase_text']): options.append('--uppercase') if eval(self.config_dict['disable_stamps']): options.append('--nostamps') if eval(self.config_dict['disable_stamps_control']): options.append('--nostampcontrols') gcompris.sound.close() global pid try: # bug in working_directory=None ? if (tuxpaint_dir): pid, stdin, stdout, stderr = gobject.spawn_async( argv=options, flags=flags, working_directory=tuxpaint_dir) else: pid, stdin, stdout, stderr = gobject.spawn_async( argv=options, flags=flags) except: gcompris.utils.dialog(_("Cannot find Tuxpaint.\nInstall it to use this activity !"),stop_board) return gobject.child_watch_add(pid, child_callback, data=self, priority=gobject.PRIORITY_HIGH) gcompris.bar_set(gcompris.BAR_CONFIG) gcompris.bar_hide(1) gcompris.set_default_background(self.gcomprisBoard.canvas.get_root_item()) textItem = goocanvas.Text( parent = self.rootitem, text = _("Waiting for Tuxpaint to finish"), x = gcompris.BOARD_WIDTH/2, y = 185, fill_color_rgba = 0x000000ffL, anchor = gtk.ANCHOR_CENTER, font = gcompris.skin.get_font("gcompris/board/title bold"), )
def start(self): self.saved_policy = gcompris.sound.policy_get() gcompris.sound.policy_set(gcompris.sound.PLAY_AND_INTERRUPT) gcompris.sound.pause() # init config to default values self.config_dict = self.init_config() # change configured values self.config_dict.update(gcompris.get_board_conf()) if self.config_dict.has_key('locale_sound'): gcompris.set_locale(self.config_dict['locale_sound']) # Set the buttons we want in the bar handle = gcompris.utils.load_svg("lang/repeat.svg") gcompris.bar_set_repeat_icon(handle) gcompris.bar_set(gcompris.BAR_LEVEL | gcompris.BAR_REPEAT_ICON | gcompris.BAR_CONFIG) # Set a background image gcompris.set_background(self.gcomprisBoard.canvas.get_root_item(), "lang/background.svgz") # Create our rootitem. We put each canvas item in it so at the end we # only have to kill it. The canvas deletes all the items it contains # automaticaly. self.rootitem = goocanvas.Group( parent=self.gcomprisBoard.canvas.get_root_item()) self.langLib = LangLib(gcompris.DATA_DIR + "/lang/words.xml") self.chapters = self.langLib.getChapters() self.currentExercise = None self.currentExerciseModes = [] if self.gcomprisBoard.mode == "": gcompris.utils.dialog( "ERROR, missing 'mode' in the xml menu to specify the chapter", None) return self.currentChapterName = self.gcomprisBoard.mode # Manage levels (a level is a lesson in the lang model) self.gcomprisBoard.level = 1 try: self.gcomprisBoard.maxlevel = \ len ( self.chapters.getChapters()[self.currentChapterName].getLessons() ) except: gcompris.utils.dialog( "ERROR, missing chapter '" + self.currentChapterName + "'", None) return if self.gcomprisBoard.maxlevel == 0: gcompris.utils.dialog( _("ERROR, we found no words in this language.") + " " + _("Please consider contributing a voice set."), None) return if not (gcompris.get_properties().fx): gcompris.utils.dialog( _("Error: This activity cannot be \ played with the\nsound effects disabled.\nGo to the configuration \ dialogue to\nenable the sound."), None) gcompris.bar_set_level(self.gcomprisBoard) readyButton = TextButton(400, 255, ' ' * 20 + _('I am Ready') + ' ' * 20, self.rootitem, 0x11AA11FFL) readyButton.getBackground().connect("button_press_event", self.ready_event, readyButton) self.pause(1)
def start(self): self.saved_policy = gcompris.sound.policy_get() gcompris.sound.policy_set(gcompris.sound.PLAY_AND_INTERRUPT) gcompris.sound.pause() # init config to default values self.config_dict = self.init_config() # change configured values self.config_dict.update(gcompris.get_board_conf()) if self.config_dict.has_key('locale_sound'): gcompris.set_locale(self.config_dict['locale_sound']) # Set the buttons we want in the bar handle = gcompris.utils.load_svg("lang/repeat.svg") gcompris.bar_set_repeat_icon(handle) gcompris.bar_set(gcompris.BAR_LEVEL|gcompris.BAR_REPEAT_ICON|gcompris.BAR_CONFIG) gcompris.bar_location(gcompris.BOARD_WIDTH / 2 - 100, -1, 0.6) # Set a background image gcompris.set_background(self.gcomprisBoard.canvas.get_root_item(), "lang/background.svgz") # Create our rootitem. We put each canvas item in it so at the end we # only have to kill it. The canvas deletes all the items it contains # automaticaly. self.rootitem = goocanvas.Group(parent = self.gcomprisBoard.canvas.get_root_item()) self.langLib = LangLib(gcompris.DATA_DIR + "/lang/words.xml") self.chapters = self.langLib.getChapters() if self.gcomprisBoard.mode == "": gcompris.utils.dialog("ERROR, missing 'mode' in the xml menu to specify the chapter", None) return self.currentChapterName = self.gcomprisBoard.mode # Manage levels (a level is a lesson in the lang model) self.gcomprisBoard.level = 1 try: self.gcomprisBoard.maxlevel = \ len ( self.chapters.getChapters()[self.currentChapterName].getLessons() ) except: gcompris.utils.dialog("ERROR, missing chapter '" + self.currentChapterName + "'", None) return if self.gcomprisBoard.maxlevel == 0: gcompris.utils.dialog(_("ERROR, we found no words in this language.") + " " + _("Please consider contributing a voice set."), None) return gcompris.bar_set_level(self.gcomprisBoard) self.currentExerciseModes = [] self.currentExercise = None self.currentLesson = self.langLib.getLesson(self.currentChapterName, self.gcomprisBoard.level - 1) self.displayLesson( self.currentLesson ) self.pause(0);