コード例 #1
0
ファイル: gui.py プロジェクト: niavok/perroquet
    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)
コード例 #2
0
ファイル: gui_settings.py プロジェクト: niavok/perroquet
    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)
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
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
コード例 #6
0
    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()
コード例 #7
0
    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)
コード例 #8
0
    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()
コード例 #9
0
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
コード例 #10
0
ファイル: parser_v1_1_0.py プロジェクト: niavok/perroquet
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
コード例 #11
0
# (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),
    )