110 Commits
Author SHA1 Message Date
Mike-Solar 66d761b4b7 R8: finish app/ pure C ABI migration (P3-P9) and make OTIO required
- app/ no longer includes engine C++ headers nor holds engine C++ types:
  engine access goes through the oakengine C ABI plus C++ wrappers
  (oakutil/oaknode.h, oakutil/oakvideo.h) and app-local mirror types
  (tooltypes, trackreferencehandle, timelinecommonapp, keyframetypes,
  subtitleapp, serializedlayoutinfoapp, nodevaluehandle, sliderdisplaytypeapp)
- engine: new C ABI functions for block/track/clip/transition navigation
  and predicates, links, caches, waveform/playback, disk folder,
  sequence_track_list, node_free, footage_is_valid, block_get_track,
  get_brush; loadotio/saveotio ported to the current engine API
- OTIO is now a required dependency: CI and CD build it on every
  platform, FindOpenTimelineIO fixed for OTIO 0.16/0.19 (the old deps
  include requirement silently disabled OTIO everywhere), runtime
  libraries are bundled into packages and copied next to macOS binaries
  (oak_copy_otio_runtime)
- fix ProjectViewModel drag&drop mime read/write size mismatch (segfault)
- unify color label naming (k_olive -> "Oak") in the app-side mirror
- docs: OTIO required, FFmpeg minimum corrected to 6.0 (en/zh)
- gtest suite: 1925 passed, 0 failed
2026-07-31 22:46:52 +08:00
Mike-Solar 0aa5879f35 app: migrate all engine access to the C ABI facade (nm U _ZN5olive = 0)
Every app module now reaches liboakengine exclusively through
oakengine_* C calls, EngineEventBridge subscriptions and app-side
handle headers (cliphandle/keyframehandle/nodevaluehandle/oakvaluehelper).
Direct C++ command construction, engine signal connect()s, and engine
type usage in MOC-visible signatures are gone: 557 -> 0 undefined
olive:: symbols in oak-editor.
2026-07-26 22:43:21 +08:00
Mike-Solar bb40b4923e style: unify identifier naming per updated conventions
Automated with clang-tidy readability-identifier-naming (config added to
.clang-tidy) plus scripted passes, per the updated rules now documented
in CONTRIBUTING.md:

- types (class/struct/enum/alias/template params): PascalCase
- functions, variables, members: snake_case (incl. rational -> Rational)
- private/protected members: trailing underscore; static member
  variables likewise (instance_, available_themes_)
- constants and enum values: snake_case (kLinear -> k_linear,
  F32P -> f32p); ALL_CAPS reserved for macros
- macros: OAK_ prefix (OLIVE_ADD_TEST/OLIVE_ASSERT/OLIVE_CONFIG ->
  OAK_ADD_TEST/OAK_ASSERT/OAK_CONFIG, GL_PREAMBLE -> OAK_GL_PREAMBLE,
  include guards -> OAK_*)
- file names: all lowercase (Current/Plugin/OliveHost/OliveClip/
  OlivePluginInstance -> current/plugin/olivehost/oliveclip/
  oliveplugininstance)
- getters share the member name sans underscore, setters set_foo()
- Qt and third-party (OpenFX) virtual overrides and framework callbacks
  keep their original names (exempt in .clang-tidy)

Manual follow-ups required where automation could not reach:
- string-based QMetaObject/SIGNAL/SLOT references updated to renamed
  methods (AddTask, CreatedFile, DeleteSpecificFile, moveSelectionUp, ...)
- macro bodies referencing renamed methods (OLIVE_CONFIG,
  NODE_DEFAULT_DESTRUCTOR, MANAGEDDISPLAYWIDGET_*)
- self-shadowing locals renamed where signals/methods became same-named
  (size_changed, worker_count, selected_items, import param, filters)
- third_party OFX member/namespace usages restored (OFX::Host::*,
  _created, _clipPrefsDirty, createInstance, clearPersistentMessage)
- STL protocol aliases restored (const_iterator) with .clang-tidy
  ignore rules; qHash overloads restored

Full build and test suite pass: ctest 4/4, ~1960 gtest cases green.
2026-07-19 16:10:54 +08:00
Mike-Solar 5c8f80480d UI: flatten preferences behavior tabs and add node parameter editor shortcut
- Move Behavior-General options (hover focus, slider ladder, scroll zooms)
  into the General preferences tab.
- Move Behavior-Audio option (audio scrubbing) into the Audio preferences tab.
- Promote remaining Behavior categories (Timeline, Playback, Project, Nodes,
  Rendering) to top-level sidebar entries without the 'Behavior - ' prefix.
- Update Chinese translations for the new sidebar titles and fill unfinished
  Behavior tab strings.

NodeView:
- Remove double-click jump-to-parameter-editor behavior; keep expand/collapse.
- Add right-click context menu item 'Show in Parameter Editor'.
- Add Shift+P shortcut bound to the same action.

Render:
- Fix crash in PreviewAutoCacher::ClearSingleFrameRenders when proxy playback
  causes a render ticket to finish synchronously before the watcher pointer is
  returned. Defer the watcher Finished signal via queued connection so the
  caller can safely register the watcher before it is deleted.
