Warning, /education/rkward/TODO is written in an unsupported language. File is not indexed.

0001 The following list of TODO-items is NOT complete!
0002 Also, plans change frequently. If something is listed for a specific release, that's no more than a rough plan.
0003 All in all, this TODO list is mostly for internal purposes, and many parts may not necessarily be intellegible to anybody but the authors.
0004 
0005 KF5 port:
0006 Things to do:
0007 - Grep for "KF5 TODO"
0008 Things to test at the end:
0009 - Everthing concerning loading / saving, from recent files, scripts, workspace, etc.
0010   - Moved installations, moved workspaces.
0011 Knwon issues to fix:
0012 - ???
0013 
0014 Minor layout stuff to fix in plugins:
0015 - Barplot: "Display values" should be checkable frame
0016 - Sort data: optionset should simply use vertical stacking, or fix the horizontal alignment
0017 
0018 Upcoming porting efforts: Port from QtScript to QJSEngine:
0019 - Unforunately, QJSEngine lacks support for pre-compiled JS (QScriptProgram), ATM (Qt 5.5). We'll need some other optimization.
0020 - Idea: Use _one_ engine for each plugin, _including_ any embedded plugins. Wrap existing JS code into a closure, exporting only the "primary" functions as properties of an object.
0021   - Then, the scriptbackend will call plugin_a.preprocess(), etc.
0022   - The scriptbackend knows which of the plugins it is currently dealing with, and thus can trivially relay all getValue()-calls as appropriate.
0023 - Same approach for UI scripting.
0024 
0025 Port from QtWebKit to QtWebEngine
0026 - Should be mostly unproblematic
0027   - Gah, QWebEngine does not compile with MinGW! Need some entirely custom solution, instead? https://github.com/GreatTux/CefMinGWQt
0028 - Somewhat unfortunate that QWebElement will be gone. We might be using this to amend the context menu, e.g. for copying one section to clipboard / deleting one section, etc.
0029   - Could perhaps be done by catching contextmenu event in JS, instead, then send to frontend, somehow.
0030 
0031 New features in R 3.1.0 to make use of / support:
0032 
0033 - A new browser command s has been added, to “step into” function calls.
0034 - A new browser command f has been added, to “finish” the current loop or function.
0035 
0036 Simple stuff to do soon:
0037         - RKConsole: Show a notice (with "don't show again"-box, of course) when first using Ctrl+C shortcut
0038 
0039 i18n-Thoughts:
0040   + Notes:
0041     - Is it a problem to sync KDE_LANG and LANGUAGE? Should that also be set for the backend?
0042     - Lifetime of RKMessageCatalogs? Should probably be destructable, at least when reloading pluginmaps. Should be possible to implement in a sane ways 
0043       using QSharedPointer magic.
0044     - Don't forget to write documentation
0045       - Also general documentation for JS-functions is missing!
0046     - What should be the policy regarding installing translations (80% criterion)
0047     - i18n'ed plugins vs. automated tests
0048       - Sure, we can run automated tests under C locale. But it would be nice to have an additional check that translations don't cause
0049         any obvious problems.
0050         - At least we could check for errors
0051         - Perhaps a special diff of the generated R commands, where all quoted strings and comments are stripped?
0052 
0053 MacOS:
0054   - Avoiding mis-placment of certain menu-entries: QAction::menuRole()
0055 
0056 Bugs outside RKWard:
0057         - KDE 4
0058                 - why is the icon style only honored for mainToolBar (in KXMLGUIBuilder)? It looks like this is done on purpose, but why???
0059                         - http://lists.kde.org/?l=kde-core-devel&m=103307809508725&w=2
0060 
0061 Bugs:
0062         - XMLGUI:
0063                 - The edit menu is broken in the main window, but not detached windows (for script editor, console)
0064                         - Ok in KDE 4.3.4 / Linux
0065                         - Broken in KDE 4.4.1 / Windows
0066                         - Apparently it is the *switching* of parts that is the problem. For the very first part, the GUI is ok, after that all DefineGroups seem to be forgotten
0067         - There is definitely a memory leak in handling output!
0068                 - Produce lots and lots of output -> watch mem usage grow
0069                 - Probably the RKConsole is to blame (run outside console -> no significant increase)
0070                         - Maybe the kate-part needs to be reset (syntax parse tree) every once in a while?
0071         - RKEditorDataFrame:
0072                 - sometimes the current cell indicator (the box around the current cell) gets lost.
0073                         - Navigation and editing is still fine
0074                         - seems to happen more often with larger data frames
0075                         - more precisely: seems to happen after scrolling
0076                         - no idea, why this happens
0077                 - The editor is prone to race conditions of the type:
0078                         - 1. user edits something in the editor
0079                         - 2. before the edit has been synced to the backend, a different command touches the data
0080                         - The editor should keep track of which / how many synchronisation commands are still outstanding.
0081                         - If an edited object was touched while sync commands are still outstanding, complain and let the user handle the situation
0082         - options ("pager") is currently broken in RKWard. May not be a problem, but we offer a GUI to configure it in Settings->Configure RKWard...
0083 
0084 Compilation / technical
0085         - Incorporate FreeBSD patches http://www.freshports.org/math/rkward/files.php?message_id=200609172111.k8HLBiob081349@repoman.freebsd.org
0086         - eventually the whole RData-structure should be made to use QList-types
0087 
0088 R backend:
0089         - tcl/tk can evaluate all sorts of R stuff, even if there is no "command". It would help, if we simply defined a "default" command to be active at such times.
0090 
0091 UI-stuff
0092         - find/create a set of menu icons (https://sourceforge.net/mailarchive/message.php?msg_id=37891606)
0093         - "First-run wizard"
0094                 - pre-install R packages
0095                 - notify if r-base-html package is not installed
0096         - Snippets library
0097                 - pre-defined snippets to base scripts on
0098                 - custom snippets
0099                 - can be categorized by keywords / search
0100         - RKEditorDataFrame
0101                 - undo/redo
0102                 - deletion of multiple columns in one step
0103                 - when pasting a large array, rows should not be added one by one. Suggested algorithm:
0104                         - if we find out we've already pasted 100 rows, first check, how many more are to come and add this many both to the variable and to the R workspace. Can potentially avoid *lots* of work
0105         - Twintable/RKEditorDataFrame
0106                 - merge the two classes
0107                 - more efficient syncing: fetch only the values actually needed instead of the whole table. How?
0108                 - make configurable:
0109                         - invalid color (global and per variable)
0110                         - unused color (global and per variable)
0111                         - default alignment (per var type)
0112                         - default precision
0113                         - display of factor level labels (global and per variable)
0114                                 - might default to "only for factors"
0115                         - delay of factor-level popup
0116                 - highlighting of value ranges
0117         - Create an editor for single vectors/factors, or rework RKEditorDataFrame to handle those as well
0118         - Package management dialog
0119                 - auto-updating functionality (every x days, every new session, never; see https://sourceforge.net/mailarchive/message.php?msg_id=37960665)
0120                 - What about the checkBuilt-option to old.packages()
0121         - RObjectListView
0122                 - double click action should be configurable: View, Edit, insert name into current script, insert name into console, nothing
0123         - RKConsole:
0124                 - is tab completion for file names still crashy?
0125                         - currently, problem seems to be inside KUrlCompletion
0126                 - Fix pasting at other positions than line end
0127                 - Prevent cursor from venturing into lines other than the last line
0128                 - Allow multi-line command editing?
0129         - Script editor:
0130                 - code completion
0131                         - probably we can trim down the completion widget by providing custom headerData()? (Low priority)
0132                 - placement of menu options?
0133                 - new action "Source file"
0134                 - deal better with overlapping blocks in the script editor (brush merging?)
0135         - RKConsole / Script editor:
0136                 - highlight only valid function names
0137         - RKVarslot:
0138                 - when adding vars to a multi varslot, these should become selected (so you can removed them again with a single click)
0139         - RKVarselector:
0140                 - pop-up-able selectors (maybe more generic, not only for varselectors): Like a "Browse" button
0141         - RKCommandLog:
0142                 - optionally keep a file log!
0143         - find out how to save toolbar states properly in parts-GUI
0144                 - also setting the toolbar state for all windows with that toolbar
0145         - from Ralf:
0146                 - show first few values of vectors/scalars in tool-tip in workspace browser
0147         - Graphics Device List window
0148                 - (see http://sourceforge.net/mailarchive/message.php?msg_id=37825223)
0149                 - par (no.readonly=TRUE) and par () to fetch available parameters and determine read-only state
0150                 - device list would only be fetched when opening the window, not kept up to date?
0151                 - access to graphics device plugins
0152         - Help system
0153                 - find a good way to open R help pages in the same window
0154         - Working directory
0155                 - show current wd in <browser>, somewhere
0156         - Settings UI:
0157                 - see https://mail.kde.org/pipermail/rkward-devel/2007-March/001139.html
0158                 - R-Backend-Settings:
0159                         - the options should gain a "use default" checkbox to cope with changing R option defaults
0160                         - tooltips for the options on "R-Backend" tab about the internal R-function call
0161         - project/session handling: files, workspace, current working directory.
0162         - file system browser tab
0163                 - a way to inline pdf/ps/jpg/png files like in KDevelop?
0164         - Quitting:
0165                 - instead of closing windows one by one, and asking to save changes if necessary, first list all windows that might need to be saved, let the user chose to save them, then close all windows without further questions.
0166         - Vignettes:
0167                 - any means of fetching a description of the package before installing?
0168                 - Add a vignettes browser to the help menu
0169                 - Add context menu with vignettes to package environments in object browser
0170                         - likely, package environments should try to fetch vignettes, when "updating"
0171 
0172 Internal stuff:
0173         - RCommand deletion
0174                 - dealing synchronously with commands (e.g. via a modal RKProgressControl) would be so much easier, if the commands would not be deleted quite as soon!
0175         - rklocalesupport:
0176                 - does locale switching / detection work? Does Qt have something, yet?
0177         - Handling fonts:
0178                 - http://sourceforge.net/mailarchive/forum.php?thread_id=31631211&forum_id=12970
0179         RKVariable:
0180                 - True Support for Logicals
0181                 - In the current design, RKVariable would not handle storage mode changes from outside well at all
0182         RCommandReceiver:
0183                 - add virtual rCommandStarted () function, so receivers can find out, when their command becomes active
0184         REmbedInternal:
0185                 - probably we do not need na_double at all (just any NaN) => less confusion
0186         Detecting object modifications inside R:
0187                 - left TODO:
0188                         - detection hole:
0189                                 x is 1
0190                                 user does
0191                                 rm (x); x <- function () {}
0192                                 (object list remains the same, watch was not active, but symbol changed)
0193                                 - will need to put an extra notification inside .rk.watch.globalenv ()? Will that get run?
0194         - RExpressionObject as an abstraction for R-Expressions (i.e. manually edited expressions).
0195                 - It will be possible to "store" these in the RObjectList and select them just like any other object
0196                 - RKVarslot will allow editing the selected value by hand (or just typing the name in)
0197                         - How to do this nicely UI wise?
0198         - RThread:
0199                 - Detection of commands that run for a suspiciously long time
0200                         - Show "do you want to cancel ..." option after configurable amount of time
0201         - Object editing / modification tracking:
0202                 - functions to set double/int/string-vectors directly. Use in paste-operations
0203         - error-handling/raising in .rk.do.call
0204         - I've changed the simple RInterface::issueCommand (QString, ...) command to return a pointer to the RCommand created. This will allow for lots of small cleanups. Do them.
0205                 - well, on second thought, it might be better to rely more on RCommand::id () instead of pointers. Why? The id is unique (until integer overflow). The pointer may be reused after a delete -> potential problem when trying to cancel command which is actually already deleted (and potentially other cases)
0206                 - let's set this back for a while
0207         - .rk.get.available.packages ()
0208                 - use external (file) storage for cache to save mem
0209         - Always save workplace layout to a file, never to config. Even for the "global" option.
0210         - all RKComponents:
0211                 - in the documentation we call the return value of value() the "default property". Why not simply define a "default property" for each component, instead of reimplementing value()?
0212 
0213 General code:
0214         - get rid of all the superflous dependencies: http://lists.debian.org/debian-devel/2005/12/msg00439.html
0215         - remove classes/files:
0216                 - RKGlobals
0217                         - static members should be moved to the respective classes. Much cleaner!
0218         - remove all the passing around of KGlobal::config() as a parameter
0219         - grep sources for "KDE4"
0220 
0221 R plugins:
0222         - distribution plugins (probabilities and quantiles)
0223                 - probably all these could use an option "Store result (to name) / Print result / print and store"
0224         - plugin help files:
0225                 - It would be nice to add the <id="..."> fetaure like <settings id=".."> in the technical section too. Also may be add something like <tag=".."> for the tags or variable which can be in italics, grey color.
0226                 - Find a way to make help searchable, preferentially within the R help search window
0227         - import plugins:
0228                 - standardized? checkbox to open imported object for editing
0229                         - would be nice, if this box could be affected (default) by a global setting
0230         - Generalized preview:
0231                 - E.g. for data import plugins
0232         - Ability to pre-select some default values with a single option
0233         - Spinbox:
0234                 - find a solution for "pending changes". Currently, if the user enters a value, manually, then presses submit, the old value will be used (the new value is only set, when the focus changes to another widget). Probably the RKSpinbox should emit signals for "pending" and "ready". The plugin spinbox should listen to those and not be satisfied as long as a change is pending. Maybe mark the spinbox in yellow, while a change is pending.
0235                 - options min_inclusive / max_inclusive for real number spinboxes (defaulting to true)
0236         - use SVG device for graphics output
0237         - X11->Export:
0238                 - provide SVG export option
0239         - provide context menu / other UI to export to different formats / edit
0240         - plugins (general)
0241                 - ODS filter (try to find someone to implement one in R)
0242         - formula-widget:
0243                 - use smart sorting, esp. of generated string
0244                 - add labels, add "up to level" option
0245                 - add constant term option
0246 
0247 API documentation:
0248         - add page containing a rough overview of general architecture
0249         - RCommandStack
0250 
0251 Configuration:
0252         - additional console/log options:
0253                 - color highlighting for warnings/errors
0254         - additional R engine options:
0255                 - stack size (commandline arg --map-ppsize)
0256                 - disable html help
0257         - new dataeditor options:
0258                 - see comments on RKEditorDataFrame