linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #06949
[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3307: plugin menus
------------------------------------------------------------
revno: 3307
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Mon 2013-06-03 14:14:18 +0200
message:
plugin menus
modified:
win32/MainWindow.cpp
win32/MainWindow.h
win32/PluginApiWin.cpp
--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk
Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'win32/MainWindow.cpp'
--- win32/MainWindow.cpp 2013-05-14 23:30:49 +0000
+++ win32/MainWindow.cpp 2013-06-03 12:14:18 +0000
@@ -668,8 +668,7 @@
pluginCommands[guid][text] = make_pair(command, icon);
if(WinUtil::mainWindow && !WinUtil::mainWindow->closing()) {
- WinUtil::mainWindow->pluginMenu->clear();
- WinUtil::mainWindow->addPluginCommands(WinUtil::mainWindow->pluginMenu);
+ WinUtil::mainWindow->refreshPluginMenu();
}
}
@@ -687,11 +686,15 @@
}
if(WinUtil::mainWindow && !WinUtil::mainWindow->closing()) {
- WinUtil::mainWindow->pluginMenu->clear();
- WinUtil::mainWindow->addPluginCommands(WinUtil::mainWindow->pluginMenu);
+ WinUtil::mainWindow->refreshPluginMenu();
}
}
+void MainWindow::refreshPluginMenu() {
+ pluginMenu->clear();
+ addPluginCommands(pluginMenu);
+}
+
void MainWindow::addPluginCommands(Menu* menu) {
menu->appendItem(T_("Add"), [this] { PluginUtils::addPlugin(this); });
menu->appendItem(T_("Configure"), [this] { handlePluginSettings(); });
@@ -703,12 +706,13 @@
for(auto& guid: plugins) {
auto sub = menu->appendPopup(Text::toT(PluginManager::getInstance()->getPlugin(guid).name));
- sub->appendItem(T_("Configure"), [this, guid] { PluginUtils::configPlugin(guid, this); });
- if(PluginManager::getInstance()->isLoaded(guid)) {
- sub->appendItem(T_("Disable"), [this, guid] { PluginUtils::disablePlugin(guid, this); });
- } else {
- sub->appendItem(T_("Enable"), [this, guid] { PluginUtils::enablePlugin(guid, this); });
- }
+
+ const auto enabled = PluginManager::getInstance()->isLoaded(guid);
+ sub->appendItem(T_("Enable"), [this, guid] { PluginUtils::enablePlugin(guid, this); }, nullptr, !enabled);
+ sub->appendItem(T_("Disable"), [this, guid] { PluginUtils::disablePlugin(guid, this); }, nullptr, enabled);
+
+ sub->appendSeparator();
+ sub->appendItem(T_("Configure"), [this, guid] { PluginUtils::configPlugin(guid, this); }, nullptr, enabled);
auto commandIt = pluginCommands.find(guid);
if(commandIt != pluginCommands.end()) {
@@ -1320,8 +1324,7 @@
if(SETTING(SETTINGS_SAVE_INTERVAL) != prevSettingsSave)
setSaveTimer();
- pluginMenu->clear();
- addPluginCommands(pluginMenu);
+ refreshPluginMenu();
}
}
=== modified file 'win32/MainWindow.h'
--- win32/MainWindow.h 2013-05-14 23:30:49 +0000
+++ win32/MainWindow.h 2013-06-03 12:14:18 +0000
@@ -70,6 +70,7 @@
static void addPluginCommand(const string& guid, const tstring& text, function<void ()> command, const tstring& icon);
static void removePluginCommand(const string& guid, const tstring& text);
+ void refreshPluginMenu();
/** show a balloon popup. refer to the dwt::Notification::addMessage doc for info about parameters. */
void notify(const tstring& title, const tstring& message, function<void ()> callback = nullptr, const dwt::IconPtr& balloonIcon = nullptr);
=== modified file 'win32/PluginApiWin.cpp'
--- win32/PluginApiWin.cpp 2013-05-14 21:10:23 +0000
+++ win32/PluginApiWin.cpp 2013-06-03 12:14:18 +0000
@@ -75,6 +75,7 @@
auto path = Text::fromT(path_t);
if(Util::getFileExt(path) == ".dcext") {
PluginInfoDlg(w, path).run();
+ WinUtil::mainWindow->refreshPluginMenu();
} else {
try {
PluginManager::getInstance()->addPlugin(path);
@@ -91,12 +92,15 @@
dwt::MessageBox(w).show(
str(TF_("%1% doesn't need any additional configuration") % Text::toT(PluginManager::getInstance()->getPlugin(guid).name)),
_T(APPNAME) _T(" ") _T(VERSIONSTRING), dwt::MessageBox::BOX_OK, dwt::MessageBox::BOX_ICONINFORMATION);
+ return;
}
+ WinUtil::mainWindow->refreshPluginMenu();
}
void PluginUtils::enablePlugin(const string& guid, dwt::Widget* w) {
try {
PluginManager::getInstance()->enablePlugin(guid);
+ WinUtil::mainWindow->refreshPluginMenu();
} catch(const Exception& e) {
dwt::MessageBox(w).show(tstring(T_("Cannot enable the plugin:")) + _T("\r\n\r\n") + Text::toT(e.getError()),
Text::toT(PluginManager::getInstance()->getPlugin(guid).name), dwt::MessageBox::BOX_OK, dwt::MessageBox::BOX_ICONSTOP);
@@ -105,4 +109,5 @@
void PluginUtils::disablePlugin(const string& guid, dwt::Widget*) {
PluginManager::getInstance()->disablePlugin(guid);
+ WinUtil::mainWindow->refreshPluginMenu();
}