Commit Graph
57 Commits
Author SHA1 Message Date
itsmattkc 94b2cebeea ui: merged nodeview/timelineview scrolling code
Greatly improves code quality and maintainability
2021-05-10 11:15:37 +10:00
itsmattkc a7d7515ba7 nodeview: allow dragging edges from their arrows
Fixes #1594
2021-04-27 18:48:40 +10:00
itsmattkc 77d4b18a60 updated copyright year for 2021 [skip ci] 2021-04-17 18:56:50 +10:00
itsmattkc c03c197412 added ability to open viewers on any viewer node or derivative
Fixes #1362

Also fixes some other bugs that impeded this from working.
2021-04-12 22:58:34 +10:00
itsmattkc a54b42fea4 nodeview: attach nodes to cursor as an undo command 2021-04-11 12:52:46 +10:00
itsmattkc 2a3a256f3e implement keyboard zooming into node view 2021-03-16 12:12:51 +11:00
itsmattkc 72dd80c90c ensure nodeview is unset when project closes 2021-02-24 22:15:12 +11:00
itsmattkc 81c1922911 use strings to connect nodes
This makes the node system somewhat more high-level with the intent of making
working with them far more flexible and stable. By making the architecture more
abstracted, it becomes far less rigid which should allow us to do even more
with it and make it much less crash prone.
2021-02-09 15:48:37 +11:00
itsmattkc 8a5df32281 fixed arrays in nodeparamview 2021-01-22 12:20:25 +11:00
itsmattkc fa1fbd3a34 nodeview: updated with new node color UI system 2021-01-19 09:08:46 +11:00
itsmattkc 8e7035bd40 restored nodeview 2021-01-19 00:06:57 +11:00
itsmattkc 181235f6ce began new infrastructure
Yep, this is another one of my "famous" sweeping rewrites. Expect things to break.

