[rkward] rkward: Add dialog to prompt about what to do with unversioned legacy library location.
Thomas Friedrichsmeier
null at kde.org
Sun May 6 06:40:30 UTC 2018
Git commit a55e9871be6ed4a025b0fd0b342493f397a9cf47 by Thomas Friedrichsmeier.
Committed on 06/05/2018 at 06:39.
Pushed by tfry into branch 'master'.
Add dialog to prompt about what to do with unversioned legacy library location.
This is designed so it can eventually be extended to a "first run wizard" performing
several checks for a new version / fresh install.
M +5 -0 rkward/rbackend/rkrinterface.cpp
M +1 -1 rkward/rkward.cpp
M +36 -21 rkward/settings/rksettings.cpp
M +4 -2 rkward/settings/rksettings.h
M +22 -4 rkward/settings/rksettingsmodule.h
M +4 -4 rkward/settings/rksettingsmodulecommandeditor.h
M +4 -4 rkward/settings/rksettingsmoduleconsole.h
M +5 -5 rkward/settings/rksettingsmoduledebug.h
M +4 -3 rkward/settings/rksettingsmodulegeneral.h
M +3 -2 rkward/settings/rksettingsmodulegraphics.h
M +2 -2 rkward/settings/rksettingsmoduleobjectbrowser.h
M +5 -4 rkward/settings/rksettingsmoduleoutput.h
M +5 -4 rkward/settings/rksettingsmoduleplugins.h
M +60 -0 rkward/settings/rksettingsmoduler.cpp
M +7 -5 rkward/settings/rksettingsmoduler.h
M +4 -4 rkward/settings/rksettingsmodulewatch.h
https://commits.kde.org/rkward/a55e9871be6ed4a025b0fd0b342493f397a9cf47
diff --git a/rkward/rbackend/rkrinterface.cpp b/rkward/rbackend/rkrinterface.cpp
index 51a9c3be..39de8a93 100644
--- a/rkward/rbackend/rkrinterface.cpp
+++ b/rkward/rbackend/rkrinterface.cpp
@@ -70,6 +70,7 @@
#define SET_RUNTIME_OPTS 3
#define STARTUP_PHASE2_COMPLETE 4
#define GET_R_VERSION 5
+#define RSTARTUP_COMPLETE 6
// statics
double RInterface::na_real;
@@ -102,6 +103,8 @@ RInterface::RInterface () {
/////// Further initialization commands, which do not necessarily have to run before everything else can be queued, here. ///////
// NOTE: will receive the list as a call plain generic request from the backend ("updateInstalledPackagesList")
issueCommand (".rk.get.installed.packages()", RCommand::App | RCommand::Sync);
+
+ issueCommand (new RCommand (QString (), RCommand::App | RCommand::Sync | RCommand::EmptyCommand, QString (), this, RSTARTUP_COMPLETE));
}
void RInterface::issueCommand (const QString &command, int type, const QString &rk_equiv, RCommandReceiver *receiver, int flags, RCommandChain *chain) {
@@ -342,6 +345,8 @@ void RInterface::rCommandDone (RCommand *command) {
}
startup_errors.clear ();
+ } else if (command->getFlags () == RSTARTUP_COMPLETE) {
+ RKSettings::validateSettingsInteractive ();
}
}
diff --git a/rkward/rkward.cpp b/rkward/rkward.cpp
index 70db44d9..e76b3937 100644
--- a/rkward/rkward.cpp
+++ b/rkward/rkward.cpp
@@ -2,7 +2,7 @@
rkward.cpp - description
-------------------
begin : Tue Oct 29 20:06:08 CET 2002
- copyright : (C) 2002-2013 by Thomas Friedrichsmeier
+ copyright : (C) 2002-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
diff --git a/rkward/settings/rksettings.cpp b/rkward/settings/rksettings.cpp
index 33579728..8f85cc37 100644
--- a/rkward/settings/rksettings.cpp
+++ b/rkward/settings/rksettings.cpp
@@ -2,7 +2,7 @@
rksettings - description
-------------------
begin : Wed Jul 28 2004
- copyright : (C) 2004-2013 by Thomas Friedrichsmeier
+ copyright : (C) 2004-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -175,34 +175,49 @@ void RKSettings::enableApply () {
button (QDialogButtonBox::Apply)->setEnabled (true);
}
+#define FOREACH_SETTINGS_MODULE(X) \
+ RKSettingsModuleGeneral::X; /* always handle this first (esp., when loading settings), as it contains the base path for rkward files */ \
+ RKSettingsModulePlugins::X; \
+ RKSettingsModuleR::X; \
+ RKSettingsModuleRPackages::X; \
+ RKSettingsModuleOutput::X; \
+ RKSettingsModuleGraphics::X; \
+ RKSettingsModuleWatch::X; \
+ RKSettingsModuleConsole::X; \
+ RKSettingsModuleCommandEditor::X; \
+ RKSettingsModuleObjectBrowser::X;
+
void RKSettings::loadSettings (KConfig *config) {
RK_TRACE (SETTINGS);
- RKSettingsModuleGeneral::loadSettings(config); // alway load this first, as it contains the base path for rkward files
- RKSettingsModulePlugins::loadSettings(config);
- RKSettingsModuleR::loadSettings(config);
- RKSettingsModuleRPackages::loadSettings(config);
- RKSettingsModuleOutput::loadSettings(config);
- RKSettingsModuleGraphics::loadSettings(config);
- RKSettingsModuleWatch::loadSettings(config);
- RKSettingsModuleConsole::loadSettings(config);
- RKSettingsModuleCommandEditor::loadSettings(config);
- RKSettingsModuleObjectBrowser::loadSettings(config);
+ FOREACH_SETTINGS_MODULE(loadSettings(config));
}
void RKSettings::saveSettings (KConfig *config) {
RK_TRACE (SETTINGS);
- RKSettingsModuleGeneral::saveSettings(config);
- RKSettingsModulePlugins::saveSettings(config);
- RKSettingsModuleR::saveSettings(config);
- RKSettingsModuleRPackages::saveSettings(config);
- RKSettingsModuleOutput::saveSettings(config);
- RKSettingsModuleGraphics::saveSettings(config);
- RKSettingsModuleWatch::saveSettings(config);
- RKSettingsModuleConsole::saveSettings(config);
- RKSettingsModuleCommandEditor::saveSettings(config);
- RKSettingsModuleObjectBrowser::saveSettings(config);
+ FOREACH_SETTINGS_MODULE(saveSettings(config));
+}
+
+#include <KAssistantDialog>
+void RKSettings::validateSettingsInteractive () {
+ RK_TRACE (SETTINGS);
+
+ QList<RKSettingsWizardPage*> interaction_pages;
+ FOREACH_SETTINGS_MODULE(validateSettingsInteractive(&interaction_pages));
+ if (!interaction_pages.isEmpty ()) {
+ KAssistantDialog dialog ((QWidget*) 0);
+ for (int i = 0; i < interaction_pages.size (); ++i) {
+ dialog.addPage (interaction_pages[i], interaction_pages[i]->windowTitle ());
+ }
+ QPushButton *help_button = dialog.button (QDialogButtonBox::Help);
+ if (help_button) help_button->hide ();
+ if (dialog.exec () == QDialog::Accepted) {
+ for (int i = 0; i < interaction_pages.size (); ++i) {
+ interaction_pages[i]->apply ();
+ }
+ }
+ }
}
//############ END RKSettings ##################
diff --git a/rkward/settings/rksettings.h b/rkward/settings/rksettings.h
index 80980a0a..d7fba4db 100644
--- a/rkward/settings/rksettings.h
+++ b/rkward/settings/rksettings.h
@@ -2,7 +2,7 @@
rksettings - description
-------------------
begin : Wed Jul 28 2004
- copyright : (C) 2004, 2007 by Thomas Friedrichsmeier
+ copyright : (C) 2004-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -55,7 +55,9 @@ public:
static void loadSettings (KConfig *config);
static void saveSettings (KConfig *config);
-
+ /** Perform any settings validation that may need user interaction (and should happen after a GUI is available, and R has started up) */
+ static void validateSettingsInteractive ();
+
void enableApply ();
static RKSettingsTracker* tracker () { return settings_tracker; };
diff --git a/rkward/settings/rksettingsmodule.h b/rkward/settings/rksettingsmodule.h
index 1cd28d6c..c9d35d48 100644
--- a/rkward/settings/rksettingsmodule.h
+++ b/rkward/settings/rksettingsmodule.h
@@ -2,7 +2,7 @@
rksettingsmodule - description
-------------------
begin : Wed Jul 28 2004
- copyright : (C) 2004, 2007 by Thomas Friedrichsmeier
+ copyright : (C) 2004-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -32,9 +32,8 @@ Base class for settings modules. Provides some pure virtual calls.
*/
class RKSettingsModule : public QWidget {
public:
- RKSettingsModule (RKSettings *gui, QWidget *parent);
-
- virtual ~RKSettingsModule ();
+ RKSettingsModule (RKSettings *gui, QWidget *parent);
+ virtual ~RKSettingsModule ();
bool hasChanges () { return changed; };
virtual void applyChanges () = 0;
@@ -56,4 +55,23 @@ friend class RKSettings;
static RCommandChain *chain;
};
+#include <functional>
+/** Simple helper class to formalize the API of widgets used for the interactive validation of settings.
+ * (For quering about settings that may need adjusting on startup. Possibly to be expanded to a "first-run-wizard", in the future). */
+class RKSettingsWizardPage : public QWidget {
+public:
+ RKSettingsWizardPage (QWidget* parent=0) : QWidget (parent) {
+ apply_callback = 0;
+ }
+ ~RKSettingsWizardPage () {};
+ void apply () {
+ if (apply_callback) apply_callback();
+ }
+ void setApplyCallback (std::function<void()> callback) {
+ apply_callback = callback;
+ };
+private:
+ std::function<void()> apply_callback;
+};
+
#endif
diff --git a/rkward/settings/rksettingsmodulecommandeditor.h b/rkward/settings/rksettingsmodulecommandeditor.h
index 295e0c8a..bed059df 100644
--- a/rkward/settings/rksettingsmodulecommandeditor.h
+++ b/rkward/settings/rksettingsmodulecommandeditor.h
@@ -2,7 +2,7 @@
rksettingsmodulecommandeditor - description
-------------------
begin : Tue Oct 23 2007
- copyright : (C) 2007, 2010, 2011 by Thomas Friedrichsmeier
+ copyright : (C) 2007-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -33,15 +33,15 @@ class RKSettingsModuleCommandEditor : public RKSettingsModule {
Q_OBJECT
public:
RKSettingsModuleCommandEditor (RKSettings *gui, QWidget *parent);
-
~RKSettingsModuleCommandEditor ();
void applyChanges () override;
void save (KConfig *config) override;
-
+
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
-
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*) {};
+
QString caption () override;
/// min number of character to try code completion
diff --git a/rkward/settings/rksettingsmoduleconsole.h b/rkward/settings/rksettingsmoduleconsole.h
index c0d4b23b..e202f47a 100644
--- a/rkward/settings/rksettingsmoduleconsole.h
+++ b/rkward/settings/rksettingsmoduleconsole.h
@@ -2,7 +2,7 @@
rksettingsmoduleconsole - description
-------------------
begin : Sun Oct 16 2005
- copyright : (C) 2005, 2006, 2007, 2009 by Thomas Friedrichsmeier
+ copyright : (C) 2005-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -34,12 +34,12 @@ class RKSettingsModuleConsole : public RKSettingsModule {
Q_OBJECT
public:
RKSettingsModuleConsole (RKSettings *gui, QWidget *parent);
-
~RKSettingsModuleConsole ();
-
+
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
-
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*) {};
+
void applyChanges () override;
void save (KConfig *config) override;
diff --git a/rkward/settings/rksettingsmoduledebug.h b/rkward/settings/rksettingsmoduledebug.h
index 92a3d6aa..6e532fc9 100644
--- a/rkward/settings/rksettingsmoduledebug.h
+++ b/rkward/settings/rksettingsmoduledebug.h
@@ -2,7 +2,7 @@
rksettingsmoduledebug - description
-------------------
begin : Tue Oct 23 2007
- copyright : (C) 2007, 2009, 2017 by Thomas Friedrichsmeier
+ copyright : (C) 2007-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -32,15 +32,15 @@ class RKSettingsModuleDebug : public RKSettingsModule {
Q_OBJECT
public:
RKSettingsModuleDebug (RKSettings *gui, QWidget *parent);
-
~RKSettingsModuleDebug ();
-
+
void applyChanges () override;
void save (KConfig *config) override;
-
+
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
-
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*) {};
+
QString caption () override;
// static members are declared in debug.h and defined in main.cpp
diff --git a/rkward/settings/rksettingsmodulegeneral.h b/rkward/settings/rksettingsmodulegeneral.h
index a03af183..1b038af9 100644
--- a/rkward/settings/rksettingsmodulegeneral.h
+++ b/rkward/settings/rksettingsmodulegeneral.h
@@ -33,7 +33,6 @@ class RKSettingsModuleGeneral : public RKSettingsModule {
Q_OBJECT
public:
RKSettingsModuleGeneral (RKSettings *gui, QWidget *parent);
-
~RKSettingsModuleGeneral ();
enum WorkplaceSaveMode { // don't change the int values of this enum, or you'll ruin users saved settings. Append new values at the end
@@ -57,10 +56,11 @@ public:
void applyChanges () override;
void save (KConfig *config) override;
-
+
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
-
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*) {};
+
QString caption () override;
/// returns the directory-name where the logfiles should reside
@@ -95,6 +95,7 @@ public:
RKWardConfig_0_6_1,
RKWardConfig_0_6_3,
RKWardConfig_0_6_4,
+ RKWardConfig_0_7_1,
RKWardConfig_Next, /**< add new configuration versions above / before this entry */
RKWardConfig_Latest = RKWardConfig_Next - 1
};
diff --git a/rkward/settings/rksettingsmodulegraphics.h b/rkward/settings/rksettingsmodulegraphics.h
index 976e0656..59bb317a 100644
--- a/rkward/settings/rksettingsmodulegraphics.h
+++ b/rkward/settings/rksettingsmodulegraphics.h
@@ -2,7 +2,7 @@
rksettingsmodulegraphics - description
-------------------
begin : Mon Sep 13 2010
- copyright : (C) 2010, 2013 by Thomas Friedrichsmeier
+ copyright : (C) 2010-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -49,7 +49,8 @@ public:
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
-
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*) {};
+
QString caption () override;
QUrl helpURL () override { return QUrl ("rkward://page/rkward_plot_history#scd_settings"); };
diff --git a/rkward/settings/rksettingsmoduleobjectbrowser.h b/rkward/settings/rksettingsmoduleobjectbrowser.h
index 833e77c6..84f902c6 100644
--- a/rkward/settings/rksettingsmoduleobjectbrowser.h
+++ b/rkward/settings/rksettingsmoduleobjectbrowser.h
@@ -2,7 +2,7 @@
rksettingsmodule - description
-------------------
begin : Fri Apr 22 2005
- copyright : (C) 2005, 2015 by Thomas Friedrichsmeier
+ copyright : (C) 2005-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -33,7 +33,6 @@ class RKSettingsModuleObjectBrowser : public RKSettingsModule {
Q_OBJECT
public:
RKSettingsModuleObjectBrowser (RKSettings *gui, QWidget *parent);
-
~RKSettingsModuleObjectBrowser ();
/** applies current settings in this RKSettingsModule. This will only be called, if hasChanges () is true */
@@ -47,6 +46,7 @@ public:
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*) {};
static bool isDefaultForWorkspace (RKObjectListViewSettings::PersistentSettings setting) { return workspace_settings[setting]; };
static bool isDefaultForVarselector (RKObjectListViewSettings::PersistentSettings setting) { return varselector_settings[setting]; };
diff --git a/rkward/settings/rksettingsmoduleoutput.h b/rkward/settings/rksettingsmoduleoutput.h
index 42dd9976..1858835f 100644
--- a/rkward/settings/rksettingsmoduleoutput.h
+++ b/rkward/settings/rksettingsmoduleoutput.h
@@ -2,7 +2,7 @@
rksettingsmoduleoutput - description
-------------------
begin : Fri Jul 30 2004
- copyright : (C) 2004, 2010, 2011 by Thomas Friedrichsmeier
+ copyright : (C) 2004-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -76,16 +76,17 @@ class RKSettingsModuleOutput : public RKSettingsModule {
public:
RKSettingsModuleOutput (RKSettings *gui, QWidget *parent);
~RKSettingsModuleOutput ();
-
+
void applyChanges () override;
void save (KConfig *config) override;
/** generate the commands needed to set the R run time options */
static QStringList makeRRunTimeOptionCommands ();
-
+
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
-
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*) {};
+
QString caption () override;
static bool autoShow () { return auto_show; };
diff --git a/rkward/settings/rksettingsmoduleplugins.h b/rkward/settings/rksettingsmoduleplugins.h
index 9f965e60..5c0470f0 100644
--- a/rkward/settings/rksettingsmoduleplugins.h
+++ b/rkward/settings/rksettingsmoduleplugins.h
@@ -2,7 +2,7 @@
rksettingsmoduleplugins - description
-------------------
begin : Wed Jul 28 2004
- copyright : (C) 2004-2016 by Thomas Friedrichsmeier
+ copyright : (C) 2004-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -41,12 +41,13 @@ public:
void applyChanges () override;
void save (KConfig *config) override;
-
+
enum PluginPrefs { PreferDialog=0, PreferRecommended=1, PreferWizard=2 };
-
+
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
-
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*) {};
+
QString caption () override;
/** @returns a list of active plugin maps */
diff --git a/rkward/settings/rksettingsmoduler.cpp b/rkward/settings/rksettingsmoduler.cpp
index 33abd0af..cc9edfed 100644
--- a/rkward/settings/rksettingsmoduler.cpp
+++ b/rkward/settings/rksettingsmoduler.cpp
@@ -630,3 +630,63 @@ void RKSettingsModuleRPackages::loadSettings (KConfig *config) {
#endif
}
+#include <QGroupBox>
+#include <QRadioButton>
+
+void RKSettingsModuleRPackages::validateSettingsInteractive (QList<RKSettingsWizardPage*>* pages) {
+ RK_TRACE (SETTINGS);
+
+ if (RKSettingsModuleGeneral::storedConfigVersion () < RKSettingsModuleGeneral::RKWardConfig_0_7_1) {
+ QString legacy_libloc = QDir (RKSettingsModuleGeneral::filesPath ()).absoluteFilePath ("library");
+ if (liblocs.contains (legacy_libloc)) {
+ RKSettingsWizardPage *page = new RKSettingsWizardPage ();
+ page->setWindowTitle (i18n ("Unversioned library location"));
+ QVBoxLayout *layout = new QVBoxLayout (page);
+ QLabel *label = new QLabel (i18n ("The configured library locations (where R packages will be installed on this system) contains the directory '%1', "
+ "which was suggested as a default library location in earlier versions of RKWard. Use of this directory is no longer "
+ "recommended, as it is not accessible R sessions outside of RKWard (unless configured, explicitly). Also due to the lack "
+ "of an R version number in the directory name, it offers no protection against using packages built for an incompatible "
+ "version of R.", legacy_libloc));
+ label->setWordWrap (true);
+ layout->addWidget (label);
+ // D'uh. QRadioButton supports neither wordwrap nor formatting. Why?
+ QGroupBox *group = new QGroupBox (i18n ("What do you want to do?"));
+ QRadioButton *removebutton = new QRadioButton ();
+ QLabel *removelabel = new QLabel (i18n ("<b>Remove</b> this location from the configuration (it will not be deleted on disk). You will have to "
+ "re-install any packages that you want to keep."));
+ removelabel->setWordWrap (true);
+ QRadioButton *renamebutton = new QRadioButton ();
+ QLabel *renamelabel = new QLabel (i18n ("<b>Rename</b> this location to include the version number of the currently running R. Packages will continue "
+ "to work (if they are compatible with this version of R)."));
+ renamelabel->setWordWrap (true);
+ QRadioButton *keepbutton = new QRadioButton ();
+ QLabel *keeplabel = new QLabel (i18n ("<b>Keep</b> this location (do not change anything)."));
+ keeplabel->setWordWrap (true);
+ QGridLayout *group_layout = new QGridLayout (group);
+ group_layout->addWidget (removebutton, 0, 0);
+ group_layout->addWidget (removelabel, 0, 1);
+ group_layout->addWidget (renamebutton, 1, 0);
+ group_layout->addWidget (renamelabel, 1, 1);
+ group_layout->addWidget (keepbutton, 2, 0);
+ group_layout->addWidget (keeplabel, 2, 1);
+ group_layout->setColumnStretch (1, 1);
+ renamebutton->setChecked (true);
+ layout->addWidget (group);
+
+ page->setApplyCallback([keepbutton, renamebutton, legacy_libloc, &liblocs]() {
+ if (keepbutton->isChecked ()) return;
+
+ liblocs.removeAll (legacy_libloc);
+ if (renamebutton->isChecked ()) {
+ QString new_loc = legacy_libloc + '/' + RKSessionVars::RVersion (true);
+ RKGlobals::rInterface ()->issueCommand (QString ("file.rename(%1, %2)\n").arg (RObject::rQuote (legacy_libloc)).arg (RObject::rQuote (new_loc)), RCommand::App);
+ liblocs.prepend (legacy_libloc + QStringLiteral ("/%v"));
+ }
+
+ RKGlobals::rInterface ()->issueCommand (libLocsCommand(), RCommand::App);
+ });
+
+ pages->append (page);
+ }
+ }
+}
diff --git a/rkward/settings/rksettingsmoduler.h b/rkward/settings/rksettingsmoduler.h
index 224a442a..d3db9c16 100644
--- a/rkward/settings/rksettingsmoduler.h
+++ b/rkward/settings/rksettingsmoduler.h
@@ -39,13 +39,14 @@ class RKSettingsModuleR : public RKSettingsModule {
public:
RKSettingsModuleR (RKSettings *gui, QWidget *parent);
~RKSettingsModuleR ();
-
+
void applyChanges () override;
void save (KConfig *config) override;
-
+
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
-
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*) {};
+
QString caption () override;
/** generate the commands needed to set the R run time options */
@@ -106,12 +107,13 @@ class RKSettingsModuleRPackages : public RKSettingsModule, public RCommandReceiv
public:
RKSettingsModuleRPackages (RKSettings *gui, QWidget *parent);
~RKSettingsModuleRPackages ();
-
+
void applyChanges () override;
void save (KConfig *config) override;
-
+
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*);
/** generate the commands needed to set the R run time options */
static QStringList makeRRunTimeOptionCommands ();
diff --git a/rkward/settings/rksettingsmodulewatch.h b/rkward/settings/rksettingsmodulewatch.h
index 956c08ea..33603000 100644
--- a/rkward/settings/rksettingsmodulewatch.h
+++ b/rkward/settings/rksettingsmodulewatch.h
@@ -2,7 +2,7 @@
rksettingsmodulewatch - description
-------------------
begin : Thu Aug 26 2004
- copyright : (C) 2004 by Thomas Friedrichsmeier
+ copyright : (C) 2004-2018 by Thomas Friedrichsmeier
email : thomas.friedrichsmeier at kdemail.net
***************************************************************************/
@@ -34,12 +34,12 @@ class RKSettingsModuleWatch : public RKSettingsModule
Q_OBJECT
public:
RKSettingsModuleWatch (RKSettings *gui, QWidget *parent);
-
~RKSettingsModuleWatch ();
-
+
static void saveSettings (KConfig *config);
static void loadSettings (KConfig *config);
-
+ static void validateSettingsInteractive (QList<RKSettingsWizardPage*>*) {};
+
void applyChanges () override;
void save (KConfig *config) override;
void validateGUI ();
More information about the rkward-tracker
mailing list