def ask_new_exercise(self): self.newExerciseDialog = self.builder.get_object("newExerciseDialog") videoChooser = self.builder.get_object("filechooserbuttonVideo") exerciseChooser = self.builder.get_object("filechooserbuttonExercise") translationChooser = self.builder.get_object("filechooserbuttonTranslation") videoChooser.unselect_all() exerciseChooser.unselect_all() translationChooser.unselect_all() self.liststoreLanguage = gtk.ListStore(str, str) languageManager = LanguagesManager() languagesList = languageManager.get_languages_list() for language in languagesList: iter = self.liststoreLanguage.append([language.name, language.id]) if language.id == config.get("default_exercise_language"): currentIter = iter comboboxLanguage = self.builder.get_object("comboboxLanguage") #Clear old values comboboxLanguage.clear() cell = gtk.CellRendererText() comboboxLanguage.set_model(self.liststoreLanguage) comboboxLanguage.pack_start(cell, True) comboboxLanguage.add_attribute(cell, 'text', 0) comboboxLanguage.set_active_iter(currentIter)
def load(self): adjustmentTimeBetweenSequence = self.builder.get_object("adjustmentTimeBetweenSequence") adjustmentTimeBetweenSequence.set_value(float(config.get("default_exercise_time_between_sequences")) / 1000) adjustmentMaximumSequenceTime = self.builder.get_object("adjustmentMaximumSequenceTime") adjustmentMaximumSequenceTime.set_value(float(config.get("default_exercise_max_sequence_length")) / 1000) adjustmentTimeBeforeSequence = self.builder.get_object("adjustmentTimeBeforeSequence") adjustmentTimeBeforeSequence.set_value(float(config.get("default_exercise_play_margin_after"))) adjustmentTimeAfterSequence = self.builder.get_object("adjustmentTimeAfterSequence") adjustmentTimeAfterSequence.set_value(float(config.get("default_exercise_play_margin_before"))) checkbuttonRepeatAfterComplete = self.builder.get_object("checkbuttonRepeatAfterComplete") checkbuttonRepeatAfterComplete.set_active(config.get("default_exercise_repeat_after_completed") == 1) checkbuttonRandomOrder = self.builder.get_object("checkbuttonRandomOrder") checkbuttonRandomOrder.set_active(config.get("default_exercise_random_order") == 1) #General checkbutton_navigation_skip_valid_sequences = self.builder.get_object("checkbutton_navigation_skip_valid_sequences") checkbutton_navigation_skip_valid_sequences.set_active(config.get("navigation_skip_valid_sequences") == 1) checkbutton_use_speed_changer = self.builder.get_object("checkbutton_use_speed_changer") checkbutton_use_speed_changer.set_active(config.get("interface_use_speed_change") == 1) #Interface checkbuttonShowPlayPauseButtons = self.builder.get_object("checkbuttonShowPlayPauseButtons") checkbuttonShowPlayPauseButtons.set_active(config.get("interface_show_play_pause_buttons") == 1) checkbuttonShowSettings = self.builder.get_object("checkbuttonShowSettings") checkbuttonShowSettings.set_active(config.get("interface_lock_settings") != 1) # Language self.liststoreLanguage = gtk.ListStore(str, str) languageManager = LanguagesManager() languagesList = languageManager.get_languages_list() currentLangId = config.get("default_exercise_language") for language in languagesList: iter = self.liststoreLanguage.append([language.name, language.id]) if language.id == currentLangId: currentIter = iter comboboxLanguage = self.builder.get_object("comboboxLanguage") cell = gtk.CellRendererText() comboboxLanguage.set_model(self.liststoreLanguage) comboboxLanguage.pack_start(cell, True) comboboxLanguage.add_attribute(cell, 'text', 0) comboboxLanguage.set_active_iter(currentIter)
def load(self): (videoPath, exercisePath, translationPath) = self.core.get_paths() if videoPath == "": videoPath = "None" if exercisePath == "": exercisePath = "None" if translationPath == "": translationPath = "None" videoChooser = self.builder.get_object("filechooserbuttonVideoProp") exerciseChooser = self.builder.get_object( "filechooserbuttonExerciseProp") translationChooser = self.builder.get_object( "filechooserbuttonTranslationProp") videoChooser.set_filename(videoPath) exerciseChooser.set_filename(exercisePath) translationChooser.set_filename(translationPath) checkbuttonRepeatAfterComplete = self.builder.get_object( "checkbuttonRepeatAfterComplete") checkbuttonRepeatAfterComplete.set_active( self.core.get_exercise().get_repeat_after_completed()) checkbuttonUseDynamicCorrection = self.builder.get_object( "checkbuttonUseDynamicCorrection") checkbuttonUseDynamicCorrection.set_active( self.core.get_exercise().is_use_dynamic_correction()) self.liststoreLanguage = gtk.ListStore(str, str) languageManager = LanguagesManager() languagesList = languageManager.get_languages_list() currentLangId = self.core.get_exercise().get_language_id() for language in languagesList: iter = self.liststoreLanguage.append([language.name, language.id]) if language.id == currentLangId: currentIter = iter comboboxLanguage = self.builder.get_object("comboboxLanguage") cell = gtk.CellRendererText() comboboxLanguage.set_model(self.liststoreLanguage) comboboxLanguage.pack_start(cell, True) comboboxLanguage.add_attribute(cell, 'text', 0) comboboxLanguage.set_active_iter(currentIter)
def load(self): (videoPath, exercisePath, translationPath) = self.core.get_paths() if videoPath == "": videoPath = "None" if exercisePath == "": exercisePath = "None" if translationPath == "": translationPath = "None" videoChooser = self.builder.get_object("filechooserbuttonVideoProp") exerciseChooser = self.builder.get_object("filechooserbuttonExerciseProp") translationChooser = self.builder.get_object("filechooserbuttonTranslationProp") videoChooser.set_filename(videoPath) exerciseChooser.set_filename(exercisePath) translationChooser.set_filename(translationPath) checkbuttonRepeatAfterComplete = self.builder.get_object("checkbuttonRepeatAfterComplete") checkbuttonRepeatAfterComplete.set_active(self.core.get_exercise().get_repeat_after_completed()) checkbuttonUseDynamicCorrection = self.builder.get_object("checkbuttonUseDynamicCorrection") checkbuttonUseDynamicCorrection.set_active(self.core.get_exercise().is_use_dynamic_correction()) self.liststoreLanguage = gtk.ListStore(str, str) languageManager = LanguagesManager() languagesList = languageManager.get_languages_list() currentLangId = self.core.get_exercise().get_language_id() for language in languagesList: iter = self.liststoreLanguage.append([language.name, language.id]) if language.id == currentLangId: currentIter = iter comboboxLanguage = self.builder.get_object("comboboxLanguage") cell = gtk.CellRendererText() comboboxLanguage.set_model(self.liststoreLanguage) comboboxLanguage.pack_start(cell, True) comboboxLanguage.add_attribute(cell, 'text', 0) comboboxLanguage.set_active_iter(currentIter)
def load(exercise, dom, path): #Name if len(dom.getElementsByTagName("name")) > 0: exercise.set_name( get_text(dom.getElementsByTagName("name")[0].childNodes)) #Language if len(dom.getElementsByTagName("language")) > 0: exercise.set_language_id( get_text(dom.getElementsByTagName("language")[0].childNodes)) else: languageManager = LanguagesManager() exercise.set_language_id(languageManager.get_default_language().id) #Template if len(dom.getElementsByTagName("template")) > 0: exercise.set_template( get_text(dom.getElementsByTagName("template")[0].childNodes) == "True") #Random order if len(dom.getElementsByTagName("random_order")) > 0: exercise.set_random_order( get_text(dom.getElementsByTagName("random_order")[0].childNodes) == "True") #Locks if len(dom.getElementsByTagName("locks")) > 0: xml_locks = dom.getElementsByTagName("locks")[0] #Correction lock if len(xml_locks.getElementsByTagName("correction_lock")) > 0: exercise.lock_correction = True xml_lock = xml_locks.getElementsByTagName("correction_lock")[0] if len(xml_lock.getElementsByTagName("hash")) > 0: exercise.lock_correction_password = get_text( xml_lock.getElementsByTagName("hash")[0].childNodes) if len(xml_lock.getElementsByTagName("salt")) > 0: exercise.lock_correction_salt = get_text( xml_lock.getElementsByTagName("salt")[0].childNodes) #Properties lock if len(xml_locks.getElementsByTagName("properties_lock")) > 0: exercise.lock_properties = True xml_lock = xml_locks.getElementsByTagName("properties_lock")[0] if len(xml_lock.getElementsByTagName("hash")) > 0: exercise.lock_properties_password = get_text( xml_lock.getElementsByTagName("hash")[0].childNodes) if len(xml_lock.getElementsByTagName("salt")) > 0: exercise.lock_properties_salt = get_text( xml_lock.getElementsByTagName("salt")[0].childNodes) #Help lock if len(xml_locks.getElementsByTagName("help_lock")) > 0: exercise.lock_help = True #Exercise xml_exercise = dom.getElementsByTagName("exercise")[0] #Exercise - CurrentWord currentWord = int( get_text( xml_exercise.getElementsByTagName("current_word")[0].childNodes)) #Exercise - CurrentSequence currentSequence = int( get_text( xml_exercise.getElementsByTagName("current_sequence") [0].childNodes)) # Stats xml_stats = dom.getElementsByTagName("stats")[0] exercise.set_repeat_count( int( get_text( xml_stats.getElementsByTagName("repeat_count")[0].childNodes))) # Properties if len(dom.getElementsByTagName("properties")) > 0: xml_properties = dom.getElementsByTagName("properties")[0] if len(xml_properties.getElementsByTagName( "repeat_after_complete")) > 0: exercise.set_repeat_after_completed( get_text( xml_properties.getElementsByTagName( "repeat_after_complete")[0].childNodes) == "True") if len(xml_properties.getElementsByTagName( "time_between_sequence")) > 0: exercise.set_time_between_sequence( float( get_text( xml_properties.getElementsByTagName( "time_between_sequence")[0].childNodes))) if len(xml_properties.getElementsByTagName("max_sequence_length")) > 0: exercise.set_max_sequence_length( float( get_text( xml_properties.getElementsByTagName( "max_sequence_length")[0].childNodes))) if len(xml_properties.getElementsByTagName("play_margin_before")) > 0: exercise.set_play_margin_before( int( get_text( xml_properties.getElementsByTagName( "play_margin_before")[0].childNodes))) if len(xml_properties.getElementsByTagName("play_margin_after")) > 0: exercise.set_play_margin_after( int( get_text( xml_properties.getElementsByTagName( "play_margin_after")[0].childNodes))) if len(xml_properties.getElementsByTagName( "use_dynamic_correction")) > 0: exercise.set_use_dynamic_correction( get_text( xml_properties.getElementsByTagName( "use_dynamic_correction")[0].childNodes) == "True") if len( xml_properties.getElementsByTagName( "repeat_count_by_sequence_limit")) > 0: exercise.set_repeat_count_limit_by_sequence( int( get_text( xml_properties.getElementsByTagName( "repeat_count_by_sequence_limit")[0].childNodes))) #Subexercises subExos = [] for xml_subExercise in xml_exercise.getElementsByTagName("sub_exercise"): subExercise = SubExercise(exercise) #Sequences xml_sequences = xml_subExercise.getElementsByTagName("sequences")[0] progress = [] for xml_sequence in xml_sequences.getElementsByTagName("sequence"): id = int( get_text( xml_sequence.getElementsByTagName("id")[0].childNodes)) state = get_text( xml_sequence.getElementsByTagName("state")[0].childNodes) #Sequence repeat count if len(xml_sequence.getElementsByTagName("repeat_count")) > 0: repeat_count = int( get_text( xml_sequence.getElementsByTagName("repeat_count") [0].childNodes)) else: repeat_count = 0 words = [] if state == "in_progress": xml_words = xml_sequence.getElementsByTagName("words")[0] for xml_world in xml_words.getElementsByTagName("word"): words.append(get_text(xml_world.childNodes)) progress.append((id, state, words, repeat_count)) #Paths xml_paths = xml_subExercise.getElementsByTagName("paths")[0] subExercise.set_video_path( get_text(xml_paths.getElementsByTagName("video")[0].childNodes)) subExercise.set_exercise_path( get_text(xml_paths.getElementsByTagName("exercise")[0].childNodes)) subExercise.set_translation_path( get_text( xml_paths.getElementsByTagName("translation")[0].childNodes)) exercise.subExercisesList.append(subExercise) subExos.append(progress) #Convert relative path for subExo in exercise.subExercisesList: if not os.path.isfile(subExo.get_exercise_path()): absPath = os.path.join(os.path.dirname(path), subExo.get_exercise_path()) if not os.path.isfile(absPath): subExo.set_exercise_path("") else: subExo.set_exercise_path(absPath) if not os.path.isfile(subExo.get_video_path()): absPath = os.path.join(os.path.dirname(path), subExo.get_video_path()) if not os.path.isfile(absPath): subExo.set_video_path("") else: subExo.set_video_path(absPath) if not os.path.isfile(subExo.get_translation_path()): absPath = os.path.join(os.path.dirname(path), subExo.get_translation_path()) if not os.path.isfile(absPath): subExo.set_translation_path("") else: subExo.set_translation_path(absPath) exercise.initialize() update_sequence_list(exercise, subExos) exercise.goto_sequence(currentSequence) exercise.get_current_sequence().set_active_word_index(currentWord) if not exercise.is_template(): exercise.set_output_save_path(path) return exercise
def load(self): exercise = self.core.get_exercise() if len(exercise.subExercisesList) > 0: self.__load_path(exercise.subExercisesList[0].get_video_path(), exercise.subExercisesList[0].get_exercise_path(), exercise.subExercisesList[0].get_translation_path()) else: self._Load("", "", "") self.pathListStore = gtk.ListStore(str, str, str, str) for subExercise in exercise.subExercisesList: name = os.path.basename(subExercise.get_video_path()) self.pathListStore.append([name, subExercise.get_video_path(), subExercise.get_exercise_path(), subExercise.get_translation_path()]) cell = gtk.CellRendererText() treeviewcolumnPath = gtk.TreeViewColumn(_("Path")) treeviewcolumnPath.pack_start(cell, True) treeviewcolumnPath.add_attribute(cell, 'markup', 0) treeviewcolumnPath.set_expand(True) columns = self.treeviewPathsList.get_columns() for column in columns: self.treeviewPathsList.remove_column(column) self.treeviewPathsList.append_column(treeviewcolumnPath) self.treeviewPathsList.set_model(self.pathListStore) self.treeviewSelectionPathsList = self.treeviewPathsList.get_selection() self.iterPath = self.pathListStore.get_iter_first() self.treeviewSelectionPathsList.select_iter(self.iterPath) checkbuttonRepeatAfterComplete = self.builder.get_object("checkbuttonRepeatAfterComplete") checkbuttonRepeatAfterComplete.set_active(self.core.get_exercise().get_repeat_after_completed()) checkbuttonUseDynamicCorrection = self.builder.get_object("checkbuttonUseDynamicCorrection") checkbuttonUseDynamicCorrection.set_active(self.core.get_exercise().is_use_dynamic_correction()) checkbuttonRandomOrder = self.builder.get_object("checkbuttonRandomOrder") checkbuttonRandomOrder.set_active(self.core.get_exercise().is_random_order()) checkbutton_disable_help = self.builder.get_object("checkbutton_disable_help") checkbutton_disable_help.set_active(self.core.get_exercise().is_lock_help()) self.liststoreLanguage = gtk.ListStore(str, str) languageManager = LanguagesManager() languagesList = languageManager.get_languages_list() currentLangId = self.core.get_exercise().get_language_id() for language in languagesList: iter = self.liststoreLanguage.append([language.name, language.id]) if language.id == currentLangId: currentIter = iter comboboxLanguage = self.builder.get_object("comboboxLanguage") cell = gtk.CellRendererText() comboboxLanguage.set_model(self.liststoreLanguage) comboboxLanguage.pack_start(cell, True) comboboxLanguage.add_attribute(cell, 'text', 0) comboboxLanguage.set_active_iter(currentIter) adjustmentTimeBetweenSequence = self.builder.get_object("adjustmentTimeBetweenSequence") adjustmentTimeBetweenSequence.set_value(self.core.get_exercise().get_time_between_sequence()) adjustmentMaximumSequenceTime = self.builder.get_object("adjustmentMaximumSequenceTime") adjustmentMaximumSequenceTime.set_value(self.core.get_exercise().get_max_sequence_length()) adjustmentTimeBeforeSequence = self.builder.get_object("adjustmentTimeBeforeSequence") adjustmentTimeBeforeSequence.set_value(self.core.get_exercise().get_play_margin_before()) adjustmentTimeAfterSequence = self.builder.get_object("adjustmentTimeAfterSequence") adjustmentTimeAfterSequence.set_value(self.core.get_exercise().get_play_margin_after()) entryExerciseName = self.builder.get_object("entryExerciseName") if self.core.get_exercise().get_name(): entryExerciseName.set_text(self.core.get_exercise().get_name()) else: entryExerciseName.set_text("") entryRepeatCountLimit = self.builder.get_object("entryRepeatCountLimit") entryRepeatCountLimit.set_text(str(self.core.get_exercise().get_repeat_count_limit_by_sequence())) #Locks checkbutton_lock_properties = self.builder.get_object("checkbutton_lock_properties") checkbutton_lock_properties.set_active(self.core.get_exercise().is_lock_properties()) checkbutton_lock_correction = self.builder.get_object("checkbutton_lock_correction") checkbutton_lock_correction.set_active(self.core.get_exercise().is_lock_correction()) self._update_path_buttons()
def load(self): adjustmentTimeBetweenSequence = self.builder.get_object( "adjustmentTimeBetweenSequence") adjustmentTimeBetweenSequence.set_value( float(config.get("default_exercise_time_between_sequences")) / 1000) adjustmentMaximumSequenceTime = self.builder.get_object( "adjustmentMaximumSequenceTime") adjustmentMaximumSequenceTime.set_value( float(config.get("default_exercise_max_sequence_length")) / 1000) adjustmentTimeBeforeSequence = self.builder.get_object( "adjustmentTimeBeforeSequence") adjustmentTimeBeforeSequence.set_value( float(config.get("default_exercise_play_margin_after"))) adjustmentTimeAfterSequence = self.builder.get_object( "adjustmentTimeAfterSequence") adjustmentTimeAfterSequence.set_value( float(config.get("default_exercise_play_margin_before"))) checkbuttonRepeatAfterComplete = self.builder.get_object( "checkbuttonRepeatAfterComplete") checkbuttonRepeatAfterComplete.set_active( config.get("default_exercise_repeat_after_completed") == 1) checkbuttonRandomOrder = self.builder.get_object( "checkbuttonRandomOrder") checkbuttonRandomOrder.set_active( config.get("default_exercise_random_order") == 1) #General checkbutton_navigation_skip_valid_sequences = self.builder.get_object( "checkbutton_navigation_skip_valid_sequences") checkbutton_navigation_skip_valid_sequences.set_active( config.get("navigation_skip_valid_sequences") == 1) checkbutton_use_speed_changer = self.builder.get_object( "checkbutton_use_speed_changer") checkbutton_use_speed_changer.set_active( config.get("interface_use_speed_change") == 1) #Interface checkbuttonShowPlayPauseButtons = self.builder.get_object( "checkbuttonShowPlayPauseButtons") checkbuttonShowPlayPauseButtons.set_active( config.get("interface_show_play_pause_buttons") == 1) checkbuttonShowSettings = self.builder.get_object( "checkbuttonShowSettings") checkbuttonShowSettings.set_active( config.get("interface_lock_settings") != 1) # Language self.liststoreLanguage = gtk.ListStore(str, str) languageManager = LanguagesManager() languagesList = languageManager.get_languages_list() currentLangId = config.get("default_exercise_language") for language in languagesList: iter = self.liststoreLanguage.append([language.name, language.id]) if language.id == currentLangId: currentIter = iter comboboxLanguage = self.builder.get_object("comboboxLanguage") cell = gtk.CellRendererText() comboboxLanguage.set_model(self.liststoreLanguage) comboboxLanguage.pack_start(cell, True) comboboxLanguage.add_attribute(cell, 'text', 0) comboboxLanguage.set_active_iter(currentIter)
def load(self): exercise = self.core.get_exercise() if len(exercise.subExercisesList) > 0: self.__load_path( exercise.subExercisesList[0].get_video_path(), exercise.subExercisesList[0].get_exercise_path(), exercise.subExercisesList[0].get_translation_path()) else: self._Load("", "", "") self.pathListStore = gtk.ListStore(str, str, str, str) for subExercise in exercise.subExercisesList: name = os.path.basename(subExercise.get_video_path()) self.pathListStore.append([ name, subExercise.get_video_path(), subExercise.get_exercise_path(), subExercise.get_translation_path() ]) cell = gtk.CellRendererText() treeviewcolumnPath = gtk.TreeViewColumn(_("Path")) treeviewcolumnPath.pack_start(cell, True) treeviewcolumnPath.add_attribute(cell, 'markup', 0) treeviewcolumnPath.set_expand(True) columns = self.treeviewPathsList.get_columns() for column in columns: self.treeviewPathsList.remove_column(column) self.treeviewPathsList.append_column(treeviewcolumnPath) self.treeviewPathsList.set_model(self.pathListStore) self.treeviewSelectionPathsList = self.treeviewPathsList.get_selection( ) self.iterPath = self.pathListStore.get_iter_first() self.treeviewSelectionPathsList.select_iter(self.iterPath) checkbuttonRepeatAfterComplete = self.builder.get_object( "checkbuttonRepeatAfterComplete") checkbuttonRepeatAfterComplete.set_active( self.core.get_exercise().get_repeat_after_completed()) checkbuttonUseDynamicCorrection = self.builder.get_object( "checkbuttonUseDynamicCorrection") checkbuttonUseDynamicCorrection.set_active( self.core.get_exercise().is_use_dynamic_correction()) checkbuttonRandomOrder = self.builder.get_object( "checkbuttonRandomOrder") checkbuttonRandomOrder.set_active( self.core.get_exercise().is_random_order()) checkbutton_disable_help = self.builder.get_object( "checkbutton_disable_help") checkbutton_disable_help.set_active( self.core.get_exercise().is_lock_help()) self.liststoreLanguage = gtk.ListStore(str, str) languageManager = LanguagesManager() languagesList = languageManager.get_languages_list() currentLangId = self.core.get_exercise().get_language_id() for language in languagesList: iter = self.liststoreLanguage.append([language.name, language.id]) if language.id == currentLangId: currentIter = iter comboboxLanguage = self.builder.get_object("comboboxLanguage") cell = gtk.CellRendererText() comboboxLanguage.set_model(self.liststoreLanguage) comboboxLanguage.pack_start(cell, True) comboboxLanguage.add_attribute(cell, 'text', 0) comboboxLanguage.set_active_iter(currentIter) adjustmentTimeBetweenSequence = self.builder.get_object( "adjustmentTimeBetweenSequence") adjustmentTimeBetweenSequence.set_value( self.core.get_exercise().get_time_between_sequence()) adjustmentMaximumSequenceTime = self.builder.get_object( "adjustmentMaximumSequenceTime") adjustmentMaximumSequenceTime.set_value( self.core.get_exercise().get_max_sequence_length()) adjustmentTimeBeforeSequence = self.builder.get_object( "adjustmentTimeBeforeSequence") adjustmentTimeBeforeSequence.set_value( self.core.get_exercise().get_play_margin_before()) adjustmentTimeAfterSequence = self.builder.get_object( "adjustmentTimeAfterSequence") adjustmentTimeAfterSequence.set_value( self.core.get_exercise().get_play_margin_after()) entryExerciseName = self.builder.get_object("entryExerciseName") if self.core.get_exercise().get_name(): entryExerciseName.set_text(self.core.get_exercise().get_name()) else: entryExerciseName.set_text("") entryRepeatCountLimit = self.builder.get_object( "entryRepeatCountLimit") entryRepeatCountLimit.set_text( str(self.core.get_exercise().get_repeat_count_limit_by_sequence())) #Locks checkbutton_lock_properties = self.builder.get_object( "checkbutton_lock_properties") checkbutton_lock_properties.set_active( self.core.get_exercise().is_lock_properties()) checkbutton_lock_correction = self.builder.get_object( "checkbutton_lock_correction") checkbutton_lock_correction.set_active( self.core.get_exercise().is_lock_correction()) self._update_path_buttons()
def load(self, exercise, dom, path): #Name exercise.set_name(None) #Language languageManager = LanguagesManager() exercise.set_language_id(languageManager.get_default_language().id) #Template exercise.set_template(False) #Random order exercise.set_random_order(False) xml_progress = dom.getElementsByTagName("progress")[0] currentSequence = int(get_text(xml_progress.getElementsByTagName("current_sequence")[0].childNodes)) currentWord = int(get_text(xml_progress.getElementsByTagName("current_word")[0].childNodes)) xml_sequences = xml_progress.getElementsByTagName("sequences")[0] progress = [] for xml_sequence in xml_sequences.getElementsByTagName("sequence"): id = int(get_text(xml_sequence.getElementsByTagName("id")[0].childNodes)) state = get_text(xml_sequence.getElementsByTagName("state")[0].childNodes) words = [] repeat_count = 0 if state == "in_progress": xml_words = xml_sequence.getElementsByTagName("words")[0] for xml_world in xml_words.getElementsByTagName("word"): words.append(get_text(xml_world.childNodes)) progress.append((id, state, words, repeat_count)) # Stats xml_stats = dom.getElementsByTagName("stats")[0] exercise.set_repeat_count(int(get_text(xml_stats.getElementsByTagName("repeat_count")[0].childNodes))) #Subexercises subExos = [] subExercise = SubExercise(exercise) #Sequences progress = [] xml_progress = dom.getElementsByTagName("progress")[0] xml_sequences = xml_progress.getElementsByTagName("sequences")[0] for xml_sequence in xml_sequences.getElementsByTagName("sequence"): id = int(get_text(xml_sequence.getElementsByTagName("id")[0].childNodes)) state = get_text(xml_sequence.getElementsByTagName("state")[0].childNodes) words = [] if state == "in_progress": xml_words = xml_sequence.getElementsByTagName("words")[0] for xml_world in xml_words.getElementsByTagName("word"): words.append(get_text(xml_world.childNodes)) progress.append((id, state, words)) #Paths xml_paths = dom.getElementsByTagName("paths")[0] subExercise.set_video_path(get_text(xml_paths.getElementsByTagName("video")[0].childNodes)) subExercise.set_exercise_path(get_text(xml_paths.getElementsByTagName("exercice")[0].childNodes)) subExercise.set_translation_path(get_text(xml_paths.getElementsByTagName("translation")[0].childNodes)) exercise.subExercisesList.append(subExercise) subExos.append(progress) #Convert relative path for subExo in exercise.subExercisesList: if not os.path.isfile(subExo.get_exercise_path()): absPath = os.path.join(os.path.dirname(path), subExo.get_exercise_path()) if not os.path.isfile(absPath): subExo.set_exercise_path("") else: subExo.set_exercise_path(absPath) if not os.path.isfile(subExo.get_video_path()): absPath = os.path.join(os.path.dirname(path), subExo.get_video_path()) if not os.path.isfile(absPath): subExo.set_video_path("") else: subExo.set_video_path(absPath) if not os.path.isfile(subExo.get_translation_path()): absPath = os.path.join(os.path.dirname(path), subExo.get_translation_path()) if not os.path.isfile(absPath): subExo.set_translation_path("") else: subExo.set_translation_path(absPath) exercise.initialize() self.update_sequence_list() exercise.goto_sequence(currentSequence) exercise.get_current_sequence().set_active_word_index(currentWord) if not exercise.is_template(): exercise.set_output_save_path(path) return exercise
def load(exercise, dom, path): #Name if len(dom.getElementsByTagName("name")) > 0: exercise.set_name(get_text(dom.getElementsByTagName("name")[0].childNodes)) #Language if len(dom.getElementsByTagName("language")) > 0: exercise.set_language_id(get_text(dom.getElementsByTagName("language")[0].childNodes)) else: languageManager = LanguagesManager() exercise.set_language_id(languageManager.get_default_language().id) #Template if len(dom.getElementsByTagName("template")) > 0: exercise.set_template(get_text(dom.getElementsByTagName("template")[0].childNodes) == "True") #Random order if len(dom.getElementsByTagName("random_order")) > 0: exercise.set_random_order(get_text(dom.getElementsByTagName("random_order")[0].childNodes) == "True") #Locks if len(dom.getElementsByTagName("locks")) > 0: xml_locks = dom.getElementsByTagName("locks")[0] #Correction lock if len(xml_locks.getElementsByTagName("correction_lock")) > 0: exercise.lock_correction = True xml_lock = xml_locks.getElementsByTagName("correction_lock")[0] if len(xml_lock.getElementsByTagName("hash")) > 0: exercise.lock_correction_password = get_text(xml_lock.getElementsByTagName("hash")[0].childNodes) if len(xml_lock.getElementsByTagName("salt")) > 0: exercise.lock_correction_salt = get_text(xml_lock.getElementsByTagName("salt")[0].childNodes) #Properties lock if len(xml_locks.getElementsByTagName("properties_lock")) > 0: exercise.lock_properties = True xml_lock = xml_locks.getElementsByTagName("properties_lock")[0] if len(xml_lock.getElementsByTagName("hash")) > 0: exercise.lock_properties_password = get_text(xml_lock.getElementsByTagName("hash")[0].childNodes) if len(xml_lock.getElementsByTagName("salt")) > 0: exercise.lock_properties_salt = get_text(xml_lock.getElementsByTagName("salt")[0].childNodes) #Help lock if len(xml_locks.getElementsByTagName("help_lock")) > 0: exercise.lock_help = True #Exercise xml_exercise = dom.getElementsByTagName("exercise")[0] #Exercise - CurrentWord currentWord = int(get_text(xml_exercise.getElementsByTagName("current_word")[0].childNodes)) #Exercise - CurrentSequence currentSequence = int(get_text(xml_exercise.getElementsByTagName("current_sequence")[0].childNodes)) # Stats xml_stats = dom.getElementsByTagName("stats")[0] exercise.set_repeat_count(int(get_text(xml_stats.getElementsByTagName("repeat_count")[0].childNodes))) # Properties if len(dom.getElementsByTagName("properties")) > 0: xml_properties = dom.getElementsByTagName("properties")[0] if len(xml_properties.getElementsByTagName("repeat_after_complete")) > 0: exercise.set_repeat_after_completed(get_text(xml_properties.getElementsByTagName("repeat_after_complete")[0].childNodes) == "True") if len(xml_properties.getElementsByTagName("time_between_sequence")) > 0: exercise.set_time_between_sequence(float(get_text(xml_properties.getElementsByTagName("time_between_sequence")[0].childNodes))) if len(xml_properties.getElementsByTagName("max_sequence_length")) > 0: exercise.set_max_sequence_length(float(get_text(xml_properties.getElementsByTagName("max_sequence_length")[0].childNodes))) if len(xml_properties.getElementsByTagName("play_margin_before")) > 0: exercise.set_play_margin_before(int(get_text(xml_properties.getElementsByTagName("play_margin_before")[0].childNodes))) if len(xml_properties.getElementsByTagName("play_margin_after")) > 0: exercise.set_play_margin_after(int(get_text(xml_properties.getElementsByTagName("play_margin_after")[0].childNodes))) if len(xml_properties.getElementsByTagName("use_dynamic_correction")) > 0: exercise.set_use_dynamic_correction(get_text(xml_properties.getElementsByTagName("use_dynamic_correction")[0].childNodes) == "True") if len(xml_properties.getElementsByTagName("repeat_count_by_sequence_limit")) > 0: exercise.set_repeat_count_limit_by_sequence(int(get_text(xml_properties.getElementsByTagName("repeat_count_by_sequence_limit")[0].childNodes))) #Subexercises subExos = [] for xml_subExercise in xml_exercise.getElementsByTagName("sub_exercise"): subExercise = SubExercise(exercise) #Sequences xml_sequences = xml_subExercise.getElementsByTagName("sequences")[0] progress = [] for xml_sequence in xml_sequences.getElementsByTagName("sequence"): id = int(get_text(xml_sequence.getElementsByTagName("id")[0].childNodes)) state = get_text(xml_sequence.getElementsByTagName("state")[0].childNodes) #Sequence repeat count if len(xml_sequence.getElementsByTagName("repeat_count")) > 0: repeat_count = int(get_text(xml_sequence.getElementsByTagName("repeat_count")[0].childNodes)) else: repeat_count = 0 words = [] if state == "in_progress": xml_words = xml_sequence.getElementsByTagName("words")[0] for xml_world in xml_words.getElementsByTagName("word"): words.append(get_text(xml_world.childNodes)) progress.append((id, state, words, repeat_count)) #Paths xml_paths = xml_subExercise.getElementsByTagName("paths")[0] subExercise.set_video_path(get_text(xml_paths.getElementsByTagName("video")[0].childNodes)) subExercise.set_exercise_path(get_text(xml_paths.getElementsByTagName("exercise")[0].childNodes)) subExercise.set_translation_path(get_text(xml_paths.getElementsByTagName("translation")[0].childNodes)) exercise.subExercisesList.append(subExercise) subExos.append(progress) #Convert relative path for subExo in exercise.subExercisesList: if not os.path.isfile(subExo.get_exercise_path()): absPath = os.path.join(os.path.dirname(path), subExo.get_exercise_path()) if not os.path.isfile(absPath): subExo.set_exercise_path("") else: subExo.set_exercise_path(absPath) if not os.path.isfile(subExo.get_video_path()): absPath = os.path.join(os.path.dirname(path), subExo.get_video_path()) if not os.path.isfile(absPath): subExo.set_video_path("") else: subExo.set_video_path(absPath) if not os.path.isfile(subExo.get_translation_path()): absPath = os.path.join(os.path.dirname(path), subExo.get_translation_path()) if not os.path.isfile(absPath): subExo.set_translation_path("") else: subExo.set_translation_path(absPath) exercise.initialize() update_sequence_list(exercise, subExos) exercise.goto_sequence(currentSequence) exercise.get_current_sequence().set_active_word_index(currentWord) if not exercise.is_template(): exercise.set_output_save_path(path) return exercise
# (at your option) any later version. # # Perroquet 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 Perroquet. If not, see <http://www.gnu.org/licenses/>. import unittest from perroquetlib.model.sequence import * from perroquetlib.model.languages_manager import LanguagesManager language = LanguagesManager().get_default_language() def word(text): w = Word(text, language) return w class TestLevenshtein(unittest.TestCase): knowValues = ( (("", ""), 0), (("", "cheval"), 6), (("ch", "cheval"), 4), (("aa", "brebis"), 6), (("e", "brebis"), 5), )