Exemplo n.º 1
0
 def textLabel(self):
     text = my.tr("Original text")
     ret = QtWidgets.QLabel()
     ret.setText('<span style="color:blue">%s</span>' % text)
     ret.setToolTip(my.tr("Original text to translate"))
     self.textEdit.textChanged.connect(lambda: ret.setText(
         '<span style="color:blue">%s</span> (<span style="color:purple">%s</span>)'
         % (
             text,
             len(self.textEdit.toPlainText().strip()),
         )))
     return ret
Exemplo n.º 2
0
def show(text, key=None):
    w = SHOW_WIDGETS.get(key)
    if not w:
        from Qt5 import QtWidgets
        SHOW_WIDGETS[key] = w = QtWidgets.QTextEdit()
        w.setAcceptRichText(False)
    if not isinstance(text, basestring):
        import json
        text = json.dumps(text, indent=2, ensure_ascii=False)
    w.setWindowTitle("key: %s" % key)
    w.setPlainText(text)
    w.show()
Exemplo n.º 3
0
 def textEdit(self):
     placeholder = "http://youtube.com/watch?v=lmOZEAAEMK0"
     #ret = QtWidgets.QPlainTextEdit(placeholder)
     ret = QtWidgets.QTextEdit(
         placeholder)  # QTextEdit is needed for syntax highlighter
     ret.setToolTip(my.tr("Text contains YouTube video IDs"))
     ret.setAcceptRichText(False)
     # Not enabled for performance reason
     #ret.textChanged.connect(self._refreshSaveButton)
     from qthls.youtube import YouTubeHighlighter
     YouTubeHighlighter(ret)
     return ret
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
 def resultEdit(self):
     ret = QtWidgets.QTextBrowser()
     ret.setAcceptRichText(False)
     skqss.class_(ret, 'texture-inverse')
     #skqss.class_(ret, 'texture')
     #skqss.class_(ret, 'normal')
     #ret.setToolTip(tr_("Result"))
     ret.setReadOnly(True)
     ret.setPlainText(EMPTY_PLACEHOLDER)
     ret.setStyleSheet(CSS_TEXTEDIT)
     import osutil
     ret.anchorClicked.connect(osutil.open_url)
     return ret
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    def __init__(self, q):
        self.sourceModel = QtGui.QStandardItemModel(q)

        self.proxyModel = SkMultiFilterProxyModel(q)
        self.proxyModel.setDynamicSortFilter(True)
        self.proxyModel.setSortCaseSensitivity(Qt.CaseInsensitive)
        self.proxyModel.setSourceModel(self.sourceModel)

        q_parent = q.parent()
        self._parentWidget = q_parent if isinstance(
            q_parent, QtWidgets.QWidget) else None
        self.treeView = QtWidgets.QTreeView(self._parentWidget)
        self.treeView.setRootIsDecorated(True)
        self.treeView.setAlternatingRowColors(True)
        self.treeView.setSortingEnabled(True)
        self.treeView.setModel(self.proxyModel)

        self.filterEdit = QtWidgets.QLineEdit()
        self.filterEdit.setPlaceholderText(tr_("Search"))
        self.filterEdit.setToolTip("%s (%s, %s)" %
                                   (tr_("Search"), tr_("case-insensitive"),
                                    tr_("regular expression")))

        self.countLabel = QtWidgets.QLabel()
        #self.countLabel.setToolTip(self.q.tr("Count"))

        # Connections

        # See: http://www.qtcentre.org/threads/2603-currentChanged-protected-slot-cant-get-working
        #self.treeView.activated.connect(q.currentIndexChanged)
        #self.treeView.clicked.connect(q.currentIndexChanged)
        self.selectionModel = self.treeView.selectionModel(
        )  # increase reference counting
        self.selectionModel.currentChanged.connect(q.currentIndexChanged)

        self.filterEdit.textChanged.connect(self._updateFilter)
        self.filterEdit.textChanged.connect(self._updateCount)

        self.sourceModel.dataChanged.connect(self._updateCount)
