Пример #1
0
 def initialise(self, basedir, filename=None):
     self.component_manager = new_component_manager()
     self.register_components()
     self.config().basedir = basedir
     self.config().resource_limited = self.resource_limited 
     self.activate_components()
     self.initialise_error_handling()
     register_component_manager(self.component_manager,
                                self.config()["user_id"])
     self.execute_user_plugin_dir()
     self.activate_saved_plugins()
     # Loading the database should come after all user plugins have been
     # loaded, since these could be needed e.g. for a card type in the
     # database.
     self.load_database(filename)
     self.log().started_program()
     self.log().started_scheduler()
     self.log().loaded_database()
     # Finally, we can activate the main widget and upgrade if needed.
     self.main_widget().activate()
     if self.upgrade_needed:
         from mnemosyne.libmnemosyne.upgrades.upgrade_database \
              import UpgradeDatabase
         UpgradeDatabase(self.component_manager).run(self.file_to_upgrade)
Пример #2
0
    def __init__(self,
                 upload_science_logs,
                 interested_in_old_reps,
                 asynchronous_database=False):
        """When 'upload_science_logs' is set to 'None', it means that its
        value is user-specified through the GUI. Explicitly setting this to
        True or False overrides the user choice.

        For mobile clients, it is recommended that you set
        'upload_science_logs' to 'False'. We need to specify this as an
        argument here, so that we can inject it on time to prevent the
        uploader thread from starting.

        'interested_in_old_reps' can be set to 'False' on a mobile client
        which does not show historical statistical data, in order to speed
        up the initial sync and save disk space. We've specified this as a
        non-default argument here, in order to force front-end writers to
        consider it.

        Setting 'asynchronous_database' to True increases the risk of data
        loss and should only be done to speed up the test suite.

        """

        sys.excepthook = self.handle_exception
        self.upload_science_logs = upload_science_logs
        self.interested_in_old_reps = interested_in_old_reps
        self.asynchronous_database = asynchronous_database
        self.component_manager = new_component_manager()
        self.components = [
            ("mnemosyne.libmnemosyne.databases.SQLite", "SQLite"),
            ("mnemosyne.libmnemosyne.configuration", "Configuration"),
            ("mnemosyne.libmnemosyne.loggers.database_logger",
             "DatabaseLogger"),
            ("mnemosyne.libmnemosyne.schedulers.SM2_mnemosyne",
             "SM2Mnemosyne"),
            ("mnemosyne.libmnemosyne.stopwatch", "Stopwatch"),
            ("mnemosyne.libmnemosyne.card_types.front_to_back", "FrontToBack"),
            ("mnemosyne.libmnemosyne.card_types.both_ways", "BothWays"),
            ("mnemosyne.libmnemosyne.card_types.vocabulary", "Vocabulary"),
            ("mnemosyne.libmnemosyne.card_types.both_ways",
             "FrontToBackToBothWays"),
            ("mnemosyne.libmnemosyne.card_types.both_ways",
             "BothWaysToFrontToBack"),
            ("mnemosyne.libmnemosyne.card_types.vocabulary",
             "FrontToBackToVocabulary"),
            ("mnemosyne.libmnemosyne.card_types.vocabulary",
             "BothWaysToVocabulary"),
            ("mnemosyne.libmnemosyne.card_types.vocabulary",
             "VocabularyToFrontToBack"),
            ("mnemosyne.libmnemosyne.card_types.vocabulary",
             "VocabularyToBothWays"),
            ("mnemosyne.libmnemosyne.render_chains.default_render_chain",
             "DefaultRenderChain"),
            ("mnemosyne.libmnemosyne.render_chains.plain_text_chain",
             "PlainTextChain"),
            ("mnemosyne.libmnemosyne.render_chains.sync_to_card_only_client",
             "SyncToCardOnlyClient"),
            ("mnemosyne.libmnemosyne.render_chains.card_browser_render_chain",
             "CardBrowserRenderChain"),
            ("mnemosyne.libmnemosyne.filters.latex",
             "CheckForUpdatedLatexFiles"),
            ("mnemosyne.libmnemosyne.filters.latex", "LatexFilenamesFromData"),
            ("mnemosyne.libmnemosyne.filters.latex", "DeleteUnusedLatexFiles"),
            ("mnemosyne.libmnemosyne.filters.latex", "PreprocessClozeLatex"),
            ("mnemosyne.libmnemosyne.filters.latex",
             "PostprocessQAClozeLatex"),
            ("mnemosyne.libmnemosyne.controllers.default_controller",
             "DefaultController"),
            ("mnemosyne.libmnemosyne.review_controllers.SM2_controller",
             "SM2Controller"),
            ("mnemosyne.libmnemosyne.card_types.map", "MapPlugin"),
            ("mnemosyne.libmnemosyne.card_types.cloze", "ClozePlugin"),
            ("mnemosyne.libmnemosyne.card_types.sentence", "SentencePlugin"),
            ("mnemosyne.libmnemosyne.criteria.default_criterion",
             "DefaultCriterion"),
            ("mnemosyne.libmnemosyne.databases.SQLite_criterion_applier",
             "DefaultCriterionApplier"),
            ("mnemosyne.libmnemosyne.plugins.cramming_plugin",
             "CrammingPlugin"),
            ("mnemosyne.libmnemosyne.statistics_pages.schedule", "Schedule"),
            ("mnemosyne.libmnemosyne.statistics_pages.retention_score",
             "RetentionScore"),
            ("mnemosyne.libmnemosyne.statistics_pages.cards_added",
             "CardsAdded"),
            ("mnemosyne.libmnemosyne.statistics_pages.cards_learned",
             "CardsLearned"),
            ("mnemosyne.libmnemosyne.statistics_pages.grades", "Grades"),
            ("mnemosyne.libmnemosyne.statistics_pages.easiness", "Easiness"),
            ("mnemosyne.libmnemosyne.statistics_pages.current_card",
             "CurrentCard"),
            ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_mem",
             "Mnemosyne1Mem"),
            ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_xml",
             "Mnemosyne1XML"),
            ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_cards",
             "Mnemosyne2Cards"),
            ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_db",
             "Mnemosyne2Db"),
            ("mnemosyne.libmnemosyne.file_formats.tsv", "Tsv"),
            ("mnemosyne.libmnemosyne.file_formats.supermemo_7_txt",
             "SuperMemo7Txt"),
            ("mnemosyne.libmnemosyne.file_formats.smconv_XML", "Smconv_XML"),
            ("mnemosyne.libmnemosyne.file_formats.cuecard_wcu", "CuecardWcu")
        ]
        self.extra_components_for_plugin = {}
