Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Code structure" section: Describe "synfig-studio" #94

Open
morevnaproject opened this issue May 6, 2022 · 0 comments
Open

"Code structure" section: Describe "synfig-studio" #94

morevnaproject opened this issue May 6, 2022 · 0 comments

Comments

@morevnaproject
Copy link
Member

I have found some notes about structure of "synfig-studio" - https://pastebin.com/LrdkJc4q

It would be nice to add them to "Code structure" section - https://synfig-docs-dev.readthedocs.io/en/latest/common/structure.html

Duplicating text below just in case if the pastebin link become unavailable:

[Core model]
../synfigapp/main - stores information for the entire application (fg/bg colors, width, settings, input devices)

../synfigapp/instance - information unique for each instance (root canvas, canvas interface list, selection manager, save/save_as)

../synfigapp/canvas_interface - information unique to each exported canvas (I believe opening a canvas in the canvas browser loads a new interface, but not a new instance)
;* current time (at playhead), editing mode (normal/animated)
;* wrappers for various actions, such as adding layers or adding/setting/converting valuenodes

../synfigapp/value_desc - link to a value node (eg. layer.param_name parent_value_node.param_index; animated.waypoint; canvas.param)
valuelink - (?) Valuebase link. Inherits from synfig-core, why is this in studio/gtkmm?

../synfigapp/inputdevice - input devices
../synfigapp/settings - settings
../synfigapp/selectionmanager (look-into) - selection manager interface, null selection manager
../synfigapp/editmode - edit mode (normal, animated)
../synfigapp/uimanager - interface class for a UI interface (Dialogs such as yes_no, yes_no_cancel, etc) The actual UI interface used is defined elsewhere


[Action system]
../synfigapp/action - defines types of actions: action, undoable, canvasspecific, super, group
../synfigapp/action_param - defines parameters for action
../synfigapp/action_system - action system and passive grouper
../synfigapp/actions/* - individual actions

[======================= MISC =======================]

../synfigapp/general.h, general.h - gettext macros
../synfigapp/cvs - cvs system
../synfigapp/timegather - (?)

[======================== UI ========================]

[Core UI]
main - entry point, creates an instance of App
app - initializes the application (loads all UI components)
;* manages instances (which one is selected), canvas views, preferences
autorecover - automatic recovery (references app, uses instance)
devicetracker: save/load preferences and init extended input devices
instance - (?) inherits from synfigapp::Instance

[Misc UI]
splash - splash screen window
about - about dialog
adjust_window - (?) Adjustment Window, uses scale factor
onemoment - window saying "one moment, please"
dialog_setup
widget_filename
iconcontroller - pairs icon files with gtk names. Can get an icon for a valuenode or layer

[Canvas view]
canvasview - makes the menus; receives on_duck_changed events; creates a workarea

framedial - a table with play/forward/backward buttons
keyframedial - buttons for seek next, previous, lock
resolutiondial - Increase/decrease/ use low res
toggleducksdial - Show/hide various types of ducks
zoomdial - zoom in/out/etc

[================== Ducks and Tools =================]

[Workarea]
workarea - [inherits from duckmatic and Gtk::Table] the workarea
event_layerclick - event for layer clicked
event_mouse - stores the mouse button pressed and any modifier keys
eventkey - key of events (e.g. refresh, stop, undo, workarea clicked...)

[Ducks]
duckmatic - manages ducks, ducks_dragger, strokes, and Beziers
;* (Also defines duckdrag_base and translate)
;* When a duck drag is done, passes the new locations of the duck to canvasview (reverse manipulation function)

duck - a duck (stores either a point or an angle of rotation)
ducktransform_* - define duck transformations. These are used to transform the ducks so they line up with a transformed object on-screen

[Toolbox]
toolbox.h - the toolbox
widget_defaults - the fill/outline/etc selection widget in the toolbox
widget_tooloptions

[State system]
smach.h - typedef etl::smach<CanvasView,EventKey> Smach; // [state machine]
statemanager -keep track of states
state_* - all of the states
;* states such as normal and rotate define their own duck draggers
../synfigapp/blineconvert - used by draw tool to convert list of points to a bline

[================ Docks and Dialogs =================]
[Docks System]
dockmanager - gets size, position, or contents of a dockable, registers/unregisters dockables, find dockable or DockDialog, present a given dockable (takes a name)

dockable - generic class for dockables. "dnd" is "drag-and-drop"
dockbook - a notebook (tabbed group) of docks
dockdialog - a window, presumably  containing various dockbooks (tabbed groups) of dockables
dock_canvasspecific - base class for canvas-specific dockables

[Docks]
dock_info - (shows mouse position and the color under it)
dock_navigator
dock_history

dock_curves - uses curves widget + some time sliders
widget_curves

[Tree docks]
canvastreestore- (?)

dock_canvases - canvas browser

dock_timetrack
widget_timeslider - the time track, labeled at regular intervals
dialog_keyframe
dialog_waypoint
widget_keyframe_list
widget_waypoint
widget_waypointmodel
keyframeactionmanager - "Add new keyframe" and "keyframe properties" buttons, keeps track of keyframe tree
keyframetree - TreeView of keyframes
keyframetreestore - stores keyframes (is there any point to keyframe_tree_store_class_?)

dock_metadata
metadatatreestore - model for metadata tree

dock_layergroups
layergrouptree - TreeView of layer groups
layergrouptreestore - model for layer group tree

dock_children
childrentree - TreeView of canvas' children
childrentreestore - model for children tree

dock_layers
dock_params
layerparamtreestore - model for layer params tree
layertreestore - model for layers tree
layertree - returns TreeViews of layers and params
layeractionmanager - keeps track of layer tree; creates actions relating to layers

[Widgets for valuenodes]
widget_value - picks the right widget for a valuenode

widget_canvaschooser - Canvas valuenode (select canvas)
widget_color
widget_coloredit
widget_gradient - gradient valuenode
widget_compselect - select the composition (file) being edited
widget_distance - spinbutton (for type real when it's a distance)
widget_enum - enum type values
widget_time - time valuenode
widget_vector - (aka point)

[Dialogs]
dialog_color - select a color
dialog_gradient -set a gradient
canvasoptions -toggles grid snapping, visibility, and size
canvasproperties - name, id, info, and metadata

[======================= Other ======================]

[Renderer system] - I have not looked into this much
asyncrenderer
preview - Preview class and the preview widget
renddesc - RendDesc widget (Render menu - why is it called desc?)
renderer_* - rendering system
workarearenderer
dialog_preview
dialog_targetparam - parameters for rendering target

[Audio system] - Did not look at, as it is disabled
audiocontainer
dialog_soundselect
widget_sound

[Modules]
./mod_mirror/ - Mirror tool
./mod_palette/ - Palette
module - interface class for models: has methods start() stop()

[======================= MISC =======================]

ipc - (?)
keymapsettings - (Defines the structures for managing key map settings) affects accelerators

groupactionmanager - (look-into) references LayerGroupTree

compview - Does not appear to be used anywhere
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant