Line 66: |
Line 66: |
| (the series of tabs encapsulated in another series of tabs is potentially difficult for a learner to comprehend, but an alternative tree view is thought inappropriate because of the horizontal space consumed, and because use of a module should be constrained to the public API of the module). | | (the series of tabs encapsulated in another series of tabs is potentially difficult for a learner to comprehend, but an alternative tree view is thought inappropriate because of the horizontal space consumed, and because use of a module should be constrained to the public API of the module). |
| | | |
− | Activity canvas GTK+ widget hierarchy: | + | Activity canvas GTK+ widget hierarchy, assuming two modules open, modules "main" and "test", of which "main" has a file "file.py", and "test" has a file "test.py": |
− | *gtk.Notebook (for viewing and writing code, one page per module) | + | |
− | **gtk.Notebook (one page per file in each module) | + | *gtk.Notebook (tab labels "main", "test", "+") |
− | ***GtkSourceView (one for each file in each module) | + | **notebook page label "main", a gtk.Notebook (tab labels "__doc__", "file.py", "setup.py", "+") |
| + | ***notebook page label "__doc__", a GtkSourceView in read-only mode, hidden if __doc__ is empty, |
| + | ***notebook page label "file", a GtkSourceView for "file.py", |
| + | ***notebook page label "setup", a GtkSourceView for "setup.py", hidden if not yet edited by learner, |
| + | ***notebook page label "+", creates a new file, prompts for file name, defaults to .py, |
| + | **notebook page label "test", a gtk.Notebook (tab labels "__doc__", "test.py", "setup.py", "+") |
| + | ***notebook page label "__doc__", a GtkSourceView in read-only mode, hidden if __doc__ is empty, |
| + | ***notebook page label "test", a GtkSourceView for "test.py", |
| + | ***notebook page label "setup", a GtkSourceView for "setup.py", hidden if not yet edited by learner, |
| + | ***notebook page label "+", creates a new file, prompts for file name, defaults to .py, |
| + | **notebook page label "+", creates a new module, prompts for module name. |
| + | |
| + | (if the page "+" technique does not work, then toolbar buttons will be required to create a new module, create a new file in a module, or import an example module). |
| | | |
| === Display - Running === | | === Display - Running === |
Line 87: |
Line 99: |
| === Changes === | | === Changes === |
| Partial list of changes to bring Pippy existing source to a state consistent with the design above: | | Partial list of changes to bring Pippy existing source to a state consistent with the design above: |
− | *remove the examples tree widget from the main screen, provide it only as an "open an example bundle" function, | + | *remove the examples tree widget from the main screen, provide it only as an "open an example bundle" function, this will permit the GtkSourceView widget to be full screen width, |
− | *remove the output window from the main screen, provide it only when a program is run, and only if the program generates stdout or reads from stdin, | + | *remove the output window from the main screen, provide it only when a program is run, and only if the program generates stdout or reads from stdin, this will permit the GtkSourceView widget to be nearly the full height available, |
− | *provide multiple text entry widgets, once for each file in each module, | + | *provide multiple GtkSourceView widgets, once for each file in each module, within gtk.Notebook within gtk.Notebook, |
| **the outermost tabs will be module names, | | **the outermost tabs will be module names, |
− | **the innermost tabs will be file names within each module. | + | **the innermost tabs will be file names within each module, |
− | *enlarge the program text entry widgets to be nearly full screen width,
| |
| *on toolbar save button, save all modules and files in a journal entry, | | *on toolbar save button, save all modules and files in a journal entry, |
− | *when a module is selected, provide an export button that creates a sugar journal entry for a distutils source distribution of the package, for sharing, | + | *when a module is selected, provide an export button that creates a sugar journal entry for a distutils source distribution package, for sharing, |
− | *provide a way to import zip bundles from journal into the current pippy instance, using the object chooser, successful import will add to the modules displayed, | + | *provide a way to import pure python module or distutils source distribution package from journal into the current Pippy instance, using the object chooser, successful import will add to the modules displayed, |
− | *on execution of a bundle, allow access to all other currently loaded bundles via import, and access to system bundles via import, | + | *on execution of a module, allow import of all other currently displayed modules, modules included with Pippy (such as the existing pippy module), and system modules, |
| + | *convert the examples to either pure python module or package form. |
| | | |
| === Alternative === | | === Alternative === |