Пример #3
0
    def __init__(self, upload_science_logs, interested_in_old_reps,
        asynchronous_database=False):

        """When 'upload_science_logs' is set to 'None', it means that its
        value is user-specified through the GUI. Explicitly setting this to
        True or False overrides the user choice.

        For mobile clients, it is recommended that you set
        'upload_science_logs' to 'False'. We need to specify this as an
        argument here, so that we can inject it on time to prevent the
        uploader thread from starting.

        'interested_in_old_reps' can be set to 'False' on a mobile client
        which does not show historical statistical data, in order to speed
        up the initial sync and save disk space. We've specified this as a
        non-default argument here, in order to force front-end writers to
        consider it.

        Setting 'asynchronous_database' to True increases the risk of data
        loss and should only be done to speed up the test suite.

        """

        sys.excepthook = self.handle_exception
        self.upload_science_logs = upload_science_logs
        self.interested_in_old_reps = interested_in_old_reps
        self.asynchronous_database = asynchronous_database
        self.component_manager = new_component_manager()
        self.components = [
         ("mnemosyne.libmnemosyne.databases.SQLite",
          "SQLite"),
         ("mnemosyne.libmnemosyne.database",
          "DatabaseMaintenance"),         
         ("mnemosyne.libmnemosyne.configuration",
          "Configuration"),
         ("mnemosyne.libmnemosyne.loggers.database_logger",
          "DatabaseLogger"),
         ("mnemosyne.libmnemosyne.schedulers.SM2_mnemosyne",
          "SM2Mnemosyne"),
         ("mnemosyne.libmnemosyne.stopwatch",
          "Stopwatch"),
         ("mnemosyne.libmnemosyne.card_types.front_to_back",
          "FrontToBack"),
         ("mnemosyne.libmnemosyne.card_types.both_ways",
          "BothWays"),
         ("mnemosyne.libmnemosyne.card_types.vocabulary",
          "Vocabulary"),
         ("mnemosyne.libmnemosyne.card_types.both_ways",
          "FrontToBackToBothWays"),
         ("mnemosyne.libmnemosyne.card_types.both_ways",
          "BothWaysToFrontToBack"),
         ("mnemosyne.libmnemosyne.card_types.vocabulary",
          "FrontToBackToVocabulary"),
         ("mnemosyne.libmnemosyne.card_types.vocabulary",
          "BothWaysToVocabulary"),
         ("mnemosyne.libmnemosyne.card_types.vocabulary",
          "VocabularyToFrontToBack"),
         ("mnemosyne.libmnemosyne.card_types.vocabulary",
          "VocabularyToBothWays"),
         ("mnemosyne.libmnemosyne.render_chains.default_render_chain",
          "DefaultRenderChain"),
         ("mnemosyne.libmnemosyne.render_chains.plain_text_chain",
          "PlainTextChain"),
         ("mnemosyne.libmnemosyne.render_chains.sync_to_card_only_client",
          "SyncToCardOnlyClient"),
         ("mnemosyne.libmnemosyne.render_chains.card_browser_render_chain",
          "CardBrowserRenderChain"),
         ("mnemosyne.libmnemosyne.filters.latex",
          "CheckForUpdatedLatexFiles"),
         ("mnemosyne.libmnemosyne.filters.latex",
          "LatexFilenamesFromData"),
         ("mnemosyne.libmnemosyne.filters.latex",
          "DeleteUnusedLatexFiles"),
         ("mnemosyne.libmnemosyne.filters.latex",
          "PreprocessClozeLatex"),
         ("mnemosyne.libmnemosyne.filters.latex",
          "PostprocessQAClozeLatex"),
         ("mnemosyne.libmnemosyne.controllers.default_controller",
          "DefaultController"),
         ("mnemosyne.libmnemosyne.review_controllers.SM2_controller",
          "SM2Controller"),
         ("mnemosyne.libmnemosyne.card_types.map",
          "MapPlugin"),
         ("mnemosyne.libmnemosyne.card_types.cloze",
          "ClozePlugin"),
         ("mnemosyne.libmnemosyne.card_types.sentence",
          "SentencePlugin"),
         ("mnemosyne.libmnemosyne.criteria.default_criterion",
          "DefaultCriterion"),
         ("mnemosyne.libmnemosyne.databases.SQLite_criterion_applier",
          "DefaultCriterionApplier"),
         ("mnemosyne.libmnemosyne.plugins.cramming_plugin",
          "CrammingPlugin"),
         ("mnemosyne.libmnemosyne.statistics_pages.schedule",
          "Schedule"),
         ("mnemosyne.libmnemosyne.statistics_pages.retention_score",
          "RetentionScore"),
         ("mnemosyne.libmnemosyne.statistics_pages.cards_added",
          "CardsAdded"),
         ("mnemosyne.libmnemosyne.statistics_pages.cards_learned",
          "CardsLearned"),
         ("mnemosyne.libmnemosyne.statistics_pages.grades",
          "Grades"),
         ("mnemosyne.libmnemosyne.statistics_pages.easiness",
          "Easiness"),
         ("mnemosyne.libmnemosyne.statistics_pages.current_card",
          "CurrentCard"),
         ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_mem",
          "Mnemosyne1Mem"),
         ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_xml",
          "Mnemosyne1XML"),
         ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_cards",
          "Mnemosyne2Cards"),
         ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_db",
          "Mnemosyne2Db"),         
         ("mnemosyne.libmnemosyne.file_formats.tsv",
          "Tsv"),
         ("mnemosyne.libmnemosyne.file_formats.supermemo_7_txt",
          "SuperMemo7Txt"),
         ("mnemosyne.libmnemosyne.file_formats.smconv_XML",
          "Smconv_XML"),
         ("mnemosyne.libmnemosyne.file_formats.cuecard_wcu",
          "CuecardWcu")]
        self.extra_components_for_plugin = {}