2026-07-13 10:19:30 +08:00
Mike-Solar bfb1b2fce4 update copyright back 2026-01-16 21:22:05 +08:00
Mike-Solar b8669f6a11 Change project name; 2026-01-05 16:22:26 +08:00
Mike Solar 6fdfd03ffd update: update copyright 2025-08-05 17:12:49 +08:00
Mike Solar 74f73ab3be change: change code style to Linux style except indent. 2025-08-03 03:09:40 +08:00
itsmattkc 9745b536f6 nodes: remove graph and merge into project 2023-02-17 14:13:03 -08:00
itsmattkc a3f4ebdb6d node/ui: limit amount of selectable nodes for performance 2022-10-23 21:24:49 -07:00
itsmattkc f2e604c2cb ui: add rename shortcut 2022-07-22 13:25:46 -07:00
itsmattkc c0ad244397 nodeview: implement dragging items from project explorer into node view 2022-05-11 14:55:07 -07:00
itsmattkc 4b366a9b73 update copyright year to 2022 2022-05-10 10:38:56 -07:00
itsmattkc 102ce9aa7b nodeparamview/nodeview: connect selections and enable multi-select in npv 2022-05-04 14:59:51 -07:00
itsmattkc f7396de121 markers: reimplemented copy/paste 2022-05-01 22:33:58 -07:00
itsmattkc e0bfbf12b2 groups: improved functionality
Various improvements and fixes to groups
2022-04-04 23:34:34 -07:00
itsmattkc 38c8bd4b0d paramview: implemented passthrough editing 2022-04-04 22:13:08 -07:00
itsmattkc afaf6bcf92 groups: started revision
- Removed UUIDs since we already have ptrs
- Changed input passthroughs from map to list so they'll always be added in the same order
- Fixed group copy on duplication
- Fixed group copy on clip split
2022-04-03 19:18:39 -07:00
itsmattkc 576ea8e81f refactored copy/paste code for new serializers
Vastly improves code quality and reusability
2022-01-12 16:34:40 -08:00
itsmattkc d4fa9cb906 nodeview: fix issues when deleting nodes while dragging 2022-01-04 11:16:56 -08:00
itsmattkc a7be16fec9 finished refactoring copy/paste code 2021-12-30 19:35:52 -08:00
itsmattkc 8daa83b682 work towards finishing nodeview copy/paste refactor 2021-12-29 18:44:14 -08:00
itsmattkc 65a1c75933 clean up and remove nodegroupdialog 2021-12-27 20:56:04 -08:00
itsmattkc 5223483e8e work towards group editor 2021-12-27 15:16:49 -08:00
itsmattkc 2473bccec3 implemented arrays and reimplemented expanding 2021-12-01 12:14:26 -08:00
itsmattkc 239a019690 many improvements and reimplementations 2021-11-29 21:22:49 -08:00
itsmattkc 495b07fc55 implemented node groups 2021-11-24 17:58:48 -08:00
itsmattkc a391e63252 cleaned up some no longer used functions 2021-11-19 16:46:39 -08:00
itsmattkc 40783bcc6d reimplemented adding/removing/connecting/disconnecting 2021-11-19 15:47:31 -08:00
itsmattkc a6af473f53 reimplemented node positioning and deleting 2021-11-17 12:09:41 -08:00
itsmattkc 93be94bc2c more work 2021-11-16 23:58:34 -08:00
itsmattkc 9c650883c2 implement context item in node view 2021-11-10 16:33:59 -08:00
itsmattkc 67c7c71ca2 implemented "value hints" for choosing output values to use 2021-09-17 20:56:53 -07:00
itsmattkc b07bccb7dc nodes: revert to single output 2021-09-07 22:01:36 -07:00
itsmattkc 5cd6aaba66 nodeview: position edge on creation
Fixes #1708
2021-08-14 12:55:08 -07:00
itsmattkc 1c8b1b6006 nodeview: fixed pasting/duplicating crash 2021-07-23 22:09:28 -07:00
itsmattkc a83be3a253 nodeview: combined paste/duplicate code
Code cleanup. Doesn't fix bug involved with pasting or duplicating.
2021-07-23 17:47:08 -07:00
itsmattkc 9f9b007cbf nodeview: significantly improve nodeview "show all" algorithm 2021-07-19 18:40:56 -07:00
itsmattkc 8d72685eaa nodeview: stripped out auto-position function
Hopefully this shouldn't be necessary anymore
2021-07-19 18:40:22 -07:00
itsmattkc 9c63393f50 nodeview: implemented workable solution to connecting contexts together to show all
Functional, now we just need to fine tune and optimize it.
2021-07-19 02:27:40 -07:00
itsmattkc 52c5617159 undo: wrapped redo/undo functions to ensure prepare is called 2021-07-17 00:14:24 -07:00
itsmattkc 07c841f76d nodeview: prelim work towards show all functionality 2021-07-16 20:30:46 -07:00
itsmattkc 4d69e55799 nodeview: implemented dragger to create edge without holding key 2021-07-10 10:19:36 -07:00
itsmattkc 6e14e51f21 nodeview: added 'add' button to toolbar 2021-07-10 08:51:51 -07:00
itsmattkc 652a53c18e nodeview: added rudimentary toolbar
Only button there is a toggle for the mini-map.
2021-07-09 21:57:53 -07:00
itsmattkc 94e6fa843c nodeview: implemented minimap 2021-07-09 21:43:19 -07:00
itsmattkc f14a301ffa nodeview: updates to complete new context paradigm 2021-07-09 18:00:01 -07:00
itsmattkc 90d94075cf nodeview: improved bounding rect and centering 2021-06-17 10:19:30 -07:00
itsmattkc 2162e9d8f8 nodeview: improved user manual positioning 2021-05-28 13:29:51 +10:00
itsmattkc f876240443 use nodes as context rather than void 2021-05-27 13:32:32 +10:00