~ubuntu-branches/ubuntu/karmic/rkward/karmic

« back to all changes in this revision

Viewing changes to rkward/settings/rksettingsmoduler.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Thomas Friedrichsmeier
  • Date: 2006-11-06 16:30:00 UTC
  • mfrom: (1.2.1 upstream) (3.1.1 feisty)
  • Revision ID: james.westby@ubuntu.com-20061106163000-qi8ju75eqecrfay7
* new upstream release
* depend on either php4-cli or php5-cli

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
#include <kstandarddirs.h>
22
22
#include <kinputdialog.h>
23
23
#include <knuminput.h>
 
24
#include <kfiledialog.h>
24
25
 
25
26
#include <qlayout.h>
26
27
#include <qlabel.h>
35
36
#include "../debug.h"
36
37
 
37
38
// static members
38
 
bool RKSettingsModuleR::archive_packages;
39
 
QStringList RKSettingsModuleR::package_repositories;
40
39
QString RKSettingsModuleR::options_outdec;
41
40
int RKSettingsModuleR::options_width;
42
41
int RKSettingsModuleR::options_warn;
54
53
 
55
54
        main_vbox->addSpacing (2*RKGlobals::spacingHint ());
56
55
 
57
 
        repository_selector = new MultiStringSelector (i18n ("Package repositories"), this);
58
 
        repository_selector->setValues (package_repositories);
59
 
        connect (repository_selector, SIGNAL (listChanged ()), this, SLOT (pathChanged ()));
60
 
        connect (repository_selector, SIGNAL (getNewStrings (QStringList*)), this, SLOT (addRepository (QStringList*)));
61
 
        main_vbox->addWidget (repository_selector);
62
 
 
63
 
        archive_packages_box = new QCheckBox (i18n ("Archive downloaded packages"), this);
64
 
        archive_packages_box->setChecked (archive_packages);
65
 
        connect (archive_packages_box, SIGNAL (stateChanged (int)), this, SLOT (boxChanged (int)));
66
 
        main_vbox->addWidget (archive_packages_box);    
67
 
 
68
 
        main_vbox->addStretch ();
69
 
 
70
56
        QLabel *label = new QLabel (i18n ("The following settings mostly affect R behavior in the console. It's generally safe to keep these unchanged."), this);
71
57
        label->setAlignment (Qt::AlignAuto | Qt::AlignVCenter | Qt::ExpandTabs | Qt::WordBreak);
72
58
        main_vbox->addWidget (label);
142
128
        checkbounds_input->setCurrentItem (options_checkbounds ? 0 : 1);
143
129
        connect (checkbounds_input, SIGNAL (activated (int)), this, SLOT (boxChanged (int)));
144
130
        grid->addWidget (checkbounds_input, row, 1);
 
131
 
 
132
        main_vbox->addStretch ();
145
133
}
146
134
 
147
135
RKSettingsModuleR::~RKSettingsModuleR() {
163
151
        change ();
164
152
}
165
153
 
166
 
