dynamic lexer list

This commit is contained in:
2026-02-01 15:56:33 +08:00
parent 480d628260
commit 7962974bc4
2 changed files with 362 additions and 379 deletions

View File

@@ -114,11 +114,16 @@ void MainWindow::setupActions()
} }
}); });
QMetaObject::invokeMethod(this, [this](){
auto lexerGroupListActions = QList<QAction*>();
for (const QChar &group : LexerGroupActionMenu::groups()) { for (const QChar &group : LexerGroupActionMenu::groups()) {
LexerGroupActionMenu *lexerGroupMenu = new LexerGroupActionMenu(group.toUpper(), group, this); auto *lexerGroupMenu = new LexerGroupActionMenu(group.toUpper(), group, this);
actionCollection()->addAction(QStringLiteral("lexer_group_") % group, lexerGroupMenu);
connect(lexerGroupMenu, &LexerGroupActionMenu::lexerSelected, this, &MainWindow::applyLexer); connect(lexerGroupMenu, &LexerGroupActionMenu::lexerSelected, this, &MainWindow::applyLexer);
lexerGroupListActions.append(lexerGroupMenu);
} }
unplugActionList("lexer_group_list");
plugActionList(QStringLiteral("lexer_group_list"), lexerGroupListActions);
}, Qt::QueuedConnection);
// Toolbar actions // Toolbar actions
KStandardAction::zoomIn(this, [this](){ KStandardAction::zoomIn(this, [this](){

View File

@@ -33,29 +33,7 @@ Template: https://github.com/KDE/kxmlgui/blob/master/src/ui_standards.rc
<Menu name="language"><text>&amp;Language</text> <Menu name="language"><text>&amp;Language</text>
<Action name="lexer_none" /> <Action name="lexer_none" />
<Separator/> <Separator/>
<!-- FIXME: those lexer_group_ actions should be exclude from Edit ToolBar dialog --> <ActionList name="lexer_group_list" />
<Action name="lexer_group_a" />
<Action name="lexer_group_b" />
<Action name="lexer_group_c" />
<Action name="lexer_group_d" />
<Action name="lexer_group_e" />
<Action name="lexer_group_f" />
<Action name="lexer_group_g" />
<Action name="lexer_group_h" />
<Action name="lexer_group_i" />
<Action name="lexer_group_j" />
<Action name="lexer_group_k" />
<Action name="lexer_group_l" />
<Action name="lexer_group_m" />
<Action name="lexer_group_n" />
<Action name="lexer_group_o" />
<Action name="lexer_group_p" />
<Action name="lexer_group_r" />
<Action name="lexer_group_s" />
<Action name="lexer_group_t" />
<Action name="lexer_group_v" />
<Action name="lexer_group_x" />
<Action name="lexer_group_y" />
</Menu> </Menu>
<Menu name="settings"> <Menu name="settings">
<Action name="colorscheme_menu"/> <Action name="colorscheme_menu"/>