def _createUi(self, q, readonly): layout = QtWidgets.QVBoxLayout() # Header row = QtWidgets.QHBoxLayout() row.addWidget(self.searchEdit) row.addWidget(self.searchLabel) row.addWidget(self.searchButton) row.addWidget(self.pasteButton) layout.addLayout(row) # Site grid = QtWidgets.QGridLayout() r = c = 0 grid.addWidget(self.trailersButton, r, c) c += 1 grid.addWidget(self.scapeButton, r, c) c += 1 grid.addWidget(self.holysealButton, r, c) c += 1 grid.addWidget(self.freemButton, r, c) r += 1 c = 0 grid.addWidget(self.getchuButton, r, c) c += 1 grid.addWidget(self.melonButton, r, c) c += 1 grid.addWidget(self.gyuttoButton, r, c) c += 1 grid.addWidget(self.digiketButton, r, c) c += 1 grid.addWidget(self.dmmButton, r, c) c += 1 grid.addWidget(self.dlsiteButton, r, c) r += 1 c = 0 grid.addWidget(self.amazonButton, r, c) c += 1 grid.addWidget(self.steamButton, r, c) layout.addLayout(grid) # Body layout.addWidget(self.modelView) # Footer row = QtWidgets.QHBoxLayout() row.addWidget(self.filterEdit) row.addWidget(self.filterLabel) row.addWidget(self.browseButton) if not readonly: row.addWidget(self.saveButton) layout.addLayout(row) q.setLayout(layout)
def __init__(self, parent=None): super(IntroPage, self).__init__(parent) self.setTitle(my.tr("Add a new visual novel")) url = config.URL_READER_DEMO introEdit = QtWidgets.QTextBrowser() introEdit.setReadOnly(True) introEdit.setOpenExternalLinks(True) introEdit.setHtml(my.tr( """This wizard will help you add new visual novel step by step. <br/><br/> An Internet access is not indispensable, but is recommended. With the Internet, the wizard will be able to search the online database for game settings, which will save you some time for setting things up, <br/><br/> Note: On Windows Vista or Windows 7 where UAC is enabled, if the target game is launched with <b>admin privilege</b> (i.e., when you run the game, the Windows will black out, and ask you blablabla and "YES" or "NO" to continue), <b>please open Visual Novel Reader as admin as well</b>! <br/><br/> Here's a <a href="%s">demo on youtube</a> that might be helpful.""") % url) self._onlineLabel = QtWidgets.QLabel() onlineLabel = QtWidgets.QLabel(my.tr("Current Internet status") + ": ") onlineLabel.setBuddy(self._onlineLabel) self._elevateLabel = QtWidgets.QLabel( tr_("Not administrator") if features.ADMIN == False else tr_("Administrator")) skqss.class_(self._elevateLabel, 'warning' if features.ADMIN == False else 'normal') elevateLabel = QtWidgets.QLabel(my.tr("Current privileges") + ": ") elevateLabel.setBuddy(self._elevateLabel) layout = QtWidgets.QVBoxLayout() layout.addWidget(introEdit) row = QtWidgets.QHBoxLayout() row.addWidget(onlineLabel) row.addWidget(self._onlineLabel) row.addStretch() layout.addLayout(row) row = QtWidgets.QHBoxLayout() row.addWidget(elevateLabel) row.addWidget(self._elevateLabel) row.addStretch() layout.addLayout(row) self.setLayout(layout)
def scoreRow(self): row = QtWidgets.QHBoxLayout() for w in self.scoreEdits.itervalues(): row.addWidget(w) row.addStretch() row.setContentsMargins(0, 0, 0, 0) return skwidgets.SkLayoutWidget(row)
def __init__(self, parent=None): super(IntroPage, self).__init__(parent) self.setTitle(self.tr("Add or remove features")) introLabel = QtWidgets.QLabel(self.tr("""\ This wizard will direct you to add or remove features. You can remove the features you don't need to save disk space. Internet access is needed if you want to add new features. """)) introLabel.setWordWrap(True) self._onlineLabel = QtWidgets.QLabel() onlineLabel = QtWidgets.QLabel(self.tr("Current Internet status") + ": ") onlineLabel.setBuddy(self._onlineLabel) layout = QtWidgets.QVBoxLayout() layout.addWidget(introLabel) row = QtWidgets.QHBoxLayout() row.addWidget(onlineLabel) row.addWidget(self._onlineLabel) row.addStretch() layout.addLayout(row) self.setLayout(layout)
def __init__(self, parent=None): super(SelectFilePage, self).__init__(parent) self.setTitle(my.tr("Select game executable")) introLabel = QtWidgets.QLabel(my.tr("Please select the game executable's location")) introLabel.setWordWrap(True) self._edit = QtWidgets.QLineEdit() self._edit.setPlaceholderText(tr_("Location")) self._edit.textChanged.connect(self._validateEdit) self._edit.textChanged.connect(self.completeChanged) self._browseButton = QtWidgets.QPushButton(tr_("Browse") + " ...") skqss.class_(self._browseButton, 'btn btn-info') self._browseButton.clicked.connect(self._browse) #self._applocButton = QtWidgets.QCheckBox(my.tr("Open in Japanese locale (0x0411) using AppLocale")) #self._applocButton.toggled.connect(settings.global_().setApplocEnabled) #self._tzButton = QtWidgets.QCheckBox(my.tr("Open in Japanese time zone (+9 Asia/Tokyo)")) #self._tzButton.toggled.connect(settings.global_().setTimeZoneEnabled) layout = QtWidgets.QVBoxLayout() layout.addWidget(introLabel) row = QtWidgets.QHBoxLayout() row.addWidget(self._edit) row.addWidget(self._browseButton) layout.addLayout(row) #layout.addWidget(self._applocButton) #layout.addWidget(self._tzButton) self.setLayout(layout)
def locationGroup(self): introLabel = QtWidgets.QLabel( my. tr("""You can specify a different executable to launch the game process. By default it is the same as the executable of the game process.""")) introLabel.setWordWrap(True) #launchLabel = QtWidgets.QLabel(mytr_("Launcher")) #launchLabel.setBuddy(self.launchEdit) browseLaunchButton = QtWidgets.QPushButton(tr_("Browse")) browseLaunchButton.clicked.connect(self._browseLaunchPath) skqss.class_(browseLaunchButton, 'btn btn-info') layout = QtWidgets.QVBoxLayout() launchRow = QtWidgets.QHBoxLayout() #launchRow.addWidget(launchLabel) launchRow.addWidget(self.launchEdit) launchRow.addWidget(browseLaunchButton) launchRow.addWidget(self.resetLaunchButton) layout.addLayout(launchRow) layout.addWidget(introLabel) ret = QtWidgets.QGroupBox(my.tr("Alternative launcher location")) ret.setLayout(layout) return ret
def _createUi(self, q): grid = QtWidgets.QGridLayout() grid.setHorizontalSpacing(0) grid.setVerticalSpacing(0) # These keys must be consistent with pyhk KEYBOARD = ( ('Esc', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12'), #'Escape' ('`', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', 'Back'), ('Cap', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '[', ']', '\\'), (None, 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', "'"), # 'Enter', (None, 'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/'), #('Up', 'Down', 'Left', 'Right'), ) r = 0 for keys in KEYBOARD: for col,key in enumerate(keys): if key: btn = self.createKeyButton(key) grid.addWidget(btn, r, col) r += 1 WIDE_COL = 2 KEYBOARD2 = ( ('Shift', 'Ctrl', 'Alt'), # 'Space' ('Insert', 'Delete', 'Home', 'End', 'PageUp', 'PageDown'), #('mouse left', 'mouse middle', 'mouse right'), ) for keys in KEYBOARD2: for i,key in enumerate(keys): col = i * WIDE_COL if key: btn = self.createKeyButton(key) grid.addWidget(btn, r, col, 1, WIDE_COL) r += 1 layout = QtWidgets.QVBoxLayout() layout.addLayout(grid) row = QtWidgets.QHBoxLayout() row.addStretch() row.addWidget(self.delButton) row.addWidget(self.cancelButton) row.addWidget(self.saveButton) layout.addLayout(row) #buttonBox = QtWidgets.QDialogButtonBox() #buttonBox.addButton(self.delButton, buttonBox.ResetRole) #buttonBox.addButton(self.cancelButton, buttonBox.RejectRole) #buttonBox.addButton(self.saveButton, buttonBox.AcceptRole) #layout.addWidget(buttonBox) q.setLayout(layout) shortcut('ctrl+s', self.save, parent=q)
def addressWidget(self): row = QtWidgets.QHBoxLayout() row.addWidget(self.navigationToolBar) row.addWidget(self.addressEdit, 1) row.addWidget(self.optionToolBar) row.setContentsMargins(4, 5, 4, 2) ret = QtWidgets.QWidget() ret.setLayout(row) return ret
def _createUi(self, q): layout = QtWidgets.QVBoxLayout() layout.addWidget(self.textEdit) row = QtWidgets.QHBoxLayout() row.addStretch() row.addWidget(self.pasteButton) row.addWidget(self.saveButton) layout.addLayout(row) q.setLayout(layout)
def createUi(self, q): layout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(self.startButton) row.addWidget(self.stopButton) row.addWidget(self.languageEdit) row.addStretch() row.addWidget(self.ttsButton) layout.addLayout(row) row = QtWidgets.QHBoxLayout() row.addWidget(self.autoStopButton) row.addStretch() row.addWidget(self.deviceEdit) layout.addLayout(row) layout.addWidget(self.textEdit) q.setLayout(layout)
def __init__(self, wiz): super(SelectWindowPage, self).__init__(wiz) self.setTitle(my.tr("Select game window")) introLabel = QtWidgets.QLabel(my.tr( "Press START and CLICK the game window, or press the STOP button to cancel." )) introLabel.setWordWrap(True) self._picker = winpicker.WindowPicker(self) self._picker.windowClicked.connect(self._onWindowClicked) wiz.visibleChanged.connect(self._onVisibleChanged) self._windowEdit = QtWidgets.QLineEdit() self._windowEdit.setReadOnly(True) self._windowEdit.setPlaceholderText(my.tr("Not found, or not a game window")) self._windowEdit.setToolTip(my.tr("Game window")) windowLabel = QtWidgets.QLabel(my.tr("Game window") + ":") windowLabel.setBuddy(self._windowEdit) self._nameEdit = QtWidgets.QLineEdit() self._nameEdit.setReadOnly(True) self._nameEdit.setPlaceholderText(tr_("Not found")) self._nameEdit.setToolTip(tr_("Window title")) nameLabel = QtWidgets.QLabel("=> " + tr_("Window title") + ":") nameLabel.setBuddy(self._nameEdit) self._startButton = QtWidgets.QPushButton("\n\n" + tr_("START") + "\n\n") self._startButton.clicked.connect(self._start) skqss.class_(self._startButton, 'btn btn-primary') self._stopButton = QtWidgets.QPushButton("\n\n" + tr_("STOP") + "\n\n") self._stopButton.clicked.connect(self._stop) skqss.class_(self._stopButton, 'btn btn-danger') layout = QtWidgets.QVBoxLayout() layout.addWidget(introLabel) buttons = QtWidgets.QHBoxLayout() buttons.addWidget(self._startButton) buttons.addWidget(self._stopButton) buttons.setContentsMargins(10,10,10,10) layout.addLayout(buttons) grid = QtWidgets.QGridLayout() # 0 grid.addWidget(windowLabel, 0, 0) grid.addWidget(self._windowEdit, 0, 1) # 1 grid.addWidget(nameLabel) grid.addWidget(self._nameEdit) layout.addLayout(grid) self.setLayout(layout)
def _createUi(self, q): layout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addStretch() row.addWidget(QtWidgets.QLabel(tr_("Language") + ":")) row.addWidget(self.languageEdit) layout.addLayout(row) layout.addWidget(self.contentEdit) row = QtWidgets.QHBoxLayout() row.addWidget(self.browseImageButton) row.addWidget(self.removeImageButton) row.addWidget(self.imageTitleEdit) row.addStretch() #row.addWidget(self.cancelButton) row.addWidget(self.saveButton) layout.addLayout(row) layout.setContentsMargins(5, 5, 5, 5) q.setLayout(layout)
def inspector(self): ret = SkStyleView() skqss.class_(ret, 'texture') layout = QtWidgets.QHBoxLayout() layout.addWidget(self.newPostButton) #layout.addWidget(self.newTopicButton) layout.addStretch() layout.addWidget(self.browseButton) #layout.addWidget(self.gameButton) layout.addWidget(self.refreshButton) ret.setLayout(layout) layout.setContentsMargins(4, 4, 4, 4) return ret
def _createUi(self, q): #url = "http://en.wikipedia.org/wiki/Regular_expression" url = "http://www.regular-expressions.info/lookaround.html" self.textEdit.appendHtml( """You can use this tester to play with the regular expression (<a href="%s">%s</a>) used in the Shared Dictionary. <br/><br/> For example, "regular(?= exp)" will match all "regular" before " exp". """ % (url, url)) self.patternEdit.setText("regular(?= exp)") self.replaceEdit.setText("HELLO WORLD") for sig in ( self.textEdit.textChanged, self.patternEdit.textChanged, self.replaceEdit.textChanged, self.regexCheckBox.toggled, self.icaseCheckBox.toggled, ): sig.connect(self._refresh) layout = QtWidgets.QVBoxLayout() grid = QtWidgets.QGridLayout() # 0 grid.addWidget(create_label(tr_("Pattern")), 0, 0) grid.addWidget(self.patternEdit, 0, 1) # 1 grid.addWidget(create_label(tr_("Translation"))) grid.addWidget(self.replaceEdit) # 2 grid.addWidget(create_label(tr_("Status"))) grid.addWidget(self.messageEdit) layout.addLayout(grid) row = QtWidgets.QHBoxLayout() row.addWidget(self.regexCheckBox) row.addWidget(self.icaseCheckBox) layout.addLayout(row) splitter = QtWidgets.QSplitter(Qt.Vertical) splitter.addWidget(self.textEdit) splitter.addWidget(self.textView) layout.addWidget(splitter) q.setLayout(layout)
def textGroup(self): layout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(QtWidgets.QLabel(tr_("Language") + ":")) row.addWidget(self.languageEdit) row.addStretch() row.addWidget(QtWidgets.QLabel(tr_("Encoding") + ":")) row.addWidget(self.encodingEdit) layout.addLayout(row) ret = QtWidgets.QGroupBox(mytr_("Game language")) ret.setLayout(layout) return ret
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 _createUi(self, q): layout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(self.inputEdit) row.addWidget(self.submitButton) row.addWidget(self.pasteButton) row.addWidget(self.clearButton) row.addWidget(self.speakButton) layout.addLayout(row) layout.addWidget(self.resultEdit) q.setLayout(layout)
def inspector(self): ret = SkStyleView() skqss.class_(ret, 'texture') layout = QtWidgets.QHBoxLayout() layout.addWidget(self.launchButton) layout.addWidget(self.subButton) layout.addWidget(self.topicButton) layout.addWidget(self.nameButton) layout.addStretch() layout.addWidget(self.helpButton) layout.addWidget(self.browseButton) layout.addWidget(self.editButton) layout.addWidget(self.refreshButton) # disabled ret.setLayout(layout) layout.setContentsMargins(4, 4, 4, 4) return ret
def hookGroup(self): layout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(self.hookEdit) row.addWidget(self.hookButton) layout.addLayout(row) label = QtWidgets.QLabel( my. tr("You can edit hook code in Text Settings after the game is launched." )) label.setWordWrap(True) layout.addWidget(label) ret = QtWidgets.QGroupBox( "%s (%s)" % (my.tr("Game-specific hook code"), tr_("read-only"))) ret.setLayout(layout) return ret
def loaderGroup(self): layout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(QtWidgets.QLabel(tr_("Locale") + ":")) row.addWidget(self.launchLanguageEdit) row.addStretch() layout.addLayout(row) layout.addWidget(self.defaultLoaderButton) layout.addWidget(self.disableLoaderButton) layout.addWidget(self.applocButton) layout.addWidget(self.localeEmulatorButton) layout.addWidget(self.ntleasButton) layout.addWidget(self.ntleaButton) layout.addWidget(self.localeSwitchButton) ret = QtWidgets.QGroupBox(my.tr("Preferred game loader")) ret.setLayout(layout) return ret
def _createUi(self, q): layout = QtWidgets.QVBoxLayout() b = cancelButton = QtWidgets.QPushButton(tr_("Cancel")) skqss.class_(b, 'btn btn-default') b.clicked.connect(q.hide) b = updateButton = QtWidgets.QPushButton(tr_("Update")) b.setToolTip(tr_("Update")) skqss.class_(updateButton, 'btn btn-primary') b.clicked.connect(q.hide) b.clicked.connect(self.openUpdate) b.setDefault(True) infoLabel = QtWidgets.QLabel( my.tr("""Found new updates for Visual Novel Reader. Do you want to update now? You can find recent changes here:""")) layout.addWidget(infoLabel) linkstyle = 'color:#428bca' # bootstrap btn-link url = 'http://sakuradite.com/changes/vnr' changesLabel = QtWidgets.QLabel( '<a href="{1}" style="{0}">{1}</a>'.format(linkstyle, url)) changesLabel.setOpenExternalLinks(True) changesLabel.setAlignment(Qt.AlignHCenter) changesLabel.setToolTip(tr_("Recent changes")) layout.addWidget(changesLabel) layout.addStretch() row = QtWidgets.QHBoxLayout() row.addStretch() row.addWidget(cancelButton) row.addWidget(updateButton) layout.addLayout(row) q.setLayout(layout)
def __init__(self, parent=None): super(SelectProcessPage, self).__init__(parent) self.setTitle(my.tr("Select game process")) introLabel = QtWidgets.QLabel(my.tr("Please select game process")) introLabel.setWordWrap(True) self._refreshButton = QtWidgets.QPushButton(tr_("Refresh")) self._refreshButton.clicked.connect(self._refresh) skqss.class_(self._refreshButton, 'btn btn-success') self._table = SkFilterTableController(self) self._table.currentIndexChanged.connect(self.completeChanged) layout = QtWidgets.QVBoxLayout() layout.addWidget(introLabel) layout.addWidget(self._table.view()) search = QtWidgets.QHBoxLayout() search.addWidget(self._table.filterEdit()) search.addWidget(self._table.countLabel()) search.addWidget(self._refreshButton) layout.addLayout(search) self.setLayout(layout)
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 _createUi(self, q): layout = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(self.translateButton) row.addWidget(self.pasteButton) row.addWidget(self.speakButton) row.addWidget(self.translatorEdit) row.addWidget(self.fromLanguageEdit) row.addWidget(QtWidgets.QLabel(_RIGHTARROW)) row.addWidget(self.toLanguageEdit) row.addWidget(QtWidgets.QLabel("(")) row.addWidget(self.translatorLabel) #row.addWidget(QtWidgets.QLabel(":")) row.addWidget(self.fromLanguageLabel) row.addWidget(QtWidgets.QLabel(_RIGHTARROW)) row.addWidget(self.toLanguageLabel) row.addWidget(QtWidgets.QLabel(")")) #row.addWidget(QtWidgets.QLabel(my.tr("Current game") + ":")) #row.addWidget(QtWidgets.QLabel("#")) row.addWidget(self.gameLabel) row.addStretch() row.addWidget(self.markButton) layout.addLayout(row) # First row grid = QtWidgets.QGridLayout() r = 0 c = 0 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.textLabel) cell.addWidget(self.textEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_RIGHTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(self.gameTextButton) row.addWidget(self.gameTextLabel) row.addStretch() cell.addLayout(row) cell.addWidget(self.gameTextEdit) grid.addLayout(cell, r, c) c += 2 # skip two columns c += 1 grid.addWidget(QtWidgets.QLabel(_RIGHTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() row = QtWidgets.QHBoxLayout() row.addWidget(self.normalizedTextButton) row.addWidget(self.normalizedTextLabel) row.addStretch() cell.addLayout(row) cell.addWidget(self.normalizedTextEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_RIGHTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.inputTextLabel) cell.addWidget(self.inputTextEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_RIGHTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.encodedTextLabel) cell.addWidget(self.encodedTextEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_RIGHTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.delegateTextLabel) cell.addWidget(self.delegateTextEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_RIGHTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.splitTextLabel) cell.addWidget(self.splitTextEdit) grid.addLayout(cell, r, c) # Second row r += 1 c = 0 label = QtWidgets.QLabel(_DOWNARROW) label.setAlignment(Qt.AlignCenter) grid.addWidget(label, r, c) c = 6 * 2 - 2 # totally six columns label = QtWidgets.QLabel(_DOWNARROW) label.setAlignment(Qt.AlignCenter) grid.addWidget(label, r, c) # Third row r += 1 c = 0 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.directTranslationLabel) cell.addWidget(self.directTranslationEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(self.equalLabel, r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.finalTranslationLabel) cell.addWidget(self.finalTranslationEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_LEFTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.outputTranslationLabel) cell.addWidget(self.outputTranslationEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_LEFTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.decodedTranslationLabel) cell.addWidget(self.decodedTranslationEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_LEFTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.outputSyntacticTranslationLabel) cell.addWidget(self.outputSyntacticTranslationEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_LEFTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.delegateTranslationLabel) cell.addWidget(self.delegateTranslationEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_LEFTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.jointTranslationLabel) cell.addWidget(self.jointTranslationEdit) grid.addLayout(cell, r, c) c += 1 grid.addWidget(QtWidgets.QLabel(_LEFTARROW), r, c) c += 1 cell = QtWidgets.QVBoxLayout() cell.addWidget(self.splitTranslationLabel) cell.addWidget(self.splitTranslationEdit) grid.addLayout(cell, r, c) layout.addLayout(grid) # Footer layout.addWidget( QtWidgets.QLabel( "%s: %s" % (tr_("Note"), my. tr("Procedures marked as {0} would utilize Shared Dictionary." ).format(_TERM_STAR)))) #my.tr("Procedures marked as {0} behave differently for different user languages.").format(_LANGUAGE_STAR)))))) 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 _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): #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 _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)