Goals for this are:
- Greatly simplify node connections (particularly with arrays) so the code requires less maintenance/is more stable
- Redesign node structure to address issues where UI would stall for lengthy periods of time
- Less reliance on shared ptrs/greater reliance on QObject system for inheritance/memory management
- General code cleanup and improvements
2021-01-05 11:20:38 +11:00
itsmattkc 374fa3f75c moved some files around for better organization 2020-12-16 19:05:22 +11:00
itsmattkc 75d4cd899b use hardcoded namespace
The macro defined namespaces confused the hell out of lupdate and more or less broke translations permanently. Looks like the only way we can do it is to have a hardcoded namespace, which goes against my instinct, but honestly how likely is it that we'll change the namespace anyway (I guess forks might want to do it, but that's their problem ;) )
2020-11-17 20:24:42 +11:00
itsmattkc d241090a9f finally updated the copyright year 2020-11-17 20:13:22 +11:00
itsmattkc 1b9bf6d92c switched many QLists for QVectors
Minor optimization
2020-11-16 16:17:43 +11:00
itsmattkc 0cafbb2594 nodeview: minor optimizations and behavior improvements 2020-10-10 19:47:25 +11:00
itsmattkc 02c0fb7316 nodeview: automatically deselect blocks that have been removed
Fixes segfault attempting to access and select an item that's already been
removed.
2020-08-05 23:56:42 +10:00
itsmattkc 2afa5a42c7 ui: optimized widget signals for selecting clips/nodes
Decent performance optimization when working with the UI.
2020-08-01 02:12:20 +10:00
itsmattkc 41b04d976c nodes/clips: use node label as clip name and allow changing multiple labels at once
Merges the "clip name" and "node label" into the same entity.
2020-06-16 16:23:05 +10:00
itsmattkc 71fa821e52 nodeview: enforce minimum scale 2020-06-16 15:37:11 +10:00
itsmattkc 1ed0814e83 nodeview: associate disconnected nodes with selected blocks until re-connected 2020-05-13 16:06:13 +10:00
itsmattkc ce58671fd6 nodeview: started core node filtering work 2020-05-11 22:48:27 +10:00
itsmattkc 16d4cccdb5 nodeview: optimized selecting
Rather than responding to every single selection change, the selection operation
can function as-is and then respond to all of them at the end.
2020-05-09 03:33:36 +10:00
itsmattkc 3d0f11c6ef nodeview: first attempt at filter dialog 2020-05-08 23:12:00 +10:00
itsmattkc bf68a4d631 nodes: added ability to label nodes 2020-04-29 15:35:05 +10:00
itsmattkc 13dc79d0cd nodeview: implemented duplicate feature 2020-04-29 15:04:53 +10:00
itsmattkc d83073cf85 nodeview: attach pasted nodes to the cursor 2020-04-29 14:49:43 +10:00
itsmattkc ff1a470aa0 Merge branch 'master' into nodeviewredux 2020-04-29 05:01:11 +10:00
itsmattkc 8ab91a70cc nodeview: implemented moving with either the hand tool or middle mouse button
Includes splitting off this functionality from TimelineViewBase so it can be
re-used in any QGraphicsView.
2020-04-29 04:56:58 +10:00
itsmattkc b57d12868f nodeview: allow dropping a node on any edge
Before we checked data types to ensure compatibility, but some nodes (e.g. the
math node) may be compatible despite a not apparently compatible data type.
We allow users to make any connection quickly this way.
2020-04-28 03:20:08 +10:00
itsmattkc b947b2224a nodeview: support multiple flow directions 2020-04-27 16:08:48 +10:00
itsmattkc 1aa87cbda6 various: encapsulate all code in the olive namespace to avoid name collisions
Large-scale code cleanup. Also adds a license to the top of all files that were
missing it.
2020-04-06 15:29:53 +10:00
itsmattkc 2bda306866 timeline/various: implemented block copy/paste
Implemented the ability to copy/paste blocks/clips in the timeline. This did
require some large scale changes and reworking of the copy/paste system
introduced a few commits ago, but should be largely functional now.
2020-03-31 02:19:05 +11:00
itsmattkc 2bfe9f44df nodeview: added ctrl+scroll zooming 2020-03-30 01:27:10 +11:00
itsmattkc 34f60e639a nodeview: implemented copying/pasting nodes
Re-uses XML-based project saving/loading functions to store nodes, their
parameters, and their connections in a text-based format in the clipboard.
2020-03-15 20:01:58 +11:00
itsmattkc 3e34975dd9 nodeview: improved and optimized some selection code 2020-03-02 17:03:03 +11:00
itsmattkc f6d602d8e0 nodeview: improved code structures 2020-03-02 16:07:24 +11:00
itsmattkc bf7fc9a0c4 panels: selecting a clip in the timeline automatically selects the corresponding
nodes in the nodeview
2020-02-26 00:39:30 +11:00
itsmattkc 0a74714f5d nodeview/nodepanel: implemented select all/deselect all functionality 2020-02-23 11:38:30 +11:00
itsmattkc ce889f68d5 nodeview: allow users to place a node on an edge to automatically connect it
between the two nodes

UI convenience. Edge highlights when the cursor is in range to perform this
action.
2020-02-16 12:40:12 +11:00
itsmattkc a6f4922d66 nodeview: allow esc key to cancel adding a node 2020-02-16 11:44:35 +11:00
itsmattkc fa0f732d39 nodeview: attach new nodes to mouse for easier placement 2020-02-16 11:19:26 +11:00
itsmattkc b233bdf8c9 a fairly decent node auto-positioning algorithm, not perfect, but a good start 2020-01-09 04:03:47 +11:00
itsmattkc 7018973d09 basic auto-positioning implementation
Not perfect by any means, but nodes are now automatically placed in relation to
their surroundings and connections.
2020-01-09 01:41:23 +11:00
itsmattkc 18bf126574 implemented deleting nodes in the nodeview (undoable) 2019-12-13 04:12:00 +11:00
itsmattkc 186973ff20 implemented final connections to allow creating new nodes in the nodeview 2019-12-13 03:06:12 +11:00
itsmattkc 934eea5f40 completed node 'add' menu 2019-12-13 02:55:09 +11:00
itsmattkc 371d0e2b37 some render cache adjustments 2019-09-04 10:58:50 +10:00
itsmattkc 9b63cc7755 inserting blocks through the timeline implemented 2019-08-11 17:30:27 +10:00