[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