From cca66b9ec4e494c1d919bff0f71a820d8afab1fa Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:24:48 +0200 Subject: Adding upstream version 1.2.2. Signed-off-by: Daniel Baumann --- doc/NewAppArchitecture/01-title.svg | 230 +++ doc/NewAppArchitecture/02-outline.svg | 517 +++++++ doc/NewAppArchitecture/03-current.svg | 581 ++++++++ doc/NewAppArchitecture/04-current-main.svg | 686 +++++++++ doc/NewAppArchitecture/05-current-objects.svg | 1270 ++++++++++++++++ doc/NewAppArchitecture/06-current-desktop-view.svg | 785 ++++++++++ doc/NewAppArchitecture/07-current-problems.svg | 729 +++++++++ doc/NewAppArchitecture/08-inkscape-gtkmm.svg | 576 ++++++++ doc/NewAppArchitecture/09-future-capabilities.svg | 591 ++++++++ doc/NewAppArchitecture/10-future-main.svg | 609 ++++++++ doc/NewAppArchitecture/11-future-ink-app.svg | 614 ++++++++ doc/NewAppArchitecture/12-future-run-modes.svg | 1048 +++++++++++++ .../13-future-ink-app-editor.svg | 1549 ++++++++++++++++++++ doc/NewAppArchitecture/14-evolving.svg | 619 ++++++++ 14 files changed, 10404 insertions(+) create mode 100644 doc/NewAppArchitecture/01-title.svg create mode 100644 doc/NewAppArchitecture/02-outline.svg create mode 100644 doc/NewAppArchitecture/03-current.svg create mode 100644 doc/NewAppArchitecture/04-current-main.svg create mode 100644 doc/NewAppArchitecture/05-current-objects.svg create mode 100644 doc/NewAppArchitecture/06-current-desktop-view.svg create mode 100644 doc/NewAppArchitecture/07-current-problems.svg create mode 100644 doc/NewAppArchitecture/08-inkscape-gtkmm.svg create mode 100644 doc/NewAppArchitecture/09-future-capabilities.svg create mode 100644 doc/NewAppArchitecture/10-future-main.svg create mode 100644 doc/NewAppArchitecture/11-future-ink-app.svg create mode 100644 doc/NewAppArchitecture/12-future-run-modes.svg create mode 100644 doc/NewAppArchitecture/13-future-ink-app-editor.svg create mode 100644 doc/NewAppArchitecture/14-evolving.svg (limited to 'doc/NewAppArchitecture') diff --git a/doc/NewAppArchitecture/01-title.svg b/doc/NewAppArchitecture/01-title.svg new file mode 100644 index 0000000..7906ed7 --- /dev/null +++ b/doc/NewAppArchitecture/01-title.svg @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bryce Harrington + Application Architecture + diff --git a/doc/NewAppArchitecture/02-outline.svg b/doc/NewAppArchitecture/02-outline.svg new file mode 100644 index 0000000..1c6502e --- /dev/null +++ b/doc/NewAppArchitecture/02-outline.svg @@ -0,0 +1,517 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Overview + + * Current inkscape gui/app architecture* Problems with current architecture* Current inkscape_gtkmm architecture* Future capabilities we'd like to support* Next generation architecture* Evolving to next gen inkscape architecture + + + diff --git a/doc/NewAppArchitecture/03-current.svg b/doc/NewAppArchitecture/03-current.svg new file mode 100644 index 0000000..cd21f61 --- /dev/null +++ b/doc/NewAppArchitecture/03-current.svg @@ -0,0 +1,581 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Current Inkscape Architecture + + * Core assumption: This is a Linux GUI Editor _only_ + Well, plus a GUI viewer, too + Well, plus non-GUI cmdline tool, too + Well, plus all the above on Windows, too + (Architecture has grown organically)* Core architecture + Gtk::Main - runs program + Inkscape::Application - GUI editing mode - Contains 'Document's - Each Document has one or more 'View's - An editable View is called a 'Desktop' + Other run modes (inkview, cmdline) handled uniquely + + + diff --git a/doc/NewAppArchitecture/04-current-main.svg b/doc/NewAppArchitecture/04-current-main.svg new file mode 100644 index 0000000..68ad56f --- /dev/null +++ b/doc/NewAppArchitecture/04-current-main.svg @@ -0,0 +1,686 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + main() Process Flow + + + main() + WinMain() + + + + sp_main_console() + + sp_main_gui() + + + + + + slideshow modesp_slideshow_new(files) + + editor modesp_file_open(files) + + + diff --git a/doc/NewAppArchitecture/05-current-objects.svg b/doc/NewAppArchitecture/05-current-objects.svg new file mode 100644 index 0000000..03ca27a --- /dev/null +++ b/doc/NewAppArchitecture/05-current-objects.svg @@ -0,0 +1,1270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Current Objects + + + Inkscape::Application + + Args + + Prefs + + + + + + + + + + + + + + + + + + + + + + Doc + Doc + Doc + Desktop + Desktop + Desktop + + + diff --git a/doc/NewAppArchitecture/06-current-desktop-view.svg b/doc/NewAppArchitecture/06-current-desktop-view.svg new file mode 100644 index 0000000..9aa7cdd --- /dev/null +++ b/doc/NewAppArchitecture/06-current-desktop-view.svg @@ -0,0 +1,785 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Views and Desktops + + + Desktop + + View + + SPView - Base class for SVG views - Has a pointer to a doc (SPDocument) - Contains message stack and message context - Handles status messages - Handles redrawing screen - Emits signals on view changes - Provides sp_desktop_widget_new() + SPDesktop - Subclass of SPView - Implements an "Editable view" - Holds pointer to Inkscape::Application - Contains scrollbar, ruler, canvas, guides, etc. - Defines scroll limits, zoom min/max, fullscreen - Manages event contexts, coordinate systems, zooming, etc. + + + diff --git a/doc/NewAppArchitecture/07-current-problems.svg b/doc/NewAppArchitecture/07-current-problems.svg new file mode 100644 index 0000000..7087f8e --- /dev/null +++ b/doc/NewAppArchitecture/07-current-problems.svg @@ -0,0 +1,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Problems + + * Inkscape seems to want to have "run modes" + editor, viewer, cmdline, more...? + If we needed a new mode, it would be hard to fit in except as hacks + Currently, these modes implemented as exceptions, but it's buggy - popping up warning dialogs in cmdline mode - inconsistent URI / UTF handling - duplication of code for different modes may lead to divergences* main() has too much code in it (>750 lines) + cmdline handling code needs broken out separately* winmain() is not well integrated (Q's listed in makefiles)* Current architecture is C / Gtk+; we need C++ / Gtkmm + + + diff --git a/doc/NewAppArchitecture/08-inkscape-gtkmm.svg b/doc/NewAppArchitecture/08-inkscape-gtkmm.svg new file mode 100644 index 0000000..5123944 --- /dev/null +++ b/doc/NewAppArchitecture/08-inkscape-gtkmm.svg @@ -0,0 +1,576 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape_gtkmm Architecture + + * Very much a work-in-progress + top level architecture still incomplete* Inkscape::Application + Modelled after current Inkscape::Application struct + Inkscape::ApplicationImpl allows 'interface hiding' - Helps keep *.h include hierarchy trim and clean - Subclasses Gtk::Window !! problem, only one Window per application - No code for creating/managing documents + + + diff --git a/doc/NewAppArchitecture/09-future-capabilities.svg b/doc/NewAppArchitecture/09-future-capabilities.svg new file mode 100644 index 0000000..f505569 --- /dev/null +++ b/doc/NewAppArchitecture/09-future-capabilities.svg @@ -0,0 +1,591 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Future Capabilities Desired + + * Make it easier to have multiple run-modes + Commandline mode (--no-gui) + Presentation mode (inkview *.svg) + Old Gtk+ interface (--old-gui) + New Gtkmm interface (--new-gui) + Whiteboard interface (inkboard) + Gimp-style interface? + GUI testing mode? + Animation playing mode? + More...?* Inkscape::Application should be run-mode neutral + Provide high level services / registries for all run modes + + + diff --git a/doc/NewAppArchitecture/10-future-main.svg b/doc/NewAppArchitecture/10-future-main.svg new file mode 100644 index 0000000..66d9b57 --- /dev/null +++ b/doc/NewAppArchitecture/10-future-main.svg @@ -0,0 +1,609 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Future main() + + int main(int argc, char *argv[]){ Inkscape::Application app(argc, argv); return app.run();}* All logic moved inside Inkscape::Application + popt, homedir path detection, prefs, extensions, etc. + Run mode handling* Could also include a definition of WinMain here if needed + + + diff --git a/doc/NewAppArchitecture/11-future-ink-app.svg b/doc/NewAppArchitecture/11-future-ink-app.svg new file mode 100644 index 0000000..4ec02fe --- /dev/null +++ b/doc/NewAppArchitecture/11-future-ink-app.svg @@ -0,0 +1,614 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Future Inkscape::Application + + Inkscape::Application + Option handling - Select run mode from $arg[0] and/or opts given + Paths (homedir, config file dir, share dir, etc.) + Preferences + Extensions registry + Primary Run Mode object creation/maintenance Inkscape::Application::RunMode* runmode;Inkscape::Application::RunMode + Each run mode will subclass this base class + Provides an 'implementation hiding' ability similar to Inkscape::ApplicationImpl in inkscape_gtkmm + + + diff --git a/doc/NewAppArchitecture/12-future-run-modes.svg b/doc/NewAppArchitecture/12-future-run-modes.svg new file mode 100644 index 0000000..0e5ec67 --- /dev/null +++ b/doc/NewAppArchitecture/12-future-run-modes.svg @@ -0,0 +1,1048 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Future Run Modes + + + Inkscape::Application::RunMode + + I::A::Editor + + I::A::Presenter + + I::A::Whiteboard + + I::A::Cmdline + + I::A::TestSuite + + I::A::Player + + BASECLASS + RUN MODESUB-CLASSES + $ inkscape + $ inkview + $ inkboard + $ inkscape --no-gui + $ inkscape --test + $ inkscape --play + + + + + + + diff --git a/doc/NewAppArchitecture/13-future-ink-app-editor.svg b/doc/NewAppArchitecture/13-future-ink-app-editor.svg new file mode 100644 index 0000000..7bfd93b --- /dev/null +++ b/doc/NewAppArchitecture/13-future-ink-app-editor.svg @@ -0,0 +1,1549 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Current Objects + + + Inkscape::Application::Editor + + + + + Inkscape::Document + + + + + + + + + + + + + + + + Doc + MultiPageDoc + Doc + I::V::Edit + I::V::Play + Inkscape::View::* + + + Palettes + + + + + I::V::Edit + + + + + + + + + diff --git a/doc/NewAppArchitecture/14-evolving.svg b/doc/NewAppArchitecture/14-evolving.svg new file mode 100644 index 0000000..506d19e --- /dev/null +++ b/doc/NewAppArchitecture/14-evolving.svg @@ -0,0 +1,619 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Evolving inkscape_gtkmm + + * Expand Inkscape::Application + High level services (GC, args, paths) + Registries (extensions, prefs, etc.)* Create new Inkscape::Application::RunMode + Abstract base class* Refactor Inkscape::Application::ApplicationImpl + Rename it to Inkscape::Application::Editor + Make it subclass I::A::RunMode + Move items from SPDesktop into here* Create new Inkscape::Application::Cmdline + Make it subclass I::A::RunMode + Move stuff from main.cpp into here + + + -- cgit v1.2.3