Exemplo n.º 8
0
def shortcut(key, slot, parent=None):
    """
  @param  key  str or QKeySequence
  @param  slot  function
  @param  parent  QWidget
  @return QShortcut
  """
    if (parent is None and hasattr(slot, '__self__')
            and isinstance(slot.__self__, QtWidgets.QWidget)):
        parent = slot.__self__
    if not isinstance(key, QtGui.QKeySequence):
        key = QtGui.QKeySequence(key)
    return QtWidgets.QShortcut(key, parent, slot)
Exemplo n.º 9
0
  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)
Exemplo n.º 10
0
 def _createTextLabel(cls, edit, text='', tip=''):
     """
 @param  edit  QTextEdit
 @param* text  unicode
 @param* tip  unicode
 @return  QLabel
 """
     text = text or edit.toolTip()
     tip = tip or edit.toolTip()
     ret = QtWidgets.QLabel()
     ret.setText(text)
     ret.setToolTip(tip)
     edit.textChanged.connect(
         partial(cls._refreshTextLabel, ret, edit, text))
     return ret
Exemplo n.º 11
0
 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
Exemplo n.º 12
0
    def languageEdit(self):
        ret = QtWidgets.QComboBox()
        ret.setEditable(False)
        ret.addItems(map(i18n.language_name2, config.LANGUAGES))
        ret.setMaxVisibleItems(ret.count())

        import settings
        try:
            langIndex = config.LANGUAGES.index(
                settings.global_().speechRecognitionLanguage())
        except ValueError:
            langIndex = 0  # 'ja'
        ret.setCurrentIndex(langIndex)

        ret.currentIndexChanged.connect(self._saveLanguage)
        return ret
Exemplo n.º 13
0
    def optionMenu(self):
        ret = QtWidgets.QMenu(self.q)

        #a = ret.addAction(rc.standard_icon(QtWidgets.QStyle.SP_DialogHelpButton), tr_("Help"))
        a = ret.addAction(tr_("Preferences"))
        a.triggered.connect(self._openSettingsPage)
        a.setToolTip("about:settings")

        #a = ret.addAction(rc.standard_icon(QtWidgets.QStyle.SP_DialogHelpButton), tr_("Help"))
        a = ret.addAction(tr_("Help"))
        a.triggered.connect(self._openHelpPage)
        a.setToolTip("about:help")

        a = ret.addAction(tr_("About"))
        a.triggered.connect(self._openAboutPage)
        a.setToolTip("about:version")
        return ret
Exemplo n.º 14
0
 def createKeyButton(self,
                     key,
                     group='key',
                     styleClass='btn btn-default'):  # str -> QPushButton
     ret = QtWidgets.QPushButton(i18n.key_name(key))
     ret.setToolTip(key)
     if styleClass:
         skqss.class_(ret, styleClass)
     ret.setCheckable(True)
     ret.value = key  # str
     ret.clicked.connect(
         partial(
             lambda ret, key, group: self.updateCurrentValue(
                 key, toggled=ret.isChecked(), group=group), ret, key,
             group))
     self.keyButtons[group].append(ret)
     return ret
Exemplo n.º 15
0
    def gameLabel(self):
        import dataman
        dm = dataman.manager()
        ret = QtWidgets.QLabel()
        ret.setToolTip(
            my.
            tr("Current game for game-specific definitions in the Shared Dictionary"
               ))

        def _refresh():
            ret.setText('#' + (dm.currentGameName() or my.tr("Unknown game")))
            skqss.class_(ret,
                         'text-error' if dm.currentGame() else 'text-info')

        _refresh()
        dm.currentGameChanged.connect(_refresh)
        return ret
