[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [rkward/development/plugin_management_to_loadlibs] rkward: Move pluginmap management to the load lib
From:       Thomas Friedrichsmeier <thomas.friedrichsmeier () ruhr-uni-bochum ! de>
Date:       2014-12-31 21:02:48
Message-ID: E1Y6QPo-00081s-8r () scm ! kde ! org
[Download RAW message or body]

Git commit 55da894fc726f903d84f54ccf70ed909a62fffdf by Thomas Friedrichsmeier.
Committed on 31/12/2014 at 20:56.
Pushed by tfry into branch 'development/plugin_management_to_loadlibs'.

Move pluginmap management to the load libs dialog for good.

M  +41   -16   rkward/dialogs/rkloadlibsdialog.cpp
M  +5    -0    rkward/dialogs/rkloadlibsdialog.h
M  +17   -15   rkward/settings/rksettingsmoduleplugins.cpp
M  +4    -2    rkward/settings/rksettingsmoduleplugins.h

http://commits.kde.org/rkward/55da894fc726f903d84f54ccf70ed909a62fffdf

diff --git a/rkward/dialogs/rkloadlibsdialog.cpp \
b/rkward/dialogs/rkloadlibsdialog.cpp index 63c6078..fd6df3d 100644
--- a/rkward/dialogs/rkloadlibsdialog.cpp
+++ b/rkward/dialogs/rkloadlibsdialog.cpp
@@ -64,13 +64,13 @@ RKLoadLibsDialog::RKLoadLibsDialog (QWidget *parent, \
RCommandChain *chain, bool  setButtons (KDialog::Ok | KDialog::Apply | \
KDialog::Cancel);  
 	LoadUnloadWidget *luwidget = new LoadUnloadWidget (this);
-	addPage (luwidget, i18n ("Local packages"));
+	addChild (luwidget, i18n ("Local packages"));
 	connect (this, SIGNAL (installedPackagesChanged()), luwidget, SLOT \
(updateInstalledPackages()));  
 	install_packages_widget = new InstallPackagesWidget (this);
-	install_packages_pageitem = addPage (install_packages_widget, i18n ("Install / \
Update / Remove")); +	install_packages_pageitem = addChild (install_packages_widget, \
i18n ("Install / Update / Remove"));  
-	addPage (new RKPluginMapSelectionWidget (this), i18n ("Manage Plugins"));
+	configure_pluginmaps_pageitem = addChild (new RKPluginMapSelectionWidget (this), \
i18n ("Manage Plugins"));  
 	connect (this, SIGNAL (currentPageChanged(KPageWidgetItem*,KPageWidgetItem*)), \
this, SLOT (slotPageChanged()));  QTimer::singleShot (0, this, SLOT \
(slotPageChanged())); @@ -87,6 +87,16 @@ RKLoadLibsDialog::~RKLoadLibsDialog () {
 	else KPageDialog::reject ();
 }
 
+KPageWidgetItem* RKLoadLibsDialog::addChild (QWidget *child_page, const QString \
&caption) { +	RK_TRACE (DIALOGS);
+
+	connect (this, SIGNAL (okClicked()), child_page, SLOT (ok()));
+	connect (this, SIGNAL (applyClicked()), child_page, SLOT (apply()));
+	connect (this, SIGNAL (cancelClicked()), child_page, SLOT (cancel()));
+	connect (child_page, SIGNAL (destroyed()), this, SLOT (childDeleted()));
+	return addPage (child_page, caption);
+}
+
 void RKLoadLibsDialog::slotPageChanged () {
 	RK_TRACE (DIALOGS);
 
@@ -106,6 +116,15 @@ void RKLoadLibsDialog::showInstallPackagesModal (QWidget \
*parent, RCommandChain  RK_TRACE (DIALOGS);
 }
 
+// static
+void RKLoadLibsDialog::showPluginmapConfig (QWidget* parent, RCommandChain* chain) {
+	RK_TRACE (DIALOGS);
+
+	RKLoadLibsDialog *dialog = new RKLoadLibsDialog (parent, chain, false);
+	dialog->setCurrentPage (dialog->configure_pluginmaps_pageitem);
+	dialog->show ();
+}
+
 void RKLoadLibsDialog::automatedInstall () {
 	RK_TRACE (DIALOGS);
 
@@ -429,11 +448,6 @@ LoadUnloadWidget::LoadUnloadWidget (RKLoadLibsDialog *dialog) : \
QWidget (0) {  connect (loaded_view, SIGNAL (itemSelectionChanged()), this, SLOT \
(updateButtons()));  connect (installed_view, SIGNAL (itemSelectionChanged()), this, \
SLOT (updateButtons()));  
-	connect (dialog, SIGNAL (okClicked()), this, SLOT (ok()));
-	connect (dialog, SIGNAL (applyClicked()), this, SLOT (apply()));
-	connect (dialog, SIGNAL (cancelClicked()), this, SLOT (cancel()));
-	connect (this, SIGNAL (destroyed()), dialog, SLOT (childDeleted()));
-
 	updateInstalledPackages ();
 	updateButtons ();
 }
@@ -674,11 +688,6 @@ InstallPackagesWidget::InstallPackagesWidget (RKLoadLibsDialog \
*dialog) : QWidge  buttonvbox->addStretch (1);
 	buttonvbox->addWidget (install_params);
 	buttonvbox->addStretch (1);
-
-	connect (dialog, SIGNAL (okClicked()), this, SLOT (ok()));
-	connect (dialog, SIGNAL (applyClicked()), this, SLOT (apply()));
-	connect (dialog, SIGNAL (cancelClicked()), this, SLOT (cancel()));
-	connect (this, SIGNAL (destroyed()), dialog, SLOT (childDeleted()));
 }
 
 InstallPackagesWidget::~InstallPackagesWidget () {
@@ -1207,6 +1216,7 @@ void RKRPackageInstallationStatusSortFilterModel::setRKWardOnly \
(bool only) {  RKPluginMapSelectionWidget::RKPluginMapSelectionWidget \
(RKLoadLibsDialog* dialog) : QWidget (dialog) {  RK_TRACE (DIALOGS);
 	model = 0;
+	changes_pending = false;
 
 	QVBoxLayout *vbox = new QVBoxLayout (this);
 	vbox->setContentsMargins (0, 0, 0, 0);
@@ -1226,21 +1236,36 @@ void RKPluginMapSelectionWidget::activated () {
 		model = new RKSettingsModulePluginsModel (this);
 		model->init (RKSettingsModulePlugins::knownPluginmaps ());
 		selector->setModel (model, 1);
+		connect (selector, SIGNAL (insertNewStrings(int)), model, SLOT \
(insertNewStrings(int))); +		connect (selector, SIGNAL (swapRows(int,int)), model, \
SLOT (swapRows(int,int))); +		connect (selector, SIGNAL (listChanged()), this, SLOT \
(changed()));  }
 }
 
 void RKPluginMapSelectionWidget::apply () {
+	RK_TRACE (DIALOGS);
 
+	if (!changes_pending) return;
+	RK_ASSERT (model);
+	RKSettingsModulePlugins::PluginMapList new_list = \
RKSettingsModulePlugins::setPluginMaps (model->pluginMaps ()); +	selector->setModel \
(0); // we don't want any extra change notification for this +	model->init \
(new_list); +	selector->setModel (model, 1);
+	changes_pending = false;
 }
 
 void RKPluginMapSelectionWidget::cancel () {
-
+	RK_TRACE (DIALOGS);
+	deleteLater ();
 }
 
 void RKPluginMapSelectionWidget::ok () {
+	RK_TRACE (DIALOGS);
 
+	if (!changes_pending) return;
+	RK_ASSERT (model);
+	RKSettingsModulePlugins::setPluginMaps (model->pluginMaps ());
+	deleteLater ();
 }
 
-
 #include "rkloadlibsdialog.moc"
-
diff --git a/rkward/dialogs/rkloadlibsdialog.h b/rkward/dialogs/rkloadlibsdialog.h
index d8cbc25..3809363 100644
--- a/rkward/dialogs/rkloadlibsdialog.h
+++ b/rkward/dialogs/rkloadlibsdialog.h
@@ -63,6 +63,7 @@ public:
 @param chain RCommandChain to run the necessary commands in
 @param package_name name of the required package */
 	static void showInstallPackagesModal (QWidget *parent, RCommandChain *chain, const \
QString &package_name); +	static void showPluginmapConfig (QWidget *parent=0, \
RCommandChain *chain=0);  QStringList currentLibraryLocations ()  const { return \
library_locations; };  signals:
 	void downloadComplete ();
@@ -87,12 +88,14 @@ private:
 	void addLibraryLocation (const QString &new_loc);
 	void tryDestruct ();
 	void runInstallationCommand (const QString& command, bool as_root, const QString& \
message, const QString& title); +	KPageWidgetItem* addChild (QWidget *child_page, \
const QString &caption);  friend class LoadUnloadWidget;
 friend class InstallPackagesWidget;
 	RCommandChain *chain;
 
 	InstallPackagesWidget *install_packages_widget;	// needed for automated \
installation  KPageWidgetItem *install_packages_pageitem;
+	KPageWidgetItem *configure_pluginmaps_pageitem;
 
 	QStringList library_locations;
 
@@ -297,9 +300,11 @@ public slots:
 	void apply ();
 	void cancel ();
 	void activated ();
+	void changed () { changes_pending = true; };
 private:
 	RKMultiStringSelectorV2* selector;
 	RKSettingsModulePluginsModel* model;
+	bool changes_pending;
 };
 
 #endif
diff --git a/rkward/settings/rksettingsmoduleplugins.cpp \
b/rkward/settings/rksettingsmoduleplugins.cpp index 0d6ca52..9f9ea79 100644
--- a/rkward/settings/rksettingsmoduleplugins.cpp
+++ b/rkward/settings/rksettingsmoduleplugins.cpp
@@ -22,9 +22,6 @@
 #include <kmessagebox.h>
 #include <khbox.h>
 #include <kdeversion.h>
-#include <ktar.h>
-#include <kzip.h>
-#include <kio/deletejob.h>
 
 #include <qlayout.h>
 #include <qlabel.h>
@@ -42,6 +39,7 @@
 #include "../misc/rkspinbox.h"
 #include "../misc/xmlhelper.h"
 #include "../plugin/rkcomponentmap.h"
+#include "../dialogs/rkloadlibsdialog.h"
 #include "rksettingsmodulegeneral.h"
 
 #include "../debug.h"
@@ -107,15 +105,11 @@ RKSettingsModulePlugins::RKSettingsModulePlugins (RKSettings \
*gui, QWidget *pare  
 	main_vbox->addSpacing (2*RKGlobals::spacingHint ());
 
+	QPushButton *pluginmap_config_button = new QPushButton (i18n ("Configure Active \
Plugins"), this); +	connect (pluginmap_config_button, SIGNAL (clicked()), this, SLOT \
(configurePluginmaps())); +	main_vbox->addWidget (pluginmap_config_button);
 
-	map_choser = new RKMultiStringSelectorV2 (i18n ("Select .pluginmap file(s)"), \
                this);
-	map_model = new RKSettingsModulePluginsModel (this);
-	map_model->init (known_plugin_maps);
-	map_choser->setModel (map_model, 1);
-	connect (map_choser, SIGNAL (insertNewStrings(int)), map_model, SLOT \
                (insertNewStrings(int)));
-	connect (map_choser, SIGNAL (swapRows(int,int)), map_model, SLOT \
                (swapRows(int,int)));
-	connect (map_choser, SIGNAL (listChanged()), this, SLOT (settingChanged()));
-	main_vbox->addWidget (map_choser);
+	main_vbox->addStretch ();
 }
 
 RKSettingsModulePlugins::~RKSettingsModulePlugins() {
@@ -135,16 +129,24 @@ QString RKSettingsModulePlugins::caption () {
 void RKSettingsModulePlugins::applyChanges () {
 	RK_TRACE (SETTINGS);
 
-	known_plugin_maps = map_model->pluginMaps ();
 	interface_pref = static_cast<PluginPrefs> (button_group->checkedId ());
 	show_code = show_code_box->isChecked ();
 	code_size = code_size_box->intValue ();
+}
+
+RKSettingsModulePlugins::PluginMapList RKSettingsModulePlugins::setPluginMaps (const \
RKSettingsModulePlugins::PluginMapList new_list) { +	RK_TRACE (SETTINGS);
 
+	known_plugin_maps = new_list;
 	fixPluginMapLists ();
 	RKWardMainWindow::getMain ()->initPlugins();
-	map_choser->setModel (0);	// we don't want any extra change notification for this
-	map_model->init (known_plugin_maps);
-	map_choser->setModel (map_model, 1);
+	return known_plugin_maps;
+}
+
+void RKSettingsModulePlugins::configurePluginmaps () {
+	RK_TRACE (SETTINGS);
+
+	RKLoadLibsDialog::showPluginmapConfig (this, commandChain ());
 }
 
 void RKSettingsModulePlugins::save (KConfig *config) {
diff --git a/rkward/settings/rksettingsmoduleplugins.h \
b/rkward/settings/rksettingsmoduleplugins.h index 91998ce..7f690ea 100644
--- a/rkward/settings/rksettingsmoduleplugins.h
+++ b/rkward/settings/rksettingsmoduleplugins.h
@@ -87,9 +87,8 @@ public:
 	static void parsePluginMapBasics (const QString &filename, QString *id, int \
*priority);  public slots:
 	void settingChanged ();
+	void configurePluginmaps ();
 private:
-	RKMultiStringSelectorV2 *map_choser;
-	RKSettingsModulePluginsModel *map_model;
 	QButtonGroup *button_group;
 	QCheckBox *show_code_box;
 	RKSpinBox *code_size_box;
@@ -104,6 +103,9 @@ private:
 /* TODO: This one is currently unused (leftover of GHNS-based plugin installation), \
but might still be of interest */  static QStringList findPluginMapsRecursive (const \
QString &basedir);  static void fixPluginMapLists ();
+friend class RKPluginMapSelectionWidget;
+/** Sets the new list of plugins. Potentially removes unreadable ones, and returns \
the effective list. */ +	static PluginMapList setPluginMaps (const PluginMapList \
new_list);  };
 
 class RKSettingsModulePluginsModel : public QAbstractTableModel {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic