Source

Kephra / lib / Kephra / Internals.pod

Full commit
=head1 API

The module Kephra::API is the best starting point to understand the inner workings.
It's one design goal and purpose of this file, because it gives an overview of
all important functions and values and shows where they originate. From here
you can step to the other major interfaces that can be seen in the first lines.

But more vitally it decouples cross module calls and allows to change things
under the hood. As long as the first version number (see L<Versioning>)
does not change, nothing will be removed from the API.

=head1 CommandList

=head1 KeyMap

=head1 EventTable

=head1 Glossary

=head3 App

everything visible and GUI (Wx) related

=head3 App::Part

visual area dedicated for one purpose, editor is the most prominent,
but ther are also FileBrowser, IOUnit and more

=head3 Editor

one widget for editing text

=head3 Edit

namespace for the actual editing operations

=head3 Panel

area to place widget on, can be under anything, even under each editor
a Kephra::App::Panel is a helper class that manages its sizer
(visibility and ordering of elements)

=head1 Document

=cut

__END__

our @needed_at_first = qw/App API/;
our @starttime_loaded_modules = qw/
	App App::Util API Config Config::Default Config::File
	Document DocumentStash CommandList Edit EventTable 
	File KeyMap PluginRegistrar SanddrumInterpreter Works/;
our @runtime_loaded_namespaces =
	qw/App::Dialog Config::Default/;

our @command_modules = 
	qw/App App::Panel::Editor App::Panel::FileBrowser App::Panel::IOUnit
	App::Panel::OrgPad App::Panel::ProjectManager App::Panel::SratchSheet
	App::Panel::TextLab App::Panel::TreeLib
	CommandList Config 
	Edit File EventTable KeyMap PluginRegistrar SanddrumInterpreter/;
our @oop_interfaces = 
	qw/App::Editor App::Panel App::Splitter App::SidePanelController 
	   App::Bar::Document Document/;