def embedGroup(self): layout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(self.embedEnableButton) layout.addLayout(row) ret = QtWidgets.QGroupBox(mytr_("Embed translation")) ret.setLayout(layout) ss = settings.global_() ret.setEnabled(ss.isGameAgentEnabled()) ss.gameAgentEnabledChanged.connect(ret.setEnabled) return ret
def _createMenu(self, q): self._menu = menu = QMenu(self._parentWidget) m = main.manager() menu.addAction( mytr_("Spring Board") + " (%s)" % tr_("Double Click") ).triggered.connect(m.showSpringBoard) menu.addAction(mytr_("Game Board")).triggered.connect(m.showGameBoard) menu.addAction(tr_("Preferences")).triggered.connect(m.showPreferences) menu.addAction(mytr_("Shared Dictionary")).triggered.connect(m.showTermView) menu.addAction(mytr_("Test Machine Translation")).triggered.connect(m.showMachineTranslationTester) menu.addAction(mytr_("Text Reader")).triggered.connect(m.showTextReader) menu.addSeparator() menu.addAction(mytr_("Sync with Running Game")).triggered.connect(m.openRunningGame) menu.addAction(mytr_("Game Wizard")).triggered.connect(m.showGameWizard) #menu.addSeparator() #self._gamePrefsAct = menu.addAction(mytr_("Text Settings")) #self._gamePrefsAct.triggered.connect(m.showTextSettings) #self._captureAct = menu.addAction(self.q.tr("Game Screenshot")) #self._captureAct.triggered.connect(gameman.manager().captureWindow) #self._backlogAct = menu.addAction(mytr_("Backlog")) #self._backlogAct.triggered.connect(m.showBacklog) #self._liveEditAct = menu.addAction(self.q.tr("Edit Subtitles Online ")) #self._liveEditAct.triggered.connect(m.liveEdit) #menu.addSeparator() #self._onlineAct = menu.addAction("") #self._onlineAct.triggered.connect(netman.manager().updateOnline) #menu.addSeparator() #menu.addAction(self.q.tr("Growl!")).triggered.connect(growl.show) #menu.addAction(self.q.tr("Omajinai☆")).triggered.connect(m.showOmajinai) menu.addSeparator() menu.addAction(tr_("Check for updates")).triggered.connect(m.checkUpdate) menu.addAction(tr_("About")).triggered.connect(m.about) menu.addAction(tr_("Wiki")).triggered.connect(lambda: m.openWiki('VNR')) menu.addAction(tr_("Credits")).triggered.connect(m.showCredits) menu.addSeparator() menu.addAction(tr_("Restart")).triggered.connect(m.restart) menu.addAction(tr_("Quit")).triggered.connect(m.quit) q.setContextMenu(menu)
def _createUi(self, q): self.edit = QtWidgets.QLineEdit() skqss.class_(self.edit, 'normal') grid = QtWidgets.QGridLayout() r = 0 self.updateCommentButton = QtWidgets.QRadioButton(mytr_("Update reason")) self.updateCommentButton.setChecked(True) self.commentButton = QtWidgets.QRadioButton(tr_("Comment")) g = QtWidgets.QButtonGroup(q) g.addButton(self.updateCommentButton) g.addButton(self.commentButton) grid.addWidget(create_label(tr_("Property")), r, 0) for i,b in enumerate(g.buttons()): grid.addWidget(b, r, i+1) r += 1 self.appendButton = QtWidgets.QRadioButton(tr_("Append")) self.appendButton.setChecked(True) self.overwriteButton = QtWidgets.QRadioButton(tr_("Overwrite")) g = QtWidgets.QButtonGroup(q) g.addButton(self.appendButton) g.addButton(self.overwriteButton) grid.addWidget(create_label(tr_("Method")), r, 0) for i,b in enumerate(g.buttons()): grid.addWidget(b, r, i+1) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.edit) optionGroup = QtWidgets.QGroupBox(tr_("Option")) optionGroup.setLayout(grid) layout.addWidget(optionGroup) buttonBox = QtWidgets.QDialogButtonBox( QtWidgets.QDialogButtonBox.Ok| QtWidgets.QDialogButtonBox.Cancel) layout.addWidget(buttonBox) buttonBox.accepted.connect(q.accept) buttonBox.rejected.connect(q.reject) okButton = buttonBox.button(buttonBox.Ok) okButton.setDefault(True) skqss.class_(okButton, 'btn btn-primary') #cancelButton = buttonBox.button(buttonBox.Cancel) q.setLayout(layout)
def _addText(self, _, data, signature, name): """ @param _ bytearray raw data @param data bytearray rendered data @param signature long @param name str """ if not self.wizard().profile().isTextHookAttached(): # FIXME: only texthook is supported return dprint("thread name = %s" % name) try: t = self._threads[signature] except KeyError: t = SelectThreadPage.Thread() t.signature = signature t.name = name self._threads[signature] = t if name == defs.HCODE_THREAD_NAME: n = mytr_("H-code") elif name in defs.CAONIMAGEBI_ENGINES: n = name + defs.CAONIMAGEBI_USERNAME elif name in defs.OK123_ENGINES: n = name + defs.OK123_USERNAME else: n = name text = "%s %x" % (n, signature) enc = config.guess_thread_encoding(name) if enc: text += " (%s)" % enc b = self._grid.addButton(text, tip=str(signature), value=signature) # value MUST BE signature, which is used to get the current signature ID tt = defs.threadtype(name) b.setToolTip(i18n.threadtip(tt)) b.setStyleSheet(SS_RADIOBUTTONS[tt]) finally: t.data.append(data) if signature == self._currentSignature(): self._refresh()
def refresh(self): """@reimp""" self.newPostButton.setVisible(bool(self.topicId)) self.gameButton.setVisible(bool(self.subjectId)) host = config.API_HOST # must be the same as rest.coffee for the same origin policy user = dataman.manager().user() w = self.webView w.setHtml(rc.haml_template('haml/reader/topicsview').render({ 'host': host, 'locale': config.language2htmllocale(user.language), 'title': mytr_("Messages"), 'subjectId': self.subjectId, #'subjectType': self.subjectType, 'topicId': self.topicId, 'userName': user.name if not user.isGuest() else '', 'userPassword': user.password, 'rc': rc, 'tr': tr_, }), host) self._injectBeans()
def setVisible(self, visible): """@reimp @public""" d = self.__d if visible: g = _gameprofile() icon = g.icon() if g else None if not icon or icon.isNull(): icon = rc.icon('logo-reader') self.setWindowIcon(icon) title = "%s (%s)" % ( mytr_("Text Settings"), my.tr("Engine: ITH"), ) name = g.name() if g else None if name: title = "%s - %s" % (name, title) self.setWindowTitle(title) if visible: texthook.global_().hijackProcess() if visible != self.isVisible(): if visible: d.clear() d.load() self.updateEnabled() skevents.runlater(self.updateSize) else: d.unload() texthook.global_().setWhitelistEnabled(not visible) d.setActive(visible) super(TextPrefsDialog, self).setVisible(visible)
def __init__(self, parent=None): super(TextSettingsHelpDialog, self).__init__(parent) self.setWindowTitle("%s - %s" % (tr_("Help"), mytr_("Text Settings"))) self.setHtml(info.renderTextSettingsHelp()) self.resize(500, 400) dprint("pass")
def __init__(self, parent=None): super(CommentInputDialog, self).__init__(parent) skqss.class_(self, 'texture') self.setWindowTitle(mytr_("Update reason")) #self.setWindowIcon(rc.icon('window-shortcuts')) self.__d = _CommentInputDialog(self)
def _createUi(self, q): layout = QtWidgets.QVBoxLayout() #tt = defs.threadtype(self.name) #ttip = i18n.threadtip(tt) #if self.name == defs.HCODE_THREAD_NAME: # n = mytr_("H-code") #elif self.name in defs.CAONIMAGEBI_ENGINES: # n = self.name + '<span style="color:red">%s</span>' % defs.CAONIMAGEBI_USERNAME #elif self.name in defs.OK123_ENGINES: # n = self.name + '<span style="color:red">%s</span>' % defs.OK123_USERNAME #else: # n = self.name title = """<span style="color:gray">%x</span>""" % self.signature #title = """%s <span style="color:gray">%x</span>""" % (n, self.signature) #enc = config.guess_thread_encoding(self.name) #if enc: # title += """ <span style="color:#333">%s</span>""" % enc label = QtWidgets.QLabel(title) #label.setStyleSheet(SS_LABELS[tt]) #label.setToolTip(ttip) # Must be consist with button rows self.buttonRow = skwidgets.SkButtonRow() b = self.buttonRow.addButton( mytr_("dialog"), tip=my.tr("This is main scenario")) # scenario skqss.class_(b, 'btn btn-default btn-sm') b.toggled.connect( partial( lambda b, value: skqss.toggleclass(b, 'btn-primary', value), b)) b = self.buttonRow.addButton( mytr_("name"), tip=my.tr("These are character names")) # scenario skqss.class_(b, 'btn btn-default btn-sm') b.toggled.connect( partial( lambda b, value: skqss.toggleclass(b, 'btn-success', value), b)) #b = self.buttonRow.addButton(tr_("other"), # tip=my.tr("This is extra scenario")) # other #skqss.class_(b, 'btn btn-default btn-sm') #b.toggled.connect(partial(lambda b, value: # skqss.toggleclass(b, 'btn-info', value), # b)) #b = self.buttonRow.addButton(tr_("ignore"), # tip=my.tr("Don't translate the text")) # ignored b = self.buttonRow.addButton( tr_("other"), tip=my.tr("This is extra scenario")) # other skqss.class_(b, 'btn btn-default btn-sm') b.toggled.connect( partial(lambda b, value: skqss.toggleclass(b, 'btn-info', value), b)) self.buttonRow.setCurrentIndex(_TextThreadView.IGNORE_BUTTON_ROW) self.buttonRow.currentIndexChanged.connect(self._onSelectedRoleChanged) self.buttonRow.currentIndexChanged.connect(self.updateStyleSheet) self.textEdit = QtWidgets.QPlainTextEdit() #self.textEdit.setToolTip(mytr_("Game text")) #self.textEdit.setToolTip(ttip) self.textEdit.setReadOnly(True) self.textEdit.setMaximumHeight(TEXTEDIT_MAX_HEIGHT) self.textEdit.setMinimumWidth(TEXTEDIT_MIN_WIDTH) #self.textEdit.setStyleSheet( # SS_TEXTEDIT_HOOK_IGNORED if self.name == defs.HCODE_THREAD_NAME else # SS_TEXTEDIT_IGNORED) header = QtWidgets.QHBoxLayout() header.addWidget(self.buttonRow) header.addStretch() header.addWidget(label) layout.addLayout(header) layout.addWidget(self.textEdit) q.setLayout(layout)
def _createUi(self, q): layout = QtWidgets.QVBoxLayout() # Options grid = QtWidgets.QGridLayout() r = 0 grid.addWidget(create_label("From"), r, 0) row = QtWidgets.QHBoxLayout() row.addWidget(self.sourceLanguageEdit) row.addWidget( self._createInfoLabel( my.tr("should always be Japanese for a Japanese game"))) grid.addLayout(row, r, 1) r += 1 grid.addWidget(create_label("To"), r, 0) row = QtWidgets.QHBoxLayout() row.addWidget(self.targetLanguageEdit) row.addWidget( self._createInfoLabel(my.tr("target language to translate to"))) grid.addLayout(row, r, 1) r += 1 r += 1 grid.addWidget(create_label(tr_("Type")), r, 0) row = QtWidgets.QHBoxLayout() row.addWidget(self.typeEdit) row.addWidget(self.typeLabel) grid.addLayout(row, r, 1) r += 1 grid.addWidget(create_label(tr_("Context")), r, 0) row = QtWidgets.QHBoxLayout() row.addWidget(self.contextEdit) row.addWidget( self._createInfoLabel(my.tr("only enable under selected context"))) grid.addLayout(row, r, 1) r += 1 grid.addWidget(create_label(tr_("Translator")), r, 0) row = QtWidgets.QHBoxLayout() row.addWidget(self.hostEdit) row.addWidget( self._createInfoLabel( my.tr("only enable for selected translator"))) grid.addLayout(row, r, 1) r += 1 grid.addWidget(create_label(tr_("Options")), r, 0) grid.addWidget(self.specialButton, r, 1) r += 1 grid.addWidget(self.regexButton, r, 1) r += 1 grid.addWidget(self.phraseButton, r, 1) r += 1 grid.addWidget(self.icaseButton, r, 1) r += 1 #grid.addWidget(self.syntaxButton, r, 1) #r += 1 grid.addWidget(self.privateButton, r, 1) r += 1 grid.addWidget(create_label(tr_("Pattern")), r, 0) row = QtWidgets.QHBoxLayout() row.addWidget(self.patternEdit) row.addWidget(self.patternTtsButton) grid.addLayout(row, r, 1) r += 1 grid.addWidget(create_label(tr_("Kanji")), r, 0) grid.addWidget(self.kanjiEdit, r, 1) # span for two rows r += 1 grid.addWidget(create_label(tr_("Priority")), r, 0) row = QtWidgets.QHBoxLayout() row.addWidget(self.priorityEdit) row.addWidget(self.priorityLabel) grid.addLayout(row, r, 1) r += 1 grid.addWidget(create_label(tr_("Translation")), r, 0) row = QtWidgets.QHBoxLayout() row.addWidget(self.textEdit) row.addWidget(self.textTtsButton) grid.addLayout(row, r, 1) r += 1 grid.addWidget(create_label(mytr_("Yomigana")), r, 0) grid.addWidget(self.yomiEdit, r, 1) # span for two rows r += 1 grid.addWidget(create_label(mytr_("Ruby")), r, 0) grid.addWidget(self.rubyEdit, r, 1) # span for two rows r += 1 grid.addWidget(create_label(tr_("Role")), r, 0) grid.addWidget(self.roleEdit, r, 1) r += 1 grid.addWidget(create_label(tr_("Comment")), r, 0) grid.addWidget(self.commentEdit, r, 1) r += 1 layout.addLayout(grid) # Footer layout.addWidget(self.statusLabel) row = QtWidgets.QHBoxLayout() row.addStretch() row.addWidget(self.helpButton) row.addWidget(self.cancelButton) row.addWidget(self.saveButton) layout.addLayout(row) q.setLayout(layout)
def __init__(self, parent=None): super(GameFinder, self).__init__(parent=parent, readonly=True) self.setWindowTitle(mytr_("Game Finder")) self.setWindowIcon(rc.icon('window-gamefinder'))
def _createNameButton(self, index): # int -> QPushButton ret = QtWidgets.QPushButton(mytr_("Name")) skqss.class_(ret, "btn btn-primary") ret.setToolTip(my.tr("Add to Shared Dictionary")) ret.clicked.connect(partial(self._newName, index)) return ret
def specialButton(self): ret = QtWidgets.QCheckBox(mytr_("Series-specific")) ret.setChecked(True) # enable series-specific by default ret.toggled.connect(self._refreshStatus) return ret
def scoreEdits(self): return OrderedDict(( ('overall', self._createScoreEdit(tr_("Score"))), ('ecchi', self._createScoreEdit(mytr_("Ecchi"))), ))
def __init__(self, parent=None): WINDOW_FLAGS = Qt.Dialog|Qt.WindowMinMaxButtonsHint super(TopicsView, self).__init__(parent, WINDOW_FLAGS) self.setWindowIcon(rc.icon('window-forum')) self.setWindowTitle(mytr_("Messages")) self.__d = _TopicsView(self)
def _createUi(self, q): layout = QtWidgets.QVBoxLayout() tt = defs.threadtype(self.name) ttip = i18n.threadtip(tt) if self.name == defs.NULL_THREAD_NAME: n = tr_("Not specified") elif self.name == defs.HCODE_THREAD_NAME: n = mytr_("H-code") elif self.name in defs.CAONIMAGEBI_ENGINES: n = self.name + '<span style="color:red">%s</span>' % defs.CAONIMAGEBI_USERNAME elif self.name in defs.OK123_ENGINES: n = self.name + '<span style="color:red">%s</span>' % defs.OK123_USERNAME #elif self.name.startswith('sce') or self.name in config.PSP_ALL_TEXT_THREADS: # n = self.name + '<span style="color:gray">=0.9.x</span>' # no need to show elif self.name in config.PSP_099_TEXT_THREADS: n = self.name + '<span style="color:red">=0.9.9</span>' elif self.name in config.PSP_098_TEXT_THREADS: n = self.name + '<span style="color:purple">=0.9.8</span>' else: n = self.name if config.game_thread_embeddable(self.name): t = mytr_("embeddable") if self.name in config.EMBEDDED_EN_GAME_ENGINES: t += ', <span style="color:purple">%s</span>' % my.tr("English-only") n += ' <span style="color:darkgreen">(%s)</span>' % t title = '%s <span style="color:gray">%x</span>' % (n, self.signature) enc = config.guess_thread_encoding(self.name) if enc: title += ' <span style="color:#333">%s</span>' % enc elif self.name and self.name not in (defs.HCODE_THREAD_NAME, defs.NULL_THREAD_NAME) and 'PSP' not in self.name: title += '<br/><span style="color:red;font-weight:bold">(%s)</span>' % my.tr("Not supported, please update VNR") label = QtWidgets.QLabel(title) label.setStyleSheet(SS_LABELS[tt]) label.setToolTip(ttip) # Must be consist with button rows self.buttonRow = skwidgets.SkButtonRow() b = self.buttonRow.addButton(mytr_("dialog"), tip=my.tr("This is main scenario")) # scenario skqss.class_(b, 'btn btn-default btn-sm') b.toggled.connect(partial(lambda b, value: skqss.toggleclass(b, 'btn-primary', value), b)) b = self.buttonRow.addButton(mytr_("name"), tip=my.tr("These are character names")) # scenario skqss.class_(b, 'btn btn-default btn-sm') b.toggled.connect(partial(lambda b, value: skqss.toggleclass(b, 'btn-success', value), b)) b = self.buttonRow.addButton(tr_("other"), tip=my.tr("This is extra scenario")) # other skqss.class_(b, 'btn btn-default btn-sm') b.toggled.connect(partial(lambda b, value: skqss.toggleclass(b, 'btn-info', value), b)) b = self.buttonRow.addButton(tr_("ignore"), tip=my.tr("Don't translate the text")) # ignored skqss.class_(b, 'btn btn-default btn-sm') b.toggled.connect(partial(lambda b, value: skqss.toggleclass(b, 'btn-danger', value), b)) self.buttonRow.setCurrentIndex(_TextThreadView.IGNORE_BUTTON_ROW) self.buttonRow.currentIndexChanged.connect(self._emitThreadType) self.buttonRow.currentIndexChanged.connect(self.updateStyleSheet) self.textEdit = QtWidgets.QPlainTextEdit() #self.textEdit.setToolTip(mytr_("Game text")) self.textEdit.setToolTip(ttip) self.textEdit.setReadOnly(True) self.textEdit.setMaximumHeight(TEXTEDIT_MAX_HEIGHT) self.textEdit.setMinimumWidth(TEXTEDIT_MIN_WIDTH) self.textEdit.setStyleSheet( SS_TEXTEDIT_HOOK_IGNORED if self.name == defs.HCODE_THREAD_NAME else SS_TEXTEDIT_IGNORED) header = QtWidgets.QHBoxLayout() header.addWidget(self.buttonRow) header.addStretch() header.addWidget(label) layout.addLayout(header) layout.addWidget(self.textEdit) q.setLayout(layout)
def _createUi(self, q): self.userTab = _prefs.UserTab() self.textTab = _prefs.TextTab() self.ttsTab = _prefs.TtsTab() self.ocrTab = _prefs.OcrTab() #self.srTab = _prefs.SrTab() self.gameTab = _prefs.GameTab() self.shortcutsTab = _prefs.ShortcutsTab() self.uiTab = _prefs.UiTab() self.recordingsTab = _prefs.RecordingsTab() self.i18nTab = _prefs.I18nTab() self.engineTab = _prefs.EngineTab() self.internetTab = _prefs.InternetTab() self.featureTab = _prefs.FeatureTab() #self.pluginTab = _prefs.PluginTab() self.translationTab = _prefs.TranslationTab() self.machineTranslationTab = _prefs.MachineTranslationTab() self.dictionaryTranslationTab = _prefs.DictionaryTranslationTab() self.romanTranslationTab = _prefs.RomanTranslationTab() self.chineseTranslationTab = _prefs.ChineseTranslationTab() #self.translationScriptTab = _prefs.TranslationScriptTab() self.termTab = _prefs.TermTab() self.downloadsTab = _prefs.DownloadsTab() self.dictionaryDownloadsTab = _prefs.DictionaryDownloadsTab() self.launcherDownloadsTab = _prefs.LauncherDownloadsTab() self.fontDownloadsTab = _prefs.FontDownloadsTab() self.libraryTab = _prefs.LibraryTab() self.localeLibraryTab = _prefs.LocaleLibraryTab() self.translatorLibraryTab = _prefs.TranslatorLibraryTab() self.dictionaryLibraryTab = _prefs.DictionaryLibraryTab() self.ttsLibraryTab = _prefs.TtsLibraryTab() self.ocrLibraryTab = _prefs.OcrLibraryTab() #for t in self.itertabs(): # t.setSizePolicy(QtWidgets.QSizePolicy.Expanding, # QtWidgets.QSizePolicy.Expanding) container = QtWidgets.QScrollArea() # widget container container.setWidgetResizable(True) # false by default container.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) container.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) #container.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) #container.setAlignment(Qt.AlignTop | Qt.AlignHCenter) self.controller = skmvc.SkWidgetTreeController( parent=q, container=container, data={ 'display': tr_("Preferences"), 'children': [ { 'widget': self.userTab, 'user': self._indexWidget(self.userTab), 'decoration': rc.icon('pref-user'), 'display': tr_("Account"), 'toolTip': my.tr("User account"), }, { 'widget': self.engineTab, 'user': self._indexWidget(self.engineTab), #'display': u"%s (α)" % mytr_("Embedded"), 'display': mytr_("Embedded"), 'decoration': rc.icon('pref-config'), 'toolTip': my.tr("Embedded subtitles"), }, { 'widget': self.downloadsTab, 'user': self._indexWidget(self.downloadsTab), 'decoration': rc.icon('pref-download'), 'display': tr_("Downloads"), 'toolTip': my.tr("Download additional resources"), 'children': [ { 'widget': self.launcherDownloadsTab, 'user': self._indexWidget(self.launcherDownloadsTab), 'decoration': rc.icon('pref-locale'), 'display': tr_("Launch"), 'toolTip': my.tr("Locale changers"), }, { 'widget': self.dictionaryDownloadsTab, 'user': self._indexWidget(self.dictionaryDownloadsTab), 'decoration': rc.icon('pref-dict'), 'display': tr_("Dictionaries"), 'toolTip': my.tr("Manage dictionaries"), }, { 'widget': self.fontDownloadsTab, 'user': self._indexWidget(self.fontDownloadsTab), 'decoration': rc.icon('pref-font'), 'display': tr_("Fonts"), 'toolTip': my.tr("Manage fonts"), }, ] }, { 'widget': self.libraryTab, 'user': self._indexWidget(self.libraryTab), 'decoration': rc.icon('pref-library'), 'display': tr_("Locations"), 'toolTip': my.tr("Locations of external libraries"), 'children': [ { 'widget': self.localeLibraryTab, 'user': self._indexWidget(self.localeLibraryTab), 'decoration': rc.icon('pref-locale'), 'display': tr_("Launch"), 'toolTip': my.tr("Locations of external locale changers"), }, { 'widget': self.translatorLibraryTab, 'user': self._indexWidget(self.translatorLibraryTab), 'decoration': rc.icon('pref-tr-path'), 'display': tr_("Translators"), 'toolTip': my.tr("Locations of external translators"), }, { 'widget': self.dictionaryLibraryTab, 'user': self._indexWidget(self.dictionaryLibraryTab), 'decoration': rc.icon('pref-dict'), 'display': tr_("Dictionaries"), 'toolTip': my.tr("Locations of external dictionary"), }, { 'widget': self.ttsLibraryTab, 'user': self._indexWidget(self.ttsLibraryTab), 'decoration': rc.icon('pref-tts-path'), 'display': mytr_("TTS"), 'toolTip': my.tr("Locations of external TTS"), }, { 'widget': self.ocrLibraryTab, 'user': self._indexWidget(self.ocrLibraryTab), 'decoration': rc.icon('pref-ocr-path'), 'display': mytr_("OCR"), 'toolTip': my.tr("Locations of external OCR libraries"), }, ] }, { 'widget': self.translationTab, 'user': self._indexWidget(self.translationTab), 'decoration': rc.icon('pref-tr'), 'display': tr_("Translation"), 'toolTip': my.tr("Machine translators"), 'children': [ { 'widget': self.machineTranslationTab, 'user': self._indexWidget(self.machineTranslationTab), 'decoration': rc.icon('pref-tr-path'), 'display': tr_("Translators"), 'toolTip': my.tr("Preferred machine translators"), }, { 'widget': self.dictionaryTranslationTab, 'user': self._indexWidget( self.dictionaryTranslationTab), 'decoration': rc.icon('pref-dict'), 'display': tr_("Dictionaries"), 'toolTip': my.tr("Preferred look-up dictionaries"), }, { 'widget': self.romanTranslationTab, 'user': self._indexWidget(self.romanTranslationTab), 'decoration': rc.icon('pref-roman'), 'display': mytr_("C/K Ruby"), 'toolTip': my. tr("Romanization of texts in Chinese and Korean" ), }, { 'widget': self.chineseTranslationTab, 'user': self._indexWidget(self.chineseTranslationTab), 'decoration': rc.icon('pref-zh'), 'display': tr_("Chinese"), 'toolTip': my.tr("Preferred Chinese variant"), }, #{ 'widget': self.translationScriptTab, # 'user': self._indexWidget(self.translationScriptTab), # 'decoration': rc.icon('pref-script'), # 'display': tr_("Scripts"), # 'toolTip': my.tr("Translation replacement scripts"), #}, ] }, { 'widget': self.ttsTab, 'user': self._indexWidget(self.ttsTab), 'decoration': rc.icon('pref-tts'), 'display': mytr_("Text-To-Speech"), 'toolTip': mytr_("Text-To-Speech") + " (TTS)", }, #{ 'widget': self.srTab, # 'user': self._indexWidget(self.srTab), # 'decoration': rc.icon('pref-sr'), # 'display': u"%s (α)" % mytr_("ASR"), # 'toolTip': mytr_("Automatic speech recognition") + " (ASR)", #}, { 'widget': self.ocrTab, 'user': self._indexWidget(self.ocrTab), 'decoration': rc.icon('pref-ocr'), 'display': u"%s (α)" % mytr_("OCR"), 'toolTip': mytr_("Optical character recognition") + " (OCR)", }, { 'widget': self.textTab, 'user': self._indexWidget(self.textTab), 'display': tr_("Font"), 'decoration': rc.icon('pref-text'), 'toolTip': my.tr("Text rendering"), }, { 'widget': self.gameTab, 'user': self._indexWidget(self.gameTab), 'decoration': rc.icon('pref-app'), 'display': tr_("Launch"), 'toolTip': my.tr("Game launch settings"), }, { 'widget': self.shortcutsTab, 'user': self._indexWidget(self.shortcutsTab), 'decoration': rc.icon('pref-shortcuts'), 'display': mytr_("Shortcuts"), 'toolTip': my.tr("Mouse and keyboard shortcuts"), }, { 'widget': self.recordingsTab, 'user': self._indexWidget(self.recordingsTab), 'decoration': rc.icon('pref-rec'), 'display': mytr_("Recordings"), 'toolTip': my.tr("Game recordings"), }, { 'widget': self.uiTab, 'user': self._indexWidget(self.uiTab), 'decoration': rc.icon('pref-ui'), 'display': tr_("UI"), 'toolTip': my.tr("UI Theme"), }, { 'widget': self.i18nTab, 'user': self._indexWidget(self.i18nTab), 'display': tr_("i18n"), 'decoration': rc.icon('pref-i18n'), 'toolTip': tr_("International"), }, { 'widget': self.termTab, 'user': self._indexWidget(self.termTab), 'decoration': rc.icon('pref-share'), 'display': mytr_("Shared Dictionary"), 'toolTip': mytr_("Shared Dictionary"), }, { 'widget': self.internetTab, 'user': self._indexWidget(self.internetTab), 'decoration': rc.icon('pref-internet'), 'display': tr_("Internet"), 'toolTip': my.tr("Internet options"), }, { 'widget': self.featureTab, 'user': self._indexWidget(self.featureTab), 'decoration': rc.icon('pref-feature'), 'display': tr_("Features"), 'toolTip': my.tr("Application features"), }, ], }) self.controller.treeView().setHeaderHidden(True) self.controller.treeView().expandAll() left = QtWidgets.QWidget() layout = QtWidgets.QVBoxLayout() layout.addWidget(self.controller.treeView()) row = QtWidgets.QHBoxLayout() row.addWidget(self.controller.filterEdit()) row.addWidget(self.controller.countLabel()) layout.addLayout(row) left.setLayout(layout) q.addWidget(left) skqss.class_(self.controller.treeView(), 'texture') right = self.controller.widgetView() #right.setSizePolicy(QtWidgets.QSizePolicy.Expanding, # QtWidgets.QSizePolicy.Expanding) q.addWidget(right) self.controller.currentIndexChanged.connect(self._refreshCurrentWidget) w = self.controller.filterEdit() w.setToolTip("%s (%s, %s, Ctrl+F)" % (tr_("Search"), tr_("case-insensitive"), tr_("regular expression"))) shortcut('ctrl+f', w.setFocus, parent=q)
def _createUi(self, q): hookPrefsButton = QtWidgets.QPushButton(my.tr("Edit /H Hook Code")) skqss.class_(hookPrefsButton, 'btn btn-info') hookPrefsButton.setToolTip(my.tr("Modify the game-specific ITH hook code") + " (Alt+H)") hookPrefsButton.setStatusTip(hookPrefsButton.toolTip()) hookPrefsButton.clicked.connect(self._showHookPrefs) helpButton = QtWidgets.QPushButton(tr_("Help")) helpButton.setToolTip(tr_("Help")) skqss.class_(helpButton, 'btn btn-success') helpButton.clicked.connect(lambda: self.helpDialog.show()) wikiButton = QtWidgets.QPushButton(tr_("Wiki")) wikiButton.setToolTip(tr_("Wiki")) skqss.class_(wikiButton, 'btn btn-default') import main wikiButton.clicked.connect(lambda: main.manager().openWiki('VNR/Text Settings')) #cancelButton = QtWidgets.QPushButton(tr_("Cancel")) #cancelButton.clicked.connect(self.q.hide) threadArea = QtWidgets.QScrollArea() threadArea.setWidget(skwidgets.SkLayoutWidget(self.threadLayout)) threadArea.setWidgetResizable(True) threadGroup = QtWidgets.QGroupBox() threadGroup.setTitle(mytr_("Text threads")) threadGroup.setLayout(skwidgets.SkWidgetLayout(threadArea)) #threadGroup.setLayout(self.threadLayout) option = QtWidgets.QGroupBox(tr_("Options")) optionLayout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(QtWidgets.QLabel(mytr_("Game language")+ ":")) row.addWidget(self.languageEdit) row.addStretch() row.addWidget(QtWidgets.QLabel(tr_("Text encoding") + ":")) row.addWidget(self.encodingEdit) optionLayout.addLayout(row) optionLayout.addWidget(self.keepsThreadsButton) optionLayout.addWidget(self.removesRepeatButton) optionLayout.addWidget(self.ignoresRepeatButton) optionLayout.addWidget(self.keepsSpaceButton) option.setLayout(optionLayout) layout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(self.saveButton) row.addWidget(hookPrefsButton) row.addWidget(self.resetButton) row.addWidget(wikiButton) row.addWidget(helpButton) #row.addWidget(QtWidgets.QLabel( # " <= " + my.tr("click help if you have questions") #)) row.addStretch() layout.addLayout(row) row = QtWidgets.QHBoxLayout() row.addWidget(option) row.addStretch() layout.addLayout(row) layout.addWidget(threadGroup) #msg = QtWidgets.QLabel(my.tr("WARNING: PLEASE DO NOT TURN ON REPETITION FILTERS UNLESS THERE ARE REPETITIONS!")) msgLabel = QtWidgets.QLabel(my.tr("Don't forget to maximize the text speed (see Help).")) skqss.class_(msgLabel, "text-success") layout.addWidget(msgLabel) wikiLabel = QtWidgets.QLabel(my.tr('Please check this <a href="http://sakuradite.com/wiki/en/VNR/Game_Settings">Game Settings</a> wiki if there is no correct text.')) wikiLabel.setOpenExternalLinks(True) #skqss.class_(wikiLabel, "text-info") layout.addWidget(wikiLabel) #buttons = QtWidgets.QHBoxLayout() #buttons.addStretch() #buttons.addWidget(cancelButton) #buttons.addWidget(self.saveButton) #layout.addLayout(buttons) #layout.addWidget(introLabel) #layout.setContentsMargins(18, 18, 18, 9) # left, top, right, bottom #self.q.setCentralWidget(skwidgets.SkLayoutWidget(layout)) q.setLayout(layout) skwidgets.shortcut('alt+h', self._showHookPrefs, parent=q)
def clear(self): if self.isVisible(): self.setWindowIcon(QIcon()) self.setWindowTitle(mytr_("Text Settings")) self.__d.clear()
def _createYomiButton(self, index): # int -> QPushButton ret = QtWidgets.QPushButton(mytr_("Yomi")) skqss.class_(ret, "btn btn-success") ret.setToolTip(my.tr("Add to Shared Dictionary")) ret.clicked.connect(partial(self._newYomi, index)) return ret
def ttsButton(self): ret = QtWidgets.QPushButton(mytr_("TTS")) skqss.class_(ret, 'btn btn-default') ret.setToolTip(my.tr("Read the recognized text")) ret.clicked.connect(self._tts) return ret
def _createUi(self, q): #hookPrefsButton = QtWidgets.QPushButton(my.tr("Edit /H Hook Code")) #skqss.class_(hookPrefsButton, 'btn btn-info') #hookPrefsButton.setToolTip(my.tr("Modify the game-specific ITH hook code") + " (Alt+H)") #hookPrefsButton.setStatusTip(hookPrefsButton.toolTip()) #hookPrefsButton.clicked.connect(self._showHookPrefs) helpButton = QtWidgets.QPushButton(tr_("Help")) helpButton.setToolTip(tr_("Help")) skqss.class_(helpButton, 'btn btn-success') helpButton.clicked.connect(lambda: self.helpDialog.show()) #wikiButton = QtWidgets.QPushButton(tr_("Wiki")) #wikiButton.setToolTip(tr_("Wiki")) #skqss.class_(wikiButton, 'btn btn-default') #import main #wikiButton.clicked.connect(lambda: main.manager().openWiki('VNR/Text Settings')) #cancelButton = QtWidgets.QPushButton(tr_("Cancel")) #cancelButton.clicked.connect(self.q.hide) threadArea = QtWidgets.QScrollArea() threadArea.setWidget(skwidgets.SkLayoutWidget(self.threadLayout)) threadArea.setWidgetResizable(True) threadGroup = QtWidgets.QGroupBox() threadGroup.setTitle(mytr_("Text threads")) threadGroup.setLayout(skwidgets.SkWidgetLayout(threadArea)) #threadGroup.setLayout(self.threadLayout) info = QtWidgets.QGroupBox("%s (%s)" % ( tr_("Information"), tr_("read-only"), )) infoLayout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(QtWidgets.QLabel(mytr_("Game engine") + ":")) row.addWidget(self.engineLabel) row.addStretch() infoLayout.addLayout(row) info.setLayout(infoLayout) option = QtWidgets.QGroupBox(tr_("Options")) optionLayout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(QtWidgets.QLabel(mytr_("Game language") + ":")) row.addWidget(self.languageEdit) row.addStretch() row.addWidget(QtWidgets.QLabel(tr_("Text encoding") + ":")) row.addWidget(self.encodingEdit) optionLayout.addLayout(row) option.setLayout(optionLayout) layout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() if not READONLY: row.addWidget(self.saveButton) #row.addWidget(hookPrefsButton) row.addWidget(self.resetButton) #row.addWidget(wikiButton) if not READONLY: row.addWidget(helpButton) #row.addWidget(QtWidgets.QLabel( # " <= " + my.tr("click help if you have questions") #)) row.addStretch() layout.addLayout(row) col = QtWidgets.QVBoxLayout() col.addWidget(info) col.addWidget(option) row = QtWidgets.QHBoxLayout() row.addLayout(col) row.addStretch() layout.addLayout(row) layout.addWidget(threadGroup) msg = QtWidgets.QLabel( "%s: %s" % (tr_("Note"), my.tr("All settings are read-only."))) skqss.class_(msg, "text-error") layout.addWidget(msg) #buttons = QtWidgets.QHBoxLayout() #buttons.addStretch() #buttons.addWidget(cancelButton) #buttons.addWidget(self.saveButton) #layout.addLayout(buttons) #layout.addWidget(introLabel) #layout.setContentsMargins(18, 18, 18, 9) # left, top, right, bottom #self.q.setCentralWidget(skwidgets.SkLayoutWidget(layout)) q.setLayout(layout)
def speakButton(self): ret = QtWidgets.QPushButton(mytr_("Speak")) ret.setToolTip(mytr_("Speak")) skqss.class_(ret, 'btn btn-inverse') ret.clicked.connect(self._speak) return ret
def _createYomiEdit(self): return self._createLabel('text-success', mytr_("Yomi"), NAME_EDIT_MIN_WIDTH)
if isinstance(type, str): return tr_(type) if isinstance(type, unicode): return utr_(type) return '' def term_type_name(type): """ @param type str @return unicode """ import dataman return dataman.Term.typeName(type) TRANSLATOR_NAMES = { # [TranslatorTraits] 'romaji': mytr_("Yomigana"), 'bing': "Bing.com", 'google': "Google.com", 'lecol': mytr_("LEC Online"), 'infoseek': "Infoseek.co.jp", 'excite': "Excite.co.jp", 'nifty': "@nifty.com", 'systran': "SYSTRANet.com", 'babylon': "Babylon.com", 'transru': "Translate.Ru", 'naver': "Naver.com", 'baidu': mytr_("Baidu") + ".com", 'youdao': mytr_("Youdao") + ".com", 'jbeijing': mytr_("JBeijing"), 'fastait': mytr_("FastAIT"), 'dreye': "Dr.eye",
def contextSizeLabel(self): ret = QtWidgets.QLabel() ret.setToolTip(mytr_("Context count")) skqss.class_(ret, 'readonly') return ret
def replaceEdit(self): ret = QtWidgets.QLineEdit() skqss.class_(ret, 'normal') ret.setToolTip(mytr_("Replaced text")) ret.setPlaceholderText(ret.toolTip()) return ret
def _createUi(self, q): layout = QtWidgets.QVBoxLayout() # User row = QtWidgets.QHBoxLayout() row.addWidget(create_label(tr_("Type"))) row.addWidget(self.typeEdit) row.addWidget(create_label(tr_("Language"))) row.addWidget(self.languageEdit) row.addStretch() #row.addWidget(create_label(tr_("User"))) row.addWidget(self.userNameLabel) layout.addLayout(row) # Status row = QtWidgets.QHBoxLayout() row.addWidget(create_label(tr_("Status"))) row.addWidget(self.enabledButton) row.addWidget(self.lockedButton) row.addStretch() #row.addWidget(create_label(tr_("Date"))) row.addWidget(self.timestampLabel) layout.addLayout(row) # Context size row = QtWidgets.QHBoxLayout() row.addWidget(create_label(mytr_("Context count"))) row.addWidget(self.contextSizeLabel) row.addStretch() layout.addLayout(row) layout.addWidget(self.textEdit) # Context layout.addWidget(QtWidgets.QLabel( tr_("Context") + " (%s):" % tr_("read-only") )) layout.addWidget(self.currentContextEdit) layout.addWidget(QtWidgets.QLabel( mytr_("Previous context") + " (%s):" % tr_("read-only") )) layout.addWidget(self.previousContextEdit) layout.addWidget(create_label(tr_("Comment") )) layout.addWidget(self.commentEdit) row = QtWidgets.QHBoxLayout() row.addWidget(create_label(tr_("Permission"))) row.addWidget(self.textPermissionLabel) row.addWidget(create_label(tr_("Internet status"))) row.addWidget(self.onlineLabel) row.addStretch() row.addWidget(self.deleteButton) row.addWidget(self.refreshButton) layout.addLayout(row) q.setLayout(layout)
def _loadName(self): name = self.game.name self.nameEdit.setText(name) title = "%s - %s" % (name, mytr_("Game Properties")) self.q.setWindowTitle(title)
def __init__(self, wiz): super(SelectThreadPage, self).__init__(wiz) self.setTitle(my.tr("Select the text thread")) self.setCommitPage(True) self._active = False wiz.visibleChanged.connect(self._setActive) wiz.visibleChanged.connect(self._clear) self._threads = {} # {long signature:TextThread} introLabel = QtWidgets.QLabel(my.tr( "Please play the game a little bit, and pick one text thread that has the same contents as the game text. If no text thread appears, please try editing the /H hook code for this game." )) introLabel.setWordWrap(True) # grid of thread sources self._grid = skwidgets.SkRadioButtonGrid(self, col=2) self._grid.currentIndexChanged.connect(self._refresh) self._grid.currentIndexChanged.connect(self.completeChanged) threadGroup = QtWidgets.QGroupBox() threadGroup.setLayout(self._grid.layout()) threadGroup.setTitle(mytr_("Text threads")) self._encodingEdit = QtWidgets.QComboBox() self._encodingEdit.setEditable(False) self._encodingEdit.setToolTip(tr_("Text encoding")) self._encodingEdit.addItems(map(i18n.encoding_desc, config.ENCODINGS)) self._encodingEdit.currentIndexChanged.connect(self._refresh) self._keepsSpaceButton = QtWidgets.QCheckBox( my.tr("Insert spaces between words") + " (%s: %s)" % (tr_("for example"), "Howareyou! => How are you!")) self._keepsSpaceButton.toggled.connect(texthook.global_().setKeepsSpace) self._removesRepeatButton = QtWidgets.QCheckBox( my.tr("Eliminate finite repetition in the text") + " (%s: %s)" % (tr_("for example"), "YYeess!!NoNo! => Yes!No!")) self._removesRepeatButton.toggled.connect(self._refresh) self._ignoresRepeatButton = QtWidgets.QCheckBox( my.tr("Ignore infinite cyclic repetition in the text") + " (%s: %s)" % (tr_("for example"), "YesYesYes... => Yes")) self._ignoresRepeatButton.toggled.connect(texthook.global_().setRemovesRepeat) clearButton = QtWidgets.QPushButton(tr_("Clear")) clearButton.clicked.connect(self._clear) skqss.class_(clearButton, 'btn btn-danger') hookPrefsButton = QtWidgets.QPushButton(my.tr("Edit /H Hook Code")) skqss.class_(hookPrefsButton, 'btn btn-info') hookPrefsButton.clicked.connect(lambda: self.hookPrefsDialog.show()) helpButton = QtWidgets.QPushButton(tr_("Help")) skqss.class_(helpButton, 'btn btn-success') helpButton.clicked.connect(lambda: self.helpDialog.show()) self._textEdit = QtWidgets.QPlainTextEdit() self._textEdit.setReadOnly(True) self._textEdit.setToolTip(mytr_("Game text")) self._textEdit.setPlainText(my.tr("No game text")) layout = QtWidgets.QVBoxLayout() layout.addWidget(introLabel) row = QtWidgets.QHBoxLayout() row.addWidget(self._encodingEdit) row.addWidget(clearButton) row.addStretch() row.addWidget(hookPrefsButton) row.addWidget(helpButton) layout.addLayout(row) layout.addWidget(self._removesRepeatButton) layout.addWidget(self._ignoresRepeatButton) layout.addWidget(self._keepsSpaceButton) layout.addWidget(threadGroup) layout.addWidget(self._textEdit) self.setLayout(layout)