void RKSettingsModuleR::addRepository (QStringList *string_list) {
167
 
        RK_TRACE (SETTINGS);
168
 
        QString new_string = KInputDialog::getText (i18n ("Add repository"), i18n ("Add URL of new repository\n(Enter \"@CRAN@\" for the standard CRAN-mirror)"), QString::null, 0, this);
169
 
        (*string_list).append (new_string);
170
 
}
171
 
 
172
154
QString RKSettingsModuleR::caption () {
173
155
        RK_TRACE (SETTINGS);
174
156
        return (i18n ("R-Backend"));
182
164
void RKSettingsModuleR::applyChanges () {
183
165
        RK_TRACE (SETTINGS);
184
166
 
185
 
        archive_packages = archive_packages_box->isChecked ();
186
 
 
187
 
        package_repositories = repository_selector->getValues ();
188
 
 
189
167
        options_outdec = outdec_input->text ();
190
168
        options_width = width_input->value ();
191
169
        options_warn = warn_input->currentItem () - 1;
207
185
QStringList RKSettingsModuleR::makeRRunTimeOptionCommands () {
208
186
        QStringList list;
209
187
 
210
 
// package repositories
211
 
        QString command = "options (repos=c(";
212
 
        for (QStringList::const_iterator it = package_repositories.begin (); it != package_repositories.end (); ++it) {
213
 
                if (it != package_repositories.begin ()) {
214
 
                        command.append (", ");
215
 
                }
216
 
                command.append ("\"" + *it + "\"");
217
 
        }
218
 
        list.append (command + "))\n");
219
 
 
220
188
        QString tf;
221
189
        list.append ("options (OutDec=\"" + options_outdec.left (1) + "\")\n");
222
190
        list.append ("options (width=" + QString::number (options_width) + ")\n");
244
212
        RK_TRACE (SETTINGS);
245
213
 
246
214
        config->setGroup ("R Settings");
247
 
        config->writeEntry ("archive packages", archive_packages);
248
 
        config->writeEntry ("Repositories", package_repositories);
249
215
 
250
216
        config->writeEntry ("OutDec", options_outdec);
251
217
        config->writeEntry ("width", options_width);
262
228
        RK_TRACE (SETTINGS);
263
229
 
264
230
        config->setGroup ("R Settings");
265
 
        archive_packages = config->readBoolEntry ("archive packages", false);
266
 
        package_repositories = config->readListEntry ("Repositories");
267
 
        if (!package_repositories.count ()) {
268
 
                package_repositories.append ("@CRAN@");
269
 
        }
270
231
 
271
232
        options_outdec = config->readEntry ("OutDec", ".");
272
233
        options_width = config->readNumEntry ("width", 80);
279
240
        options_checkbounds = config->readNumEntry ("check.bounds", false);
280
241
}
281
242
 
 
243
//#################################################
 
244
//############### RKSettingsModuleRPackages ################
 
245
//#################################################
 
246
 
 
247
// static members
 
248
QStringList RKSettingsModuleRPackages::liblocs;
 
249
QStringList RKSettingsModuleRPackages::defaultliblocs;
 
250
bool RKSettingsModuleRPackages::archive_packages;
 
251
QStringList RKSettingsModuleRPackages::package_repositories;
 
252
 
 
253
RKSettingsModuleRPackages::RKSettingsModuleRPackages (RKSettings *gui, QWidget *parent) : RKSettingsModule(gui, parent) {
 
254
        RK_TRACE (SETTINGS);
 
255
 
 
256
        QVBoxLayout *main_vbox = new QVBoxLayout (this, RKGlobals::marginHint ());
 
257
 
 
258
        main_vbox->addSpacing (2*RKGlobals::spacingHint ());
 
259
 
 
260
        repository_selector = new MultiStringSelector (i18n ("Package repositories (where libraries are downloaded from)"), this);
 
261
        repository_selector->setValues (package_repositories);
 
262
        connect (repository_selector, SIGNAL (listChanged ()), this, SLOT (listChanged ()));
 
263
        connect (repository_selector, SIGNAL (getNewStrings (QStringList*)), this, SLOT (addRepository (QStringList*)));
 
264
        main_vbox->addWidget (repository_selector);
 
265
 
 
266
        archive_packages_box = new QCheckBox (i18n ("Archive downloaded packages"), this);
 
267
        archive_packages_box->setChecked (archive_packages);
 
268
        connect (archive_packages_box, SIGNAL (stateChanged (int)), this, SLOT (boxChanged (int)));
 
269
        main_vbox->addWidget (archive_packages_box);    
 
270
 
 
271
        main_vbox->addStretch ();
 
272
 
 
273
        libloc_selector = new MultiStringSelector (i18n ("R Library locations  (where libraries get installed to, locally)"), this);
 
274
        libloc_selector->setValues (liblocs);
 
275
        connect (libloc_selector, SIGNAL (listChanged ()), this, SLOT (listChanged ()));
 
276
        connect (libloc_selector, SIGNAL (getNewStrings (QStringList*)), this, SLOT (addLibLoc (QStringList*)));
 
277
        main_vbox->addWidget (libloc_selector);
 
278
        QLabel *label = new QLabel (i18n ("Note: The startup defaults will always be used in addition to the locations you specify in this list"), this);
 
279
        main_vbox->addWidget (label);
 
280
 
 
281
        main_vbox->addStretch ();
 
282
}
 
283
 
 
284
RKSettingsModuleRPackages::~RKSettingsModuleRPackages () {
 
285
        RK_TRACE (SETTINGS);
 
286
}
 
287
 
 
288
void RKSettingsModuleRPackages::listChanged () {
 
289
        RK_TRACE (SETTINGS);
 
290
        change ();
 
291
}
 
292
 
 
293
void RKSettingsModuleRPackages::boxChanged (int) {
 
294
        RK_TRACE (SETTINGS);
 
295
        change ();
 
296
}
 
297
 
 
298
void RKSettingsModuleRPackages::addLibLoc (QStringList *string_list) {
 
299
        RK_TRACE (SETTINGS);
 
300
        QString new_string = KFileDialog::getExistingDirectory (QString::null, this, i18n ("Add R Library Directory"));
 
301
        if (!new_string.isEmpty ()) {
 
302
                (*string_list).append (new_string);
 
303
        }
 
304
}
 
305
 
 
306
void RKSettingsModuleRPackages::addRepository (QStringList *string_list) {
 
307
        RK_TRACE (SETTINGS);
 
308
        QString new_string = KInputDialog::getText (i18n ("Add repository"), i18n ("Add URL of new repository\n(Enter \"@CRAN@\" for the standard CRAN-mirror)"), QString::null, 0, this);
 
309
        (*string_list).append (new_string);
 
310
}
 
311
 
 
312
QString RKSettingsModuleRPackages::caption () {
 
313
        RK_TRACE (SETTINGS);
 
314
        return (i18n ("R-Packages"));
 
315
}
 
316
 
 
317
bool RKSettingsModuleRPackages::hasChanges () {
 
318
        RK_TRACE (SETTINGS);
 
319
        return changed;
 
320
}
 
321
 
 
322
//static
 
323
QStringList RKSettingsModuleRPackages::makeRRunTimeOptionCommands () {
 
324
        QStringList list;
 
325
 
 
326
// package repositories
 
327
        QString command = "options (repos=c (";
 
328
        for (QStringList::const_iterator it = package_repositories.begin (); it != package_repositories.end (); ++it) {
 
329
                if (it != package_repositories.begin ()) {
 
330
                        command.append (", ");
 
331
                }
 
332
                if (*it == "@CRAN@") command.append ("CRAN="); 
 
333
                command.append ("\"" + *it + "\"");
 
334
        }
 
335
        list.append (command + "))\n");
 
336
 
 
337
// library locations
 
338
        command = ".libPaths (unique (c (";
 
339
        bool first = true;
 
340
        for (QStringList::const_iterator it = liblocs.begin (); it != liblocs.end (); ++it) {
 
341
                if (first) first = false;
 
342
                else command.append (", ");
 
343
                command.append ("\"" + *it + "\"");
 
344
        }
 
345
        for (QStringList::const_iterator it = defaultliblocs.begin (); it != defaultliblocs.end (); ++it) {
 
346
                if (first) first = false;
 
347
                else command.append (", ");
 
348
                command.append ("\"" + *it + "\"");
 
349
        }
 
350
        command.append (")))");
 
351
        list.append (command);
 
352
 
 
353
        return list;
 
354
}
 
355
 
 
356
void RKSettingsModuleRPackages::applyChanges () {
 
357
        RK_TRACE (SETTINGS);
 
358
 
 
359
        archive_packages = archive_packages_box->isChecked ();
 
360
        package_repositories = repository_selector->getValues ();
 
361
        liblocs = libloc_selector->getValues ();
 
362
 
 
363
// apply options in R
 
364
        QStringList commands = makeRRunTimeOptionCommands ();
 
365
        for (QStringList::const_iterator it = commands.begin (); it != commands.end (); ++it) {
 
366
                RKGlobals::rInterface ()->issueCommand (*it, RCommand::App, QString::null, 0, 0, commandChain ());
 
367
        }
 
368
}
 
369
 
 
370
void RKSettingsModuleRPackages::save (KConfig *config) {
 
371
        RK_TRACE (SETTINGS);
 
372
 
 
373
        saveSettings (config);
 
374
}
 
375
 
 
376
void RKSettingsModuleRPackages::saveSettings (KConfig *config) {
 
377
        RK_TRACE (SETTINGS);
 
378
 
 
379
        config->setGroup ("R Settings");
 
380
 
 
381
        config->writeEntry ("archive packages", archive_packages);
 
382
        config->writeEntry ("Repositories", package_repositories);
 
383
 
 
384
        config->writeEntry ("LibraryLocations", liblocs);
 
385
}
 
386
 
 
387
void RKSettingsModuleRPackages::loadSettings (KConfig *config) {
 
388
        RK_TRACE (SETTINGS);
 
389
 
 
390
        config->setGroup ("R Settings");
 
391
 
 
392
        archive_packages = config->readBoolEntry ("archive packages", false);
 
393
        package_repositories = config->readListEntry ("Repositories");
 
394
        if (!package_repositories.count ()) {
 
395
                package_repositories.append ("@CRAN@");
 
396
        }
 
397
 
 
398
        liblocs = config->readListEntry ("LibraryLocations");
 
399
}
 
400
 
282
401
#include "rksettingsmoduler.moc"