Exemplo n.º 16
0
    def annotMenu(self):
        ret = QtWidgets.QMenu(self.q)

        ss = settings.global_()

        a = ret.addAction(i18n.tr("Display furigana"))
        a.setCheckable(True)
        a.setEnabled(self._jlpAvailable)
        a.setChecked(self._rubyEnabled)
        a.triggered[bool].connect(ss.setRubyEnabled)
        a.triggered[bool].connect(self._setRubyEnabled)
        a.triggered.connect(self._refreshAnnotAct)

        a = self.fullTranslationAct = ret.addAction(
            i18n.tr("Display translation"))
        a.setCheckable(True)
        a.setEnabled(self._translatorAvailable)
        a.setChecked(self._fullTranslationEnabled)
        a.triggered[bool].connect(ss.setFullTranslationEnabled)
        a.triggered[bool].connect(self._setFullTranslationEnabled)
        a.triggered.connect(self._refreshAnnotAct)

        a = self.translationTipAct = ret.addAction(
            i18n.tr("Popup translation when hover"))
        a.setCheckable(True)
        a.setEnabled(self._translatorAvailable)
        a.setChecked(self._translationTipEnabled)
        a.triggered[bool].connect(ss.setTranslationTipEnabled)
        a.triggered[bool].connect(self._setTranslationTipEnabled)
        a.triggered.connect(self._refreshAnnotAct)

        ret.addSeparator()

        a = self.ttsAct = ret.addAction(
            i18n.tr("Text-to-speech when click"))  # おんぷ
        a.setCheckable(True)
        a.setEnabled(self._ttsAvailable)
        a.setChecked(self._ttsEnabled)
        a.triggered[bool].connect(ss.setTtsEnabled)
        a.triggered[bool].connect(self._setTtsEnabled)
        a.setVisible(skos.WIN)  # only enabled on Windows
        a.triggered.connect(self._refreshAnnotAct)

        return ret
Exemplo n.º 17
0
    def targetLanguageEdit(self):
        ret = QtWidgets.QComboBox()
        ret.setEditable(False)

        #items = map(i18n.language_name, config.LANGUAGES)
        items = [
            tr_("All languages") if it == 'ja' else i18n.language_name(it)
            for it in config.LANGUAGES
        ]
        ret.addItems(items)
        ret.setMaxVisibleItems(ret.count())
        ret.setMaximumWidth(COMBOBOX_MAXWIDTH)

        index = config.LANGUAGES.index(dataman.manager().user().language)
        ret.setCurrentIndex(index)

        ret.currentIndexChanged.connect(self._refreshStatus)
        ret.currentIndexChanged.connect(self._refreshYomi)
        return ret
Exemplo n.º 18
0
 def _createTextView(tip='', rich=False):
     """
 @param* tip  unicode
 @param* rich  enable richText
 @return  QTextEdit
 """
     if rich:
         #ret = QtWidgets.QTextEdit(_EMPTY_TEXT)
         ret = skwidgets.SkTextEditWithAnchor(_EMPTY_TEXT)
         ret.anchorClicked.connect(evalutil.evalurl)
     else:
         ret = QtWidgets.QPlainTextEdit(_EMPTY_TEXT)
     ret.setMinimumWidth(_TEXTEDIT_MINWIDTH)
     ret.setMinimumHeight(_TEXTEDIT_MINHEIGHT)
     if tip:
         ret.setToolTip(tip)
     #ret.setAcceptRichText(False)
     #ret.setReadOnly(True)
     skqss.class_(ret, 'text-muted')
     #ret.resize(300, 200)
     return ret
Exemplo n.º 19
0
    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)
