Clip-Drag: investigate the problem...
Can we build a simple feature to allow dragging clips in the timeline display? Well... not really, at least not "simple". As it turns out, the GTK-framework only supports classic "drag-n-drop", which translates into sending an action to a drag target to receive a "document". And, even worse, dragging clips must be implemented as a UI gesture, and as such overlaps with the other gestures for editing, trimming. In 2017, I did an comprehensive analysis of this problem, and then concluded to postpone it. Thus the task now would be to build a *simplified preview*, while being aware of the danger of creating oversimplified structures, and the danger to hamper a complete solution for implementing UI gestures...
This commit is contained in:
parent
ab718ed6aa
commit
7e946fa1cc
1 changed files with 110 additions and 6 deletions
|
|
@ -5331,6 +5331,7 @@
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538943061633" ID="ID_1972040317" MODIFIED="1557498707218" TEXT="minimale Feedback-Aktionen">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538943095252" ID="ID_1784185766" MODIFIED="1557498707218" TEXT="drag clip">
|
||||
<arrowlink COLOR="#fbd7b5" DESTINATION="ID_1472064878" ENDARROW="Default" ENDINCLINATION="-1443;-151;" ID="Arrow_ID_1918638969" STARTARROW="None" STARTINCLINATION="1644;332;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538943104651" ID="ID_948012732" MODIFIED="1557498707218" TEXT="delete clip">
|
||||
|
|
@ -31542,6 +31543,78 @@
|
|||
<node CREATED="1488423482303" ID="ID_1337577946" MODIFIED="1557498707233" TEXT="Optionen"/>
|
||||
</node>
|
||||
<node CREATED="1488423493014" ID="ID_64529473" MODIFIED="1557498707233" TEXT="Navigation"/>
|
||||
<node CREATED="1613329386385" ID="ID_1761463492" MODIFIED="1613329391457" TEXT="Manipulation">
|
||||
<node CREATED="1613334019420" ID="ID_273976893" MODIFIED="1613334021390" TEXT="Formen">
|
||||
<node CREATED="1613333615153" ID="ID_1085666433" MODIFIED="1613333624019" TEXT="Parameter ändern"/>
|
||||
<node CREATED="1613333666090" ID="ID_553562827" MODIFIED="1613333678204" TEXT="expandieren / reduzieren"/>
|
||||
<node CREATED="1613334131322" ID="ID_58235423" MODIFIED="1613334141028" TEXT="weitere Navigationsvorgänge"/>
|
||||
<node CREATED="1613333624820" ID="ID_563935930" MODIFIED="1613333633188" TEXT="Wiedergabemodus steuern"/>
|
||||
<node CREATED="1613333635078" ID="ID_335562573" MODIFIED="1613334024426" TEXT="Edit-Aktionen">
|
||||
<node CREATED="1613333732545" ID="ID_1462682314" MODIFIED="1613333745363" TEXT="Clip aus Bin einfügen"/>
|
||||
<node CREATED="1613333746464" ID="ID_1372531625" MODIFIED="1613333836699" TEXT="Clip: verschieben (slide)"/>
|
||||
<node CREATED="1613333751169" ID="ID_1489464895" MODIFIED="1613349460429" TEXT="Clip: Inhalt verschieben (shuffle)">
|
||||
<arrowlink COLOR="#f6b667" DESTINATION="ID_1472064878" ENDARROW="Default" ENDINCLINATION="-9;-115;" ID="Arrow_ID_209732384" STARTARROW="None" STARTINCLINATION="220;19;"/>
|
||||
</node>
|
||||
<node CREATED="1613333842378" ID="ID_381580402" MODIFIED="1613333859963" TEXT="Clip: trimmen"/>
|
||||
<node CREATED="1613333860599" ID="ID_1789286116" MODIFIED="1613333863659" TEXT="Clip: rollen"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1613334058285" ID="ID_699726141" MODIFIED="1613334067760" TEXT="Konzept">
|
||||
<node CREATED="1613334069323" ID="ID_1723320752" MODIFIED="1613334078757" TEXT="die Manipulation wird durch eine Geste eingeleitet"/>
|
||||
<node CREATED="1613334079466" ID="ID_1589128984" MODIFIED="1613334088647" TEXT="sie führt in einen Manipulations-Modus"/>
|
||||
<node CREATED="1613334091808" ID="ID_1887267653" MODIFIED="1613334098755" TEXT="dieser wird durch eine Befehls-Geste beendet"/>
|
||||
</node>
|
||||
<node CREATED="1613334160328" ID="ID_1964361228" MODIFIED="1613334167289" TEXT="konstruktives Problem">
|
||||
<node CREATED="1613334172704" ID="ID_1733713020" MODIFIED="1613334204445" TEXT="typischerweise wird dieses gemeinsame Schema übersehen"/>
|
||||
<node CREATED="1613334205144" ID="ID_1296878721" MODIFIED="1613334219861" TEXT="daher ist es üblich, diese Manipulationen lokal und ad hoc zu implementieren"/>
|
||||
<node CREATED="1613334249690" ID="ID_1792797047" MODIFIED="1613334275524" TEXT="⟹ in den Frameworks fehlt der abstrakte gemeiname Einstiegspunkt">
|
||||
<node CREATED="1613334316121" ID="ID_1190900510" MODIFIED="1613334356211" TEXT="GTK bietet nur ein copy/move drag-n-drop">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
und das zu allem Überfluß auch noch ziemlich hart verdrahtet. Man kann nicht einmal frei über die Modifier-Keys verfügen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1613334362547" ID="ID_894562756" MODIFIED="1613334386083" TEXT="andere Gesten sind im Einzelwidget implementiert"/>
|
||||
</node>
|
||||
<node CREATED="1613334402564" ID="ID_1103909311" MODIFIED="1613349184568" TEXT="wir müssen lauter dezentrale Einstiegspunkte bauen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#cec3da" CREATED="1613917449274" HGAP="42" ID="ID_1824168791" MODIFIED="1613917680542" VSHIFT="4">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<u>Achtung</u>: <i><font color="#402160">abstrakter Entwurf war Ende 2017 in eine Sackgasse geraten....</font></i>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<arrowlink COLOR="#7b7696" DESTINATION="ID_1743832326" ENDARROW="Default" ENDINCLINATION="321;-3493;" ID="Arrow_ID_741454137" STARTARROW="None" STARTINCLINATION="-1121;45;"/>
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1613349240614" ID="ID_1472064878" MODIFIED="1613349442831" TEXT="erster Entwurf: drag clip">
|
||||
<linktarget COLOR="#fbd7b5" DESTINATION="ID_1472064878" ENDARROW="Default" ENDINCLINATION="-1443;-151;" ID="Arrow_ID_1918638969" SOURCE="ID_1784185766" STARTARROW="None" STARTINCLINATION="1644;332;"/>
|
||||
<linktarget COLOR="#f6b667" DESTINATION="ID_1472064878" ENDARROW="Default" ENDINCLINATION="-9;-115;" ID="Arrow_ID_209732384" SOURCE="ID_1489464895" STARTARROW="None" STARTINCLINATION="220;19;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1613349479473" ID="ID_1618505083" MODIFIED="1613349488782" TEXT="Doku / Tutorials">
|
||||
<node CREATED="1613349541627" ID="ID_1745870905" MODIFIED="1613349560713" TEXT="man muß das motion_notify_event beobachten">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1613349562305" ID="ID_601856481" MODIFIED="1613349567420" TEXT="das ist ein GDK-Event"/>
|
||||
<node CREATED="1613349568104" ID="ID_1883086551" MODIFIED="1613349579450" TEXT="also das Low-level-System"/>
|
||||
</node>
|
||||
<node CREATED="1613349531741" ID="ID_84820441" LINK="https://gist.github.com/KurtJacobson/57679e5036dc78e6a7a3ba5e0155dad1" MODIFIED="1613349537230" TEXT="Beispiel C"/>
|
||||
<node CREATED="1613349637668" ID="ID_1098657356" LINK="http://www.kcjengr.com/programing/2017/10/16/dragable-gtk-widgets.html" MODIFIED="1613349643402" TEXT="Beispiel Python"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1488423514355" ID="ID_917891687" MODIFIED="1557498707233" TEXT="Steuerelemente">
|
||||
<node CREATED="1541858529489" ID="ID_838803024" MODIFIED="1557498707233" TEXT="ZoomWindow">
|
||||
<linktarget COLOR="#5b5ca1" DESTINATION="ID_838803024" ENDARROW="Default" ENDINCLINATION="-519;-1168;" ID="Arrow_ID_1674512697" SOURCE="ID_1949450244" STARTARROW="None" STARTINCLINATION="446;0;"/>
|
||||
|
|
@ -31776,7 +31849,7 @@
|
|||
<node CREATED="1541545696185" ID="ID_1907010009" MODIFIED="1557498707234" TEXT="Grund: UI-Bus - Routing">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1541545933006" ID="ID_1850412206" MODIFIED="1561827465322" TEXT="tückisches Problem">
|
||||
<node COLOR="#435e98" CREATED="1541545933006" FOLDED="true" ID="ID_1850412206" MODIFIED="1561827465322" TEXT="Duplikate sind ein tückisches Problem">
|
||||
<linktarget COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="49;-155;" ID="Arrow_ID_1571993328" SOURCE="ID_787025622" STARTARROW="None" STARTINCLINATION="-11;173;"/>
|
||||
<linktarget COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="369;179;" ID="Arrow_ID_1229280605" SOURCE="ID_659707505" STARTARROW="None" STARTINCLINATION="586;-203;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
|
|
@ -36549,7 +36622,7 @@
|
|||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1491753036895" ID="ID_1029946389" MODIFIED="1491753047201" TEXT="fall-back auf Command integrieren"/>
|
||||
<node CREATED="1491753645531" ID="ID_597184850" MODIFIED="1491753650607" TEXT="maybeGet entfernen"/>
|
||||
<node CREATED="1491753047981" ID="ID_1220888974" MODIFIED="1491753330643" TEXT="Referenz rausgeben">
|
||||
<node CREATED="1491753047981" FOLDED="true" ID="ID_1220888974" MODIFIED="1491753330643" TEXT="Referenz rausgeben">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1491753058620" ID="ID_1772710050" MODIFIED="1491753078866" TEXT="nicht thradsafe">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
|
|
@ -36965,18 +37038,20 @@
|
|||
</node>
|
||||
</node>
|
||||
<node CREATED="1492094512876" HGAP="32" ID="ID_953384901" MODIFIED="1518487921092" TEXT="vorläufig eigenständig" VSHIFT="4">
|
||||
<node CREATED="1492094528370" ID="ID_1032947061" MODIFIED="1518487921092" TEXT="später mal integrieren">
|
||||
<node COLOR="#338800" CREATED="1492094528370" ID="ID_1032947061" MODIFIED="1518487921092" TEXT="später mal integrieren">
|
||||
<arrowlink COLOR="#8697be" DESTINATION="ID_451964727" ENDARROW="Default" ENDINCLINATION="200;-562;" ID="Arrow_ID_1211717131" STARTARROW="None" STARTINCLINATION="1387;-152;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1613916810040" HGAP="23" ID="ID_69431933" MODIFIED="1613916831791" TEXT="(DependencyInjection Schema)" VSHIFT="3"/>
|
||||
</node>
|
||||
<node CREATED="1492095379262" ID="ID_16023242" MODIFIED="1518487921092" TEXT="einfache Implementierung"/>
|
||||
<node CREATED="1492096252231" ID="ID_1892095908" MODIFIED="1518487921092" TEXT="Problem">
|
||||
<node CREATED="1492096257182" ID="ID_682054688" MODIFIED="1518487921092" TEXT="externe Kompnente muß kooperieren"/>
|
||||
<node CREATED="1492096257182" ID="ID_682054688" MODIFIED="1518487921092" TEXT="externe Komponente muß kooperieren"/>
|
||||
<node CREATED="1492096285706" ID="ID_1257721538" MODIFIED="1518487921092" TEXT="oder externe Kompnente muß einen Adapter installieren"/>
|
||||
<node CREATED="1492096269716" ID="ID_527173807" MODIFIED="1518487921092" TEXT="oder externe Komponente muß das Front-end betreiben"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1492095433567" HGAP="69" ID="ID_1208499974" MODIFIED="1576282357985" TEXT="DSL schaffen" VSHIFT="1">
|
||||
<node CREATED="1492095433567" FOLDED="true" HGAP="69" ID="ID_1208499974" MODIFIED="1576282357985" TEXT="DSL schaffen" VSHIFT="1">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -36995,6 +37070,7 @@
|
|||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<arrowlink COLOR="#b82856" DESTINATION="ID_73450627" ENDARROW="Default" ENDINCLINATION="-641;29;" ID="Arrow_ID_1593125080" STARTARROW="None" STARTINCLINATION="122;76;"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1492095437190" ID="ID_491978759" MODIFIED="1492095481564" TEXT="Wunsch: access(ID).<operation>(args)"/>
|
||||
<node CREATED="1492096317382" ID="ID_554292510" MODIFIED="1492096319497" TEXT="möglich">
|
||||
|
|
@ -37080,6 +37156,30 @@
|
|||
<node CREATED="1492099579824" ID="ID_727878406" MODIFIED="1492099585163" TEXT="CommandDef-DSL erweitern">
|
||||
<node CREATED="1492099587359" ID="ID_453414313" MODIFIED="1492099599513" TEXT="muß Argument-Rollen auszeichnen können"/>
|
||||
<node CREATED="1492099622066" ID="ID_1927536817" MODIFIED="1492099630669" TEXT="erweiterbar auf binding rules"/>
|
||||
<node CREATED="1576282357985" ID="ID_318475227" MODIFIED="1613917141790" TEXT="erster Entwurf: → CmdContext">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1518487921093" HGAP="57" ID="ID_1013004860" MODIFIED="1613917115257" TEXT="umgewidmet in einen komplexeren Spezialfall" VSHIFT="17">
|
||||
<arrowlink COLOR="#6c9dbe" DESTINATION="ID_143339688" ENDARROW="Default" ENDINCLINATION="2023;-1563;" ID="Arrow_ID_1767017735" STARTARROW="None" STARTINCLINATION="303;19;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1576282357985" HGAP="43" ID="ID_73450627" MODIFIED="1613917052881" TEXT="Thema vorerst vertagt und einfache Lösung implementiert" VSHIFT="3">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
<u><font size="2">(Anmerkung 2/2021)</font></u>
|
||||
</p>
|
||||
<p>
|
||||
Über dieses Thema, und »InteractionControl« im Allgemeinen habe ich intensiv nachgedacht über den Sommer 2017. Die damals aufgestellten Grundzüge erscheinen mir auch heute noch sinnvoll. Allerdings kann dieser Entwurf nicht nur allein aus first principles abgeleitet werden. Daher habe ich im Winter 2017/18 dann entschieden, eine Verkopplung mit dem direkten Aufruf von Commands aufzulösen, wodurch Letztere einfach implementiert werden konnte. Überhaupt muß das UI ein gutes Stück weiter erst konkret gebaut werden, damit überhaupt ein Sachbezug für die Überlegungen gewonnen werden kann....
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#b82856" DESTINATION="ID_73450627" ENDARROW="Default" ENDINCLINATION="-641;29;" ID="Arrow_ID_1593125080" SOURCE="ID_1208499974" STARTARROW="None" STARTINCLINATION="122;76;"/>
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -37458,6 +37558,7 @@
|
|||
</node>
|
||||
<node CREATED="1492268981885" HGAP="114" ID="ID_1743832326" MODIFIED="1561827465755" TEXT="Design-Kritik" VSHIFT="-55">
|
||||
<arrowlink COLOR="#f7335a" DESTINATION="ID_43582318" ENDARROW="Default" ENDINCLINATION="-123;-43;" ID="Arrow_ID_601519634" STARTARROW="Default" STARTINCLINATION="-63;109;"/>
|
||||
<linktarget COLOR="#7b7696" DESTINATION="ID_1743832326" ENDARROW="Default" ENDINCLINATION="321;-3493;" ID="Arrow_ID_741454137" SOURCE="ID_1824168791" STARTARROW="None" STARTINCLINATION="-1121;45;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1492269138424" ID="ID_1682612433" MODIFIED="1492269153284" TEXT="gefährlich stark vom komplexen Fall getrieben">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
|
|
@ -37622,9 +37723,12 @@
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1492281383613" ID="ID_143339688" MODIFIED="1518487921093" TEXT="CmdAccess wird für den komplexen Fall umgewidmet">
|
||||
<linktarget COLOR="#6c9dbe" DESTINATION="ID_143339688" ENDARROW="Default" ENDINCLINATION="2023;-1563;" ID="Arrow_ID_1767017735" SOURCE="ID_1013004860" STARTARROW="None" STARTINCLINATION="303;19;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1492281402666" ID="ID_1263822028" MODIFIED="1518487921093" TEXT="es bleibt ein Access-front-End"/>
|
||||
<node CREATED="1492281417025" ID="ID_1229681605" MODIFIED="1518487921093" TEXT="der Name wird angepaßt"/>
|
||||
<node COLOR="#435e98" CREATED="1492281417025" ID="ID_1229681605" MODIFIED="1518487921093" TEXT="der Name wird angepaßt → CmdContext">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1492281425672" ID="ID_1330862297" MODIFIED="1518487921093" TEXT="es dient zum Konfigurieren eines Kontextes"/>
|
||||
<node CREATED="1492281434678" ID="ID_1036338249" MODIFIED="1518487921093" TEXT="für Zugriff auf den InteractionState"/>
|
||||
<node CREATED="1492281448845" ID="ID_1396633899" MODIFIED="1518487921093" TEXT="für Callback-Registrierung"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue