Herbert Breunung avatar Herbert Breunung committed 9569538

internals doc: not finished but displayes current state of thought

Comments (0)

Files changed (2)

doc/CompleteProgramming.pod

 =head1 Complete Programming
 
-I coined the method we develope Kephra with, because its different enough
-from most other stuff that was written about.
+=head2 Main Goal
 
-=head2 Goals
+Highest aim is the overall user experience. 
+This means not only (almost) no bugs and good documentation,
+but 
 
 =over 4
 
 
 =head2 Why
 
+I don't like 
+I coined the method we develope Kephra with, because its different enough
+from most other stuff that was written about.
+
+
 =head2 Defining Task
+

lib/Kephra/Internals.pod

 =head1 Kephra::Internals
 
 If you want to touch the Kephra sources -
-this document explains where to find what and how does it all work together.
+this document explains where to find what and roughly how it works together.
 The terminology is explained in the glossary at the end.
 In case you learn better by looking at the good documented code - start at Kephra::API.
 
-
-
 =head2 NAMESPACES
 
 In each file is only one package with exactly the same name as the file.
 
 With every directory you go deeper into the tree the modules will get more
 specific. Thats why the directory "lib/Kephra" has only the most common
-tools and libraries. Other dir:
+tools and libraries. Other dir (a good first approximation is the main menu):
 
 =over 4
 
-=item * API - API for plugins, most cross module calls, central data structures
+=item * API - API (proxy) for most cross module calls, plugins, central data
 
 =item * App - visuals
 
 
 =item * Kephra::API::Command
 
-Every function the user is able to trigger has an ID and gets called over this API.
-In head of every module after package and use and vars are the definitions
-which rgister these commands in this data structure.
-Its for monitoring, triggers, macros and other introspection.
-Also helps to make simple menu and toolbar definitions (are lists of CommandIDs).
+- Every function the user is able to trigger has an CommandID
+  and gets called over this API.
+- In head of every module after package and use and vars are the definitions
+  which rgister these commands in this data structure.
+- Its for monitoring, triggers, macros and other introspection.
+- Also helps to make simple menu and toolbar definitions (are lists of CommandIDs).
 
 =item * Kephra::API::DocumentStash
 
 
 =item * Kephra::API::GuiBuilder
 
-- transformes wiki syntax => data structure => GUI and back
+- transform wiki syntax => data structure => GUI and back
 
 =item * Kephra::API::KeyMap
 
 
 =item * Kephra::API::Sandrum
 
-- vi like shortcut language for triggering commands
+- vi like shortcut language for triggering commands from the IO Unit by typing
 
 =item * Kephra::App
 
 - handles GUI related boot and shutdown sequence
 - derived from Wx::App
 
+=item * Kephra::App::Bar::Tab
+
+- base TabBar, previous DocBar
+
 =item * Kephra::App::Dialog
 
 - all dialogs are called from here
 
 =item * Kephra::App::Editor
+
+- main class of the editing widgets
+
 =item * Kephra::App::Focus
 
 - keeps track in which widget got to make save way back if needed
 
 =item * Kephra::App::Menu
+
+- compiles menu definitions to data structures and them into menus
+
 =item * Kephra::App::PaintBar
-=item * Kephra::App::Panel
+=item * Kephra::App::Panel  - wrapper for Wx::Panel, uses K::App::Sizer
 =item * Kephra::App::Sizer
 =item * Kephra::App::Splitter
 =item * Kephra::App::Toolbar
-=item * Kephra::App::Util
+=item * Kephra::App::Util  -  GUI helper
+=item * Kephra::App::Window  -  main window with all layout
 
-- GUI utilities
+=item * Kephra::Config  -  config menu function (internal data handling)
 
-=item * Kephra::App::Window
+=item * Kephra::Document  -  document menu (doc properties)
 
-- main window
+=item * Kephra::Edit  -  basics functions for the edit menu
 
-=item * Kephra::Config
-=item * Kephra::Document
-=item * Kephra::Edit
-=item * Kephra::File
-=item * Kephra::Help
-=item * Kephra::Log
-=item * Kephra::Worker
+=item * Kephra::File  -  most file menu functions
 
+=item * Kephra::Help  -  display documentation
+
+=item * Kephra::Log  -  logger
+
+=item * Kephra::Worker  -  does heavy lifting work in the background, so app stays reactive 
 
 =back
 
-
-* Kephra::App::Panel
-wrapper around Wx::Panel + Wx::BoxSizer, helps not to deal with with sizers
-is a stepping stone to the GCL
-
-* Kephra::App::Window
-main frame/window and main layout of the app
-holds all the Kephra::App::Part s and Bars
-
-* Kephra::Config
-Interface to most not document related internally held data.
-We have a much broader understanding of configuration.
-Even Icons and localisation belong to it.
-Its all data which puts the app in the state it is.
-
-* Kephra::Document
-document properties, syntax modes
-
-* Kephra::Edit
-text processing
-
-* Kephra::Plugin
-Kephra::API::Plugin is the base class for all plugins
-
-
-
 =head1 Glossary
 
 =head2 App
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.