Exemplo n.º 20
0
  def __init__(self, parent=None):
    super(ChooseMeansPage, self).__init__(parent)
    self.setTitle(my.tr("Select how to find the game"))

    introLabel = QtWidgets.QLabel(my.tr("How would you like to select the game?"))
    introLabel.setWordWrap(True)

    self._windowButton = QtWidgets.QRadioButton(my.tr("Select the window of the running game") + " (%s)" % tr_("recommended"))
    self._windowButton.setToolTip("Alt+1")
    self._windowButton.clicked.connect(self.completeChanged)

    self._processButton = QtWidgets.QRadioButton(my.tr("Select the process of the running game"))
    self._processButton.setToolTip("Alt+2")
    self._processButton.clicked.connect(self.completeChanged)

    self._fileButton = QtWidgets.QRadioButton(my.tr("Select the game executable file on the hard drive"))
    self._fileButton.setToolTip("Alt+3")
    self._fileButton.clicked.connect(self.completeChanged)

    skwidgets.shortcut("alt+1", self._windowButton.click)
    skwidgets.shortcut("alt+2", self._processButton.click)
    skwidgets.shortcut("alt+3", self._fileButton.click)

    infoLabel = QtWidgets.QLabel("\n" + my.tr(
      "By the way, you can also drag the game's exe/lnk to the SpringBoard, which is equivalent to #3 (select by file)."
    ))

    infoLabel.setWordWrap(True)

    layout = QtWidgets.QVBoxLayout()
    layout.addWidget(introLabel)
    if not features.WINE:
      layout.addWidget(self._windowButton)
    layout.addWidget(self._processButton)
    layout.addWidget(self._fileButton)
    layout.addWidget(infoLabel)
    self.setLayout(layout)
Exemplo n.º 21
0
 def infoGroup(self):
     layout = QtWidgets.QVBoxLayout()
     layout.addWidget(self.nameEdit)
     ret = QtWidgets.QGroupBox(my.tr("Dashboard display name"))
     ret.setLayout(layout)
     return ret
Exemplo n.º 22
0
 def disableTimeZoneButton(self):
     ret = QtWidgets.QRadioButton("%s (%s)" %
                                  (my.tr("Launch the game in current time"),
                                   my.tr("do NOT change time zone")))
     ret.toggled.connect(self._saveTimeZone)
     return ret
Exemplo n.º 23
0
 def enableTimeZoneButton(self):
     ret = QtWidgets.QRadioButton("%s (%s)" %
                                  (my.tr("Launch the game in Japan time"),
                                   my.tr("DO change time zone")))
     ret.toggled.connect(self._saveTimeZone)
     return ret
Exemplo n.º 24
0
 def ntleaButton(self):
     ret = QtWidgets.QRadioButton(
         my.tr("Use {0} to change game locale").format(notr_("NTLEA")))
     ret.toggled.connect(self._saveLoader)
     return ret
Exemplo n.º 25
0
 def applocButton(self):
     ret = QtWidgets.QRadioButton(
         "%s (%s)" % (my.tr("Use {0} to change game locale").format(
             notr_("AppLocale")), tr_("download")))
     ret.toggled.connect(self._saveLoader)
     return ret
Exemplo n.º 26
0
 def disableLoaderButton(self):
     ret = QtWidgets.QRadioButton(
         "%s (%s)" % (my.tr("Launch the game WITHOUT loader"),
                      my.tr("for Windows with Japanese locale")))
     ret.toggled.connect(self._saveLoader)
     return ret
Exemplo n.º 27
0
 def resetLaunchButton(self):
     ret = QtWidgets.QPushButton(tr_("Reset"))
     ret.clicked.connect(self._resetLaunchPath)
     skqss.class_(ret, 'btn btn-danger')
     return ret
Exemplo n.º 28
0
 def embedEnableButton(self):
     ret = QtWidgets.QCheckBox(
         "%s (%s)" % (my.tr("Allow embedding translation when possible"),
                      tr_("default")))
     ret.clicked.connect(self._saveEmbedSettings)
     return ret
Exemplo n.º 29
0
 def hookButton(self):
     ret = QtWidgets.QCheckBox(tr_("Enable"))
     ret.toggled.connect(self._saveHookButton)
     return ret
Exemplo n.º 30
0
def create_label(text=""):  # unicode -> QLabel
    ret = QtWidgets.QLabel()
    if text:
        ret.setText(text + ":")
    ret.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
    return ret