[Sciviews-commits] r193 - in komodo/SciViews-K: . content/js content/js/tools locale/en-GB locale/fr-FR

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Sun Sep 20 00:04:12 CEST 2009


Author: phgrosjean
Date: 2009-09-20 00:04:11 +0200 (Sun, 20 Sep 2009)
New Revision: 193

Modified:
   komodo/SciViews-K/content/js/misc.js
   komodo/SciViews-K/content/js/prefs.js
   komodo/SciViews-K/content/js/r.js
   komodo/SciViews-K/content/js/tools/file.js
   komodo/SciViews-K/locale/en-GB/main.properties
   komodo/SciViews-K/locale/fr-FR/main.properties
   komodo/SciViews-K/sciviewsk-0.8.1-ko.xpi
Log:
Management of R session files on disk

Modified: komodo/SciViews-K/content/js/misc.js
===================================================================
--- komodo/SciViews-K/content/js/misc.js	2009-09-19 14:28:26 UTC (rev 192)
+++ komodo/SciViews-K/content/js/misc.js	2009-09-19 22:04:11 UTC (rev 193)
@@ -3,22 +3,176 @@
 // Copyright (c) 2008-2009, Ph. Grosjean (phgrosjean at sciviews.org)
 // License: MPL 1.1/GPL 2.0/LGPL 2.1
 ////////////////////////////////////////////////////////////////////////////////
-// sv.misc.closeAllOthers();    // Close all buffer except current one
-// sv.misc.colorPicker();       // Invoke a color picker dialog box
-// sv.misc.moveLineDown();      // Move current line down
-// sv.misc.moveLineUp();        // Move current line up
-// sv.misc.searchBySel();       // Search next using current selection
-// sv.misc.showConfig();        // Show Komodo configuration page
-// sv.misc.swapQuotes();        // Swap single and double quotes in selection
-// sv.misc.pathToClipboard();   // Copy file path to clipboard
-// sv.misc.unixPathToClipboard(); // Copy file path in UNIX format to clipboard
-// sv.misc.timeStamp();         // Stamp text with current date/time
+// sv.misc.sessionData(data);     // Create or open a .csv dataset from session
+// sv.misc.sessionScript(script); // Create or open a .R script from session
+// sv.misc.sessionReport(rep);    // Create or open a .odt report from session
+// sv.misc.closeAllOthers();      // Close all buffer except current one
+// sv.misc.colorPicker();         // Invoke a color picker dialog box
+// sv.misc.moveLineDown();        // Move current line down
+// sv.misc.moveLineUp();          // Move current line up
+// sv.misc.searchBySel();         // Search next using current selection
+// sv.misc.showConfig();          // Show Komodo configuration page
+// sv.misc.swapQuotes();          // Swap single and double quotes in selection
+// sv.misc.pathToClipboard();     // Copy file path to clipboard
+// sv.misc.unixPathToClipboard(); // Copy UNIX file path to clipboard
+// sv.misc.timeStamp();           // Stamp text with current date/time
 ////////////////////////////////////////////////////////////////////////////////
 
 // Define the 'sv.misc' namespace
 if (typeof(sv.misc) == 'undefined')
 	sv.misc = {};
 