Пример #4
0
    def __init__(self,
                 upload_science_logs,
                 interested_in_old_reps,
                 asynchronous_database=False):
        """When 'upload_science_logs' is set to 'None', it means that its
        value is user-specified through the GUI. Explicitly setting this to
        True or False overrides the user choice.

        For mobile clients, it is recommended that you set
        'upload_science_logs' to 'False'. We need to specify this as an
        argument here, so that we can inject it on time to prevent the
        uploader thread from starting.

        'interested_in_old_reps' can be set to 'False' on a mobile client
        which does not show historical statistical data, in order to speed
        up the initial sync and save disk space. We've specified this as a
        non-default argument here, in order to force front-end writers to
        consider it.

        Setting 'asynchronous_database' to True increases the risk of data
        loss and should only be done to speed up the test suite.

        """

        sys.excepthook = self.handle_exception
        self.upload_science_logs = upload_science_logs
        self.interested_in_old_reps = interested_in_old_reps
        self.asynchronous_database = asynchronous_database
        self.component_manager = new_component_manager()
        self.components = [
            ("mnemosyne.libmnemosyne.databases.SQLite", "SQLite"),
            ("mnemosyne.libmnemosyne.database", "DatabaseMaintenance"),
            ("mnemosyne.libmnemosyne.configuration", "Configuration"),
            ("mnemosyne.libmnemosyne.loggers.database_logger",
             "DatabaseLogger"),
            ("mnemosyne.libmnemosyne.stopwatch", "Stopwatch"),
            ("mnemosyne.libmnemosyne.card_types.front_to_back", "FrontToBack"),
            ("mnemosyne.libmnemosyne.card_types.both_ways", "BothWays"),
            ("mnemosyne.libmnemosyne.card_types.vocabulary", "Vocabulary"),
            ("mnemosyne.libmnemosyne.card_types.both_ways",
             "FrontToBackToBothWays"),
            ("mnemosyne.libmnemosyne.card_types.both_ways",
             "BothWaysToFrontToBack"),
            ("mnemosyne.libmnemosyne.card_types.vocabulary",
             "FrontToBackToVocabulary"),
            ("mnemosyne.libmnemosyne.card_types.vocabulary",
             "BothWaysToVocabulary"),
            ("mnemosyne.libmnemosyne.card_types.vocabulary",
             "VocabularyToFrontToBack"),
            ("mnemosyne.libmnemosyne.card_types.vocabulary",
             "VocabularyToBothWays"),
            ("mnemosyne.libmnemosyne.render_chains.default_render_chain",
             "DefaultRenderChain"),
            ("mnemosyne.libmnemosyne.render_chains.plain_text_chain",
             "PlainTextChain"),
            ("mnemosyne.libmnemosyne.render_chains.sync_to_card_only_client",
             "SyncToCardOnlyClient"),
            ("mnemosyne.libmnemosyne.render_chains.card_browser_render_chain",
             "CardBrowserRenderChain"),
            ("mnemosyne.libmnemosyne.filters.latex",
             "CheckForUpdatedLatexFiles"),
            ("mnemosyne.libmnemosyne.filters.latex", "LatexFilenamesFromData"),
            ("mnemosyne.libmnemosyne.filters.latex", "DeleteUnusedLatexFiles"),
            ("mnemosyne.libmnemosyne.filters.latex", "PreprocessClozeLatex"),
            ("mnemosyne.libmnemosyne.filters.latex",
             "PostprocessQAClozeLatex"),
            ("mnemosyne.libmnemosyne.controllers.default_controller",
             "DefaultController"),
            ("mnemosyne.libmnemosyne.study_modes.scheduled_forgotten_new",
             "ScheduledForgottenNew"),
            ("mnemosyne.libmnemosyne.study_modes.new_only", "NewOnly"),
            ("mnemosyne.libmnemosyne.study_modes.cram_all", "CramAll"),
            ("mnemosyne.libmnemosyne.study_modes.cram_recent", "CramRecent"),
            ("mnemosyne.libmnemosyne.card_types.map", "MapPlugin"),
            ("mnemosyne.libmnemosyne.card_types.cloze", "ClozePlugin"),
            ("mnemosyne.libmnemosyne.card_types.sentence", "SentencePlugin"),
            ("mnemosyne.libmnemosyne.card_types.M_sided", "MSided"),
            ("mnemosyne.libmnemosyne.criteria.default_criterion",
             "DefaultCriterion"),
            ("mnemosyne.libmnemosyne.databases.SQLite_criterion_applier",
             "DefaultCriterionApplier"),
            ("mnemosyne.libmnemosyne.statistics_pages.schedule", "Schedule"),
            ("mnemosyne.libmnemosyne.statistics_pages.retention_score",
             "RetentionScore"),
            ("mnemosyne.libmnemosyne.statistics_pages.cards_added",
             "CardsAdded"),
            ("mnemosyne.libmnemosyne.statistics_pages.cards_learned",
             "CardsLearned"),
            ("mnemosyne.libmnemosyne.statistics_pages.grades", "Grades"),
            ("mnemosyne.libmnemosyne.statistics_pages.easiness", "Easiness"),
            ("mnemosyne.libmnemosyne.statistics_pages.current_card",
             "CurrentCard"),
            ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_mem",
             "Mnemosyne1Mem"),
            ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_xml",
             "Mnemosyne1XML"),
            ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_cards",
             "Mnemosyne2Cards"),
            ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_db",
             "Mnemosyne2Db"),
            ("mnemosyne.libmnemosyne.file_formats.tsv", "Tsv"),
            ("mnemosyne.libmnemosyne.file_formats.anki2", "Anki2"),
            ("mnemosyne.libmnemosyne.file_formats.supermemo_7_txt",
             "SuperMemo7Txt"),
            ("mnemosyne.libmnemosyne.file_formats.smconv_XML", "Smconv_XML"),
            ("mnemosyne.libmnemosyne.file_formats.cuecard_wcu", "CuecardWcu"),
            ("mnemosyne.libmnemosyne.translator", "Translator"),
            ("mnemosyne.libmnemosyne.pronouncer", "Pronouncer"),
            ("mnemosyne.libmnemosyne.translators.google_translator",
             "GoogleTranslator"),
            ("mnemosyne.libmnemosyne.pronouncers.google_pronouncer",
             "GooglePronouncer"),
            ("mnemosyne.libmnemosyne.languages.afrikaans", "Afrikaans"),
            ("mnemosyne.libmnemosyne.languages.albanian", "Albanian"),
            ("mnemosyne.libmnemosyne.languages.amharic", "Amharic"),
            ("mnemosyne.libmnemosyne.languages.arabic", "Arabic"),
            ("mnemosyne.libmnemosyne.languages.armenian", "Armenian"),
            ("mnemosyne.libmnemosyne.languages.azerbaijani", "Azerbaijani"),
            ("mnemosyne.libmnemosyne.languages.basque", "Basque"),
            ("mnemosyne.libmnemosyne.languages.belarusian", "Belarusian"),
            ("mnemosyne.libmnemosyne.languages.bengali", "Bengali"),
            ("mnemosyne.libmnemosyne.languages.bosnian", "Bosnian"),
            ("mnemosyne.libmnemosyne.languages.bulgarian", "Bulgarian"),
            ("mnemosyne.libmnemosyne.languages.catalan", "Catalan"),
            ("mnemosyne.libmnemosyne.languages.cebuano", "Cebuano"),
            ("mnemosyne.libmnemosyne.languages.chinese", "Chinese"),
            ("mnemosyne.libmnemosyne.languages.corsican", "Corsican"),
            ("mnemosyne.libmnemosyne.languages.croatian", "Croatian"),
            ("mnemosyne.libmnemosyne.languages.czech", "Czech"),
            ("mnemosyne.libmnemosyne.languages.danish", "Danish"),
            ("mnemosyne.libmnemosyne.languages.dutch", "Dutch"),
            ("mnemosyne.libmnemosyne.languages.english", "English"),
            ("mnemosyne.libmnemosyne.languages.esperanto", "Esperanto"),
            ("mnemosyne.libmnemosyne.languages.estonian", "Estonian"),
            ("mnemosyne.libmnemosyne.languages.finnish", "Finnish"),
            ("mnemosyne.libmnemosyne.languages.french", "French"),
            ("mnemosyne.libmnemosyne.languages.frisian", "Frisian"),
            ("mnemosyne.libmnemosyne.languages.gaelic", "Gaelic"),
            ("mnemosyne.libmnemosyne.languages.galician", "Galician"),
            ("mnemosyne.libmnemosyne.languages.georgian", "Georgian"),
            ("mnemosyne.libmnemosyne.languages.german", "German"),
            ("mnemosyne.libmnemosyne.languages.greek", "Greek"),
            ("mnemosyne.libmnemosyne.languages.gujarati", "Gujarati"),
            ("mnemosyne.libmnemosyne.languages.haitian", "Haitian"),
            ("mnemosyne.libmnemosyne.languages.hausa", "Hausa"),
            ("mnemosyne.libmnemosyne.languages.hawaiian", "Hawaiian"),
            ("mnemosyne.libmnemosyne.languages.hebrew", "Hebrew"),
            ("mnemosyne.libmnemosyne.languages.hindi", "Hindi"),
            ("mnemosyne.libmnemosyne.languages.hmong", "Hmong"),
            ("mnemosyne.libmnemosyne.languages.hungarian", "Hungarian"),
            ("mnemosyne.libmnemosyne.languages.icelandic", "Icelandic"),
            ("mnemosyne.libmnemosyne.languages.igbo", "Igbo"),
            ("mnemosyne.libmnemosyne.languages.indonesian", "Indonesian"),
            ("mnemosyne.libmnemosyne.languages.irish", "Irish"),
            ("mnemosyne.libmnemosyne.languages.italian", "Italian"),
            ("mnemosyne.libmnemosyne.languages.japanese", "Japanese"),
            ("mnemosyne.libmnemosyne.languages.javanese", "Javanese"),
            ("mnemosyne.libmnemosyne.languages.kannada", "Kannada"),
            ("mnemosyne.libmnemosyne.languages.kazakh", "Kazakh"),
            ("mnemosyne.libmnemosyne.languages.khmer", "Khmer"),
            ("mnemosyne.libmnemosyne.languages.korean", "Korean"),
            ("mnemosyne.libmnemosyne.languages.kurdish", "Kurdish"),
            ("mnemosyne.libmnemosyne.languages.kyrgyz", "Kyrgyz"),
            ("mnemosyne.libmnemosyne.languages.lao", "Lao"),
            ("mnemosyne.libmnemosyne.languages.latin", "Latin"),
            ("mnemosyne.libmnemosyne.languages.latvian", "Latvian"),
            ("mnemosyne.libmnemosyne.languages.lithuanian", "Lithuanian"),
            ("mnemosyne.libmnemosyne.languages.luxembourgish",
             "Luxembourgish"),
            ("mnemosyne.libmnemosyne.languages.macedonian", "Macedonian"),
            ("mnemosyne.libmnemosyne.languages.malagasy", "Malagasy"),
            ("mnemosyne.libmnemosyne.languages.malay", "Malay"),
            ("mnemosyne.libmnemosyne.languages.malayalam", "Malayalam"),
            ("mnemosyne.libmnemosyne.languages.maltese", "Maltese"),
            ("mnemosyne.libmnemosyne.languages.maori", "Maori"),
            ("mnemosyne.libmnemosyne.languages.marathi", "Marathi"),
            ("mnemosyne.libmnemosyne.languages.mongolian", "Mongolian"),
            ("mnemosyne.libmnemosyne.languages.myanmar", "Myanmar"),
            ("mnemosyne.libmnemosyne.languages.nepali", "Nepali"),
            ("mnemosyne.libmnemosyne.languages.norwegian", "Norwegian"),
            ("mnemosyne.libmnemosyne.languages.nyanja", "Nyanja"),
            ("mnemosyne.libmnemosyne.languages.pashto", "Pashto"),
            ("mnemosyne.libmnemosyne.languages.persian", "Persian"),
            ("mnemosyne.libmnemosyne.languages.polish", "Polish"),
            ("mnemosyne.libmnemosyne.languages.portuguese", "Portuguese"),
            ("mnemosyne.libmnemosyne.languages.punjabi", "Punjabi"),
            ("mnemosyne.libmnemosyne.languages.romanian", "Romanian"),
            ("mnemosyne.libmnemosyne.languages.russian", "Russian"),
            ("mnemosyne.libmnemosyne.languages.samoan", "Samoan"),
            ("mnemosyne.libmnemosyne.languages.serbian", "Serbian"),
            ("mnemosyne.libmnemosyne.languages.sesotho", "Sesotho"),
            ("mnemosyne.libmnemosyne.languages.shona", "Shona"),
            ("mnemosyne.libmnemosyne.languages.sindhi", "Sindhi"),
            ("mnemosyne.libmnemosyne.languages.sinhala", "Sinhala"),
            ("mnemosyne.libmnemosyne.languages.slovak", "Slovak"),
            ("mnemosyne.libmnemosyne.languages.slovenian", "Slovenian"),
            ("mnemosyne.libmnemosyne.languages.somali", "Somali"),
            ("mnemosyne.libmnemosyne.languages.spanish", "Spanish"),
            ("mnemosyne.libmnemosyne.languages.sundanese", "Sundanese"),
            ("mnemosyne.libmnemosyne.languages.swahili", "Swahili"),
            ("mnemosyne.libmnemosyne.languages.swedish", "Swedish"),
            ("mnemosyne.libmnemosyne.languages.tagalog", "Tagalog"),
            ("mnemosyne.libmnemosyne.languages.tajik", "Tajik"),
            ("mnemosyne.libmnemosyne.languages.tamil", "Tamil"),
            ("mnemosyne.libmnemosyne.languages.telugu", "Telugu"),
            ("mnemosyne.libmnemosyne.languages.thai", "Thai"),
            ("mnemosyne.libmnemosyne.languages.turkish", "Turkish"),
            ("mnemosyne.libmnemosyne.languages.ukrainian", "Ukrainian"),
            ("mnemosyne.libmnemosyne.languages.urdu", "Urdu"),
            ("mnemosyne.libmnemosyne.languages.uzbek", "Uzbek"),
            ("mnemosyne.libmnemosyne.languages.vietnamese", "Vietnamese"),
            ("mnemosyne.libmnemosyne.languages.welsh", "Welsh"),
            ("mnemosyne.libmnemosyne.languages.xhosa", "Xhosa"),
            ("mnemosyne.libmnemosyne.languages.yiddish", "Yiddish"),
            ("mnemosyne.libmnemosyne.languages.yoruba", "Yoruba"),
            ("mnemosyne.libmnemosyne.languages.zulu", "Zulu")
        ]
        self.gui_for_component = {}