added addEntrybox
This commit is contained in:
@ -1,5 +1,5 @@
|
|||||||
from PyQt5.QtGui import QKeySequence
|
from PyQt5.QtGui import QKeySequence, QIntValidator
|
||||||
from PyQt5.QtWidgets import QAction, QActionGroup
|
from PyQt5.QtWidgets import QAction, QActionGroup, QWidgetAction, QLineEdit
|
||||||
|
|
||||||
|
|
||||||
class MenuBase:
|
class MenuBase:
|
||||||
@ -31,6 +31,48 @@ class MenuBase:
|
|||||||
self.checkboxes[name] = action
|
self.checkboxes[name] = action
|
||||||
return action
|
return action
|
||||||
|
|
||||||
|
|
||||||
|
def addEntrybox(self, name, placeholder=None, state=False, triggered=None):
|
||||||
|
cb = self.addCheckbox(name, state=state)
|
||||||
|
|
||||||
|
edit = QLineEdit(self.qmenu)
|
||||||
|
edit.setValidator(QIntValidator()) #TODO: make optional
|
||||||
|
edit.setEnabled(state)
|
||||||
|
if placeholder:
|
||||||
|
edit.setPlaceholderText(placeholder)
|
||||||
|
edit.setContentsMargins(8, 5, 8, 5) # mimic margins of other actions TODO: this probably depends on the theme
|
||||||
|
|
||||||
|
@cb.toggled.connect
|
||||||
|
def propagate_state_and_keep_menu_open_and_focus_edit(checked):
|
||||||
|
edit.setEnabled(checked)
|
||||||
|
if checked:
|
||||||
|
self.qmenu.show()
|
||||||
|
self.qmenu.setActiveAction(cb)
|
||||||
|
edit.setFocus()
|
||||||
|
|
||||||
|
@edit.returnPressed.connect
|
||||||
|
def close_menu():
|
||||||
|
self.qmenu.close()
|
||||||
|
|
||||||
|
if triggered:
|
||||||
|
@cb.triggered.connect
|
||||||
|
def confirm_disabled(checked):
|
||||||
|
if not checked:
|
||||||
|
triggered(None)
|
||||||
|
|
||||||
|
if triggered:
|
||||||
|
@edit.returnPressed.connect
|
||||||
|
def confirm_value():
|
||||||
|
value = edit.text()
|
||||||
|
value = int(value)
|
||||||
|
triggered(value)
|
||||||
|
|
||||||
|
action = QWidgetAction(self.qmenu)
|
||||||
|
action.setDefaultWidget(edit)
|
||||||
|
self.qmenu.addAction(action)
|
||||||
|
return action
|
||||||
|
|
||||||
|
|
||||||
def addSeparator(self):
|
def addSeparator(self):
|
||||||
self.qmenu.addSeparator()
|
self.qmenu.addSeparator()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user