+// sv.misc.sessionData(name);   // Create or open a .csv dataset from session
+sv.misc.sessionData = function (data) {
+    if (typeof(data) == "undefined") {
+        data = ko.dialogs.prompt(
+            "Open or create a dataset in .csv format in the data session directory...",
+            "Dataset name:", "Dataset", "Select a dataset", "datafile");
+    }
+    if (data != null & data != "") {
+        var dataDir = sv.prefs.getString("sciviews.data.localdir", "~");
+        var file = Components.classes["@mozilla.org/file/local;1"]
+            .createInstance(Components.interfaces.nsILocalFile);
+        file.initWithPath(dataDir);
+        file.append(data + ".csv");
+        if (file.exists() == false) {
+        file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 438);
+        // Create a minimal content in this file
+        var outputStream = Components.
+            classes["@mozilla.org/network/file-output-stream;1"]
+            .createInstance( Components.interfaces.nsIFileOutputStream );
+        /* Open flags
+        #define PR_RDONLY       0x01
+        #define PR_WRONLY       0x02
+        #define PR_RDWR         0x04
+        #define PR_CREATE_FILE  0x08
+        #define PR_APPEND       0x10
+        #define PR_TRUNCATE     0x20
+        #define PR_SYNC         0x40
+        #define PR_EXCL         0x80
+        */
+        /*
+        ** File modes ....
+        **
+        ** CAVEAT: 'mode' is currently only applicable on UNIX platforms.
+        ** The 'mode' argument may be ignored by PR_Open on other platforms.
+        **
+        **   00400   Read by owner.
+        **   00200   Write by owner.
+        **   00100   Execute (search if a directory) by owner.
+        **   00040   Read by group.
+        **   00020   Write by group.
+        **   00010   Execute by group.
+        **   00004   Read by others.
+        **   00002   Write by others
+        **   00001   Execute by others.
+        **
+        */
+        outputStream.init(file, 0x04 | 0x08 | 0x20, 438, 0);
+        var sep = sv.prefs.getString("r.csv.sep", "\t");
+            var content = '"var1"' + sep + '"var2"\n';
+        var result = outputStream.write(content, content.length);
+        outputStream.close();
+        }
+        try {
+            file.launch();
+        } catch(e) { // On Linux, this does not work...
+            // First try nautilus, and then, try konqueror
+            try {
+                ko.run.runEncodedCommand(window, 'gnome-open "' +
+                    file.path + '" & ');
+            } catch(e) {
+                ko.run.runEncodedCommand(window, 'kfmclient exec "' +
+                    file.path + '" & ');
+            }
+        }
+    }
+    // Make sure lists of session files are refreshed
+    sv.r.refreshSession();
+}
+
+// sv.misc.sessionScript(name); // Create or open a .R script from session
+sv.misc.sessionScript = function (script) {
+    if (typeof(script) == "undefined") {
+        script = ko.dialogs.prompt(
+            "Open or create a R script in session directory...",
+            "Script name:", "Script", "Select a script", "scriptfile");
+    }
+    if (script != null & script != "") {
+        var scriptsDir = sv.prefs.getString("sciviews.scripts.localdir",
+            "~/Scripts");
+        var file = Components.classes["@mozilla.org/file/local;1"]
+            .createInstance(Components.interfaces.nsILocalFile);
+        file.initWithPath(scriptsDir);
+        file.append(script + ".R");
+        if (file.exists() == false) {
+            file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 438);
+        }
+        ko.open.URI(file.path);
+    }
+    // Make sure lists of session files are refreshed
+    sv.r.refreshSession();
+}
+    
+// sv.misc.sessionReport(name); // Create or open a .odt report from session
+sv.misc.sessionReport = function (rep) {
+    if (typeof(rep) == "undefined") {
+        rep = ko.dialogs.prompt(
+            "Open or create an .odt report in session directory...",
+            "Report name:", "Report", "Select a report", "reportfile");
+    }
+    if (rep != null & rep != "") {
+        var reportsDir = sv.prefs.getString("sciviews.reports.localdir",
+            "~/Reports");
+        var file = Components.classes["@mozilla.org/file/local;1"]
+            .createInstance(Components.interfaces.nsILocalFile);
+        file.initWithPath(reportsDir);
+        file.append(rep + ".odt");
+        if (file.exists() == false) {
+            // Copy the report template from SciViews-K templates
+            var tpl = ko.interpolate.
+                interpolateStrings("%(path:hostUserDataDir)");
+            var os = Components.classes['@activestate.com/koOs;1'].
+                getService(Components.interfaces.koIOs);
+        if (os.sep == "/") {
+            tpl += "/XRE/extensions/sciviewsk at sciviews.org/templates/Report.odt";
+        } else {
+            // We should be under Windows
+            tpl += "\\XRE\\extensions\\sciviewsk at sciviews.org\\templates\\Report.odt";
+        }
+        file.initWithPath(tpl);
+        var dir = Components.classes["@mozilla.org/file/local;1"]
+            .createInstance(Components.interfaces.nsILocalFile);
+        dir.initWithPath(reportsDir);
+        try {
+            file.copyTo(dir, rep + ".odt");
+        } catch(e) {
+            sv.log.exception(e, "Error while retrieving the default Report.odt template" +
+				" (sv.misc.sessionReport)", true);
+            alert("Error while retrieving the default Report.odt template.")
+        }
+        file.initWithPath(reportsDir);
+        file.append(rep + ".odt");
+        }
+        // This would be to force using OpenOffice Writer (on Linux?)
+        // ko.run.runEncodedCommand(window, 'oowriter -o "' + file.path + '" & ');
+        try {
+            file.launch();
+        } catch(e) { // On Linux, this does not work...
+            // First try nautilus, and then, try konqueror
+            try {
+                ko.run.runEncodedCommand(window, 'gnome-open "' +
+                    file.path + '" & ');
+            } catch(e) {
+                ko.run.runEncodedCommand(window, 'kfmclient exec "' +
+                    file.path + '" & ');
+            }
+        }
+    }
+    // Make sure lists of session files are refreshed
+    sv.r.refreshSession();
+}
+
 // Close all buffers except current one (an start page)
 sv.misc.closeAllOthers = function () {
     try {

Modified: komodo/SciViews-K/content/js/prefs.js
===================================================================
--- komodo/SciViews-K/content/js/prefs.js	2009-09-19 14:28:26 UTC (rev 192)
+++ komodo/SciViews-K/content/js/prefs.js	2009-09-19 22:04:11 UTC (rev 193)
@@ -58,8 +58,9 @@
 	if (typeof(sep) != "undefined") items = items.split(sep);
 
 	// Add each item in items in inverse order
-    for (var i = items.length - 1; i >= 0; i--) {
-		ko.mru.add(mruList, items[i], true);
+	for (var i = items.length - 1; i >= 0; i--) {
+		if (items[i] != "")
+			ko.mru.add(mruList, items[i], true);
 	}
 }
 

Modified: komodo/SciViews-K/content/js/r.js
===================================================================
--- komodo/SciViews-K/content/js/r.js	2009-09-19 14:28:26 UTC (rev 192)
+++ komodo/SciViews-K/content/js/r.js	2009-09-19 22:04:11 UTC (rev 193)
@@ -48,6 +48,7 @@
 // sv.r.obj_refresh_dataframe(data); // Refresh active data frame's MRUs
 // sv.r.obj_refresh_lm(data); 		 // Refresh active 'lm' object
 // sv.r.obj_message(); // Refresh statusbar message about active df and lm
+// sv.r.refreshSession(); // Refresh MRU lists associated with current session
 // sv.r.initSession(dir, datadir, scriptdir, reportdir);
 // sv.r.setSession(dir, datadir, scriptdir, reportdir, saveOld, loadNew);
                     // Initialize R session with corresponding directories
@@ -56,6 +57,10 @@
                     // dir: session directory, xxxdir: xxx subdirectory,
                     // saveOld (default true): do we save old session data?
                     // loadNew (default true): do we load data from new session?
+// sv.r.switchSession(inDoc); // Switch to another R session (possibly create it)
+// sv.r.exploreSession(); // Explore the session dirs in default file browser
+// sv.r.clearSession();   // Clear session's .RData and .Rhistory files
+// sv.r.reloadSession();  // Reload .RData nd .Rhistory files from session dir
 // sv.r.quit(save); // Quit R (ask to save in save in not defined)
 //
 // Note: sv.r.objects is implemented in robjects.js
@@ -974,7 +979,7 @@
 	var objname = item[0];
 	var objclass = item[1];
 	// Make sure r.active.data.frame pref is set to obj
-	sv.prefs.setString("r.active." + objclass, objname, true);
+	sv.prefs.setString("r.active.data.frame", objname, true);
 	items.shift(); // Eliminate first item from the array
 	// Create three lists: vars collects all var names, nums and facts do so for
 	// only numeric and factor variables (separate items by "|")
@@ -983,7 +988,8 @@
 		item = sv.tools.strings.removeLastCRLF(items[i]).split("\t");
 		// Fill the various lists according to the nature of item
 		vars = vars + "|" + item[0];
-		if (item[1] == "numeric") nums = nums + "|" + item[0];
+		if (item[1] == "numeric" | item[1] == "integer")
+			nums = nums + "|" + item[0];
 		if (item[1] == "factor") facts = facts + "|" + item[0];
 	}
 	// Eliminate first "|"
@@ -1025,12 +1031,46 @@
 	var objname = item[0];
 	var objclass = item[1];
 	// Make sure r.active.data.frame pref is set to obj
-	sv.prefs.setString("r.active." + objclass, objname, true);
+	sv.prefs.setString("r.active.lm", objname, true);
 	// Update message in the statusbar
 	sv.r.obj_message();
 	return(true);
 }
 
+// Refresh MRU lists associated with the current session
+sv.r.refreshSession = function () {
+	var i;
+	// Refresh lists of dataset
+	var items = sv.tools.file.list(sv.prefs.getString("sciviews.data.localdir"),
+		/\.[cC][sS][vV]$/, true);
+	sv.prefs.mru("datafile", true, items);
+	ko.mru.reset("datafile_mru");
+	for (i = items.length - 1; i >= 0; i--) {
+		if (items[i] != "")
+			ko.mru.add("datafile_mru", items[i], true);
+	}
+	
+	// Refresh lists of scripts
+	items = sv.tools.file.list(sv.prefs.getString("sciviews.scripts.localdir"),
+		/\.[rR]$/, true);
+	sv.prefs.mru("scriptfile", true, items);
+	ko.mru.reset("scriptfile_mru");
+	for (i = items.length - 1; i >= 0; i--) {
+		if (items[i] != "")
+			ko.mru.add("scriptfile_mru", items[i], true);
+	}
+	
+	// Refresh lists of reports
+	items = sv.tools.file.list(sv.prefs.getString("sciviews.reports.localdir"),
+		/\.[oO][dD][tT]$/, true);
+	sv.prefs.mru("reportfile", true, items);
+	ko.mru.reset("reportfile_mru");
+	for (i = items.length - 1; i >= 0; i--) {
+		if (items[i] != "")
+			ko.mru.add("reportfile_mru", items[i], true);
+	}
+}
+
 // Initialize R session preferences in Komodo
 // use sv.r.setSession() except at startup!
 sv.r.initSession = function (dir, datadir, scriptdir, reportdir) {
@@ -1084,13 +1124,12 @@
 
 	// Look if the session directory exists, or create it
 	var file = sv.tools.file.getfile(localdir);
-	// file = sv.tools.file.getfile(sv.tools.file.path(dir);
 
 	if (!file.exists() || !file.isDirectory()) {
 		sv.log.debug( "Creating session directory... " );
 		file.create(DIRECTORY_TYPE, 511);
 	}
-	// ... also make sure that /Data, /Script and /Report subdirs exist
+	// ... also make sure that Data, Script and Report subdirs exist
 	var subdirs = [datadir, scriptdir, reportdir];
     for (var i in subdirs) {
 		if (subdirs[i] != "") {
@@ -1101,6 +1140,9 @@
             delete file;
         }
 	}
+	// refresh lists of data, scripts and reports found in the session
+	sv.r.refreshSession();
+
 	return(dir);
 }
 
@@ -1170,6 +1212,146 @@
 	return(true);
 }
 
+// Switch to another R session (create it if it does not exists yet)
+sv.r.switchSession = function (inDoc) {
+	var baseDir = "";
+	var sessionDir = "";
+	// Base directory is different on Linux/Mac OS X and Windows
+	if (navigator.platform.indexOf("Win") > -1) {
+		baseDir = "~"	
+	} else {
+		baseDir = "~/Documents"
+	}
+	if (inDoc) {
+		// Ask for the session subdirectory
+		var Session = "SciViews R Session"
+		Session = ko.dialogs.prompt(sv.translate("Session in my documents " +
+			"(use '/' for subdirs, like in 'dir/session')"),
+			sv.translate("Session"), Session,
+			sv.translate("Switch to R session"), "okRsession");
+		if (Session != null & Session != "") {
+			// Make sure that Session does not start with /, or ./, or ../
+			Session = Session.replace(/\^.{0,2}\//, "");
+			// Construct session dir
+			sessionDir = baseDir + "/" + Session;
+		} else sessionDir = "";
+	} else {
+		// Ask for the session path
+		sessionDir = ko.filepicker.
+			getFolder(baseDir, sv.translate("Choose session directory"));
+	}
+	if (sessionDir != null & sessionDir != "") {
+		// Subdirectories for data, scripts and reports
+		var datadir = "";
+		var scriptdir = "";
+		var reportdir = "";
+		var cfg = "";
+		var cfgfile = sv.tools.file.path(sessionDir, ".svData");
+		var filefound = false;
+		// Look if this directory already exists and contains a .svData file
+		if (sv.tools.file.exists(sessionDir) == 2 &
+			sv.tools.file.exists(cfgfile) == 1) {
+			// Try reading .svData file
+			try {
+				cfg = sv.tools.file.read(cfgfile, "utf-8");
+				filefound = true;
+				// Actualize values for datadir, scriptdir and reportdir
+				cfg = cfg.split("\n");
+				var key, value;
+				for (i in cfg) {
+					key = cfg[i].split("=");
+					if (key[0].trim() == "datadir") datadir = key[1].trim();
+					if (key[0].trim() == "scriptdir") scriptdir = key[1].trim();
+					if (key[0].trim() == "reportdir") reportdir = key[1].trim();
+				}
+			} catch (e) { }
+		}
+		// If no .svData file found, ask for respective directories
+		if (!filefound) {
+			datadir = ko.dialogs.prompt(
+				sv.translate("Subdirectory for datasets (nothing for none):"),
+				"", "data", sv.translate("R session configuration"), "okRsesData");
+			if (datadir == null) return false;
+			scriptdir = ko.dialogs.prompt(
+				sv.translate("Subdirectory for R scripts (nothing for none):"),
+				"", "R", sv.translate("R session configuration"), "okRsesScript");
+			if (scriptdir == null) return false;
+			reportdir = ko.dialogs.prompt(
+				sv.translate("Subdirectory for reports (nothing for none):"),
+				"", "doc", sv.translate("R session configuration"), "okRsesReport");
+			if (reportdir == null) return false;
+		}
+		// Now create or switch to this session directory
+		sv.r.setSession(sessionDir, datadir, scriptdir, reportdir);
+		// If there were no .svData file, create it now
+		if (!filefound) {
+			// Save these informations to the .svData file in the session dir
+		sv.tools.file.write(cfgfile,
+			"datadir=" + datadir + "\nscriptdir=" + scriptdir +
+			"\nreportdir=" + reportdir, "utf-8", false);
+		}
+	return true;
+	}
+}
+
+// Show the session directory in the file explorer, finder, nautilus, ...
+sv.r.exploreSession = function () {
+	var dataDir = sv.prefs.getString("sciviews.session.localdir", "~");
+	var file = Components.classes["@mozilla.org/file/local;1"]
+		.createInstance(Components.interfaces.nsILocalFile);
+	file.initWithPath(dataDir);
+	if (file.exists() == true) {
+		try {
+			file.reveal();
+		} catch(e) { // On Linux, this does not work...
+			// First try nautilus, and then, try konqueror
+			try {
+				ko.run.runEncodedCommand(window,
+					'nautilus "' + file.path + '" & ');
+			} catch(e) {
+				ko.run.runEncodedCommand(window,
+					'konqueror --profile filemanagement "' + file.path + '" & ');
+			}
+		}
+	}
+}
+
+// Reload .RData and .Rhistory files from session directory
+sv.r.reloadSession = function () {
+	// Ask for confirmation first
+	if (ko.dialogs.okCancel("Are you sure you want to delete all objects " +
+		"and reload them from disk?", "OK", "You are about to delete all " +
+		"objects currently in R memory, and reload the initial content from " +
+		"disk (.RData and .Rhistory files)...", "Reload session") == "OK") {
+		// Switch temporarily to the session directory and try loading
+		// .RData and Rhistory files
+		var dir = sv.prefs.getString("sciviews.session.dir", "");
+		var cmd = 'rm(list = ls(pattern = "\\.active.", all.names = TRUE))\n' +
+			'rm(list = ls()); .savdir. <- setwd("' + dir + '")\n' +
+			'if (file.exists(".RData")) load(".RData")\n' +
+			'if (file.exists(".Rhistory")) loadhistory()\n' +
+			'setwd(.savdir.); rm(.savdir.)\n' +
+			'try(guiRefresh(force = TRUE), silent = TRUE)';
+		sv.r.evalHidden(cmd);
+	}
+}
+
+// Clear .RData and .Rhistory files from session directory
+sv.r.clearSession = function () {
+	// Ask for confirmation first
+	if (ko.dialogs.okCancel("Are you sure you want to delete .RData and " +
+		".Rhistory files from disk?", "OK", "You are about to delete the data" +
+		" saved in .RData and the command history saved in .Rhistory for the " +
+		"current session...", "Clear session") == "OK") {
+		// Delete .RData and Rhistory files
+		var dir = sv.prefs.getString("sciviews.session.dir", "");
+		var cmd = '.savdir. <- setwd("' + dir + '")\n' +
+			'unlink(".RData"); unlink(".Rhistory")\n' +
+			'setwd(.savdir.); rm(.savdir.)';
+		sv.r.evalHidden(cmd);
+	}	
+}
+
 // Quit R (ask to save in save in not defined)
 sv.r.quit = function (save) {
 	if (typeof(save) == "undefined") {

Modified: komodo/SciViews-K/content/js/tools/file.js
===================================================================
--- komodo/SciViews-K/content/js/tools/file.js	2009-09-19 14:28:26 UTC (rev 192)
+++ komodo/SciViews-K/content/js/tools/file.js	2009-09-19 22:04:11 UTC (rev 193)
@@ -17,6 +17,8 @@
 								// Create nsILocalFile object from array and/or
 								// special dir name
 // sv.tools.file.readURI(uri);	// Read data from an URI
+// sv.tools.file.list(dirname, pattern, noext); // List all files matching
+								// pattern in dirname (with/without extension)
 ////////////////////////////////////////////////////////////////////////////////
 
 // Define the 'sv.tools' namespace
@@ -214,5 +216,34 @@
 		file.close();
 		return res;
 	}
+	
+	// List all files matching a given pattern in directory
+	this.list = function (dirname, pattern, noext) {
+		try {
+			var dir = Components.classes["@mozilla.org/file/local;1"].
+				createInstance(Components.interfaces.nsILocalFile);
+			dir.initWithPath(dirname);
+			if (dir.exists() && dir.isDirectory()) {
+				var files = dir.directoryEntries;
+				var selfiles = new Array();
+				var files;
+				while (files.hasMoreElements()) {
+					file = files.getNext().
+						QueryInterface(Components.interfaces.nsILocalFile);
+					if (file.isFile() && file.leafName.search(pattern) > -1) {
+						if (noext) {
+							selfiles.push(file.leafName.replace(pattern, ""));
+						} else {
+							selfiles.push(file.leafName);
+						}
+					}
+				}
+				return(selfiles);
+			}
+		} catch (e) {
+			sv.log.exception(e, "Error while listing files " + dirname +
+				" (sv.tools.file.list)", true)
+		}
+	}
 
 }).apply(sv.tools.file);

Modified: komodo/SciViews-K/locale/en-GB/main.properties
===================================================================
--- komodo/SciViews-K/locale/en-GB/main.properties	2009-09-19 14:28:26 UTC (rev 192)
+++ komodo/SciViews-K/locale/en-GB/main.properties	2009-09-19 22:04:11 UTC (rev 193)
@@ -35,3 +35,11 @@
 Start R=Start R
 Cannot retrieve directory from R. Make sure R is running.=Cannot retrieve directory from R. Make sure R is running.
 Asking R for directory...=Asking R for directory...
+Session in my documents (use '/' for subdirs, like in 'dir/session')=Session in my documents (use '/' for subdirs, like in 'dir/session')
+Session=Session
+Switch to R session=Switch to R session
+Choose session directory=Choose session directory
+Subdirectory for datasets (nothing for none):=Subdirectory for datasets (nothing for none):
+Subdirectory for R scripts (nothing for none):=Subdirectory for R scripts (nothing for none):
+Subdirectory for reports (nothing for none):=Subdirectory for reports (nothing for none):
+R session configuration=R session configuration
\ No newline at end of file

Modified: komodo/SciViews-K/locale/fr-FR/main.properties
===================================================================
--- komodo/SciViews-K/locale/fr-FR/main.properties	2009-09-19 14:28:26 UTC (rev 192)
+++ komodo/SciViews-K/locale/fr-FR/main.properties	2009-09-19 22:04:11 UTC (rev 193)
@@ -35,3 +35,11 @@
 Start R=Démarrer R
 Cannot retrieve directory from R. Make sure R is running.=Impossible de localiser le répertoire de R. Assurez-vous que R est lancé.
 Asking R for directory...=Interrogation de R pour le répertoire...
+Session in my documents (use '/' for subdirs, like in 'dir/session')=Session dans Mes Documents (utilisez '/' des sous-répertoires comme dans 'rep/session')
+Session=Session
+Switch to R session=Changer la session R
+Choose session directory=Choisir le répertoir de session
+Subdirectory for datasets (nothing for none):=Sous-répertoire pour les jeux de données (rien pour aucun):
+Subdirectory for R scripts (nothing for none):=Sous-répertoire pour les scripts (rien pour aucun):
+Subdirectory for reports (nothing for none):=Sous-répertoire pour les rapports (rien pour aucun):
+R session configuration=Configuration de session R
\ No newline at end of file

Modified: komodo/SciViews-K/sciviewsk-0.8.1-ko.xpi
===================================================================
(Binary files differ)



More information about the Sciviews-commits mailing list