preliminary implementation of Editor Panels - CRASHES when switching back after adding a panel though

This commit is contained in:
Michael Becker 2021-08-11 23:34:47 -04:00
parent b16d63279e
commit df32d49b11
No known key found for this signature in database
GPG Key ID: 98C333A81F18C22C
12 changed files with 1155 additions and 18 deletions

View File

@ -0,0 +1,975 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface>
<requires lib="gtk+" version="3.24"/>
<object class="GtkAdjustment" id="adjDivide00">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjDivide01">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjDivide02">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjFrameCurrent">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjFrameStart">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjOffsetPost">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjOffsetPre">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjPositionX">
<property name="lower">-100</property>
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjRotateY">
<property name="lower">-360</property>
<property name="upper">360</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjScrollViewportHorizontal">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjScrollViewportVertical">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjScrollWindowHorizontal">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjScrollWindowVertical">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjStep00">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjStep01">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjStep02">
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="adjStep03">
<property name="upper">1.5</property>
<property name="value">1</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkWindow">
<property name="can-focus">False</property>
<property name="title" translatable="yes">Motion Test</property>
<property name="default-width">400</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hadjustment">adjScrollWindowHorizontal</property>
<property name="vadjustment">adjScrollWindowVertical</property>
<property name="vscrollbar-policy">always</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hadjustment">adjScrollViewportHorizontal</property>
<property name="vadjustment">adjScrollViewportVertical</property>
<child>
<!-- n-columns=3 n-rows=31 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">16</property>
<property name="margin-end">16</property>
<property name="margin-top">16</property>
<property name="margin-bottom">16</property>
<property name="hexpand">True</property>
<property name="row-spacing">4</property>
<property name="column-spacing">4</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Character</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Set</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkComboBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Animation</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkComboBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="label" translatable="yes">Rotate</property>
<property name="xalign">0.5</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">4</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Y</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">5</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">0</property>
<property name="adjustment">adjRotateY</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">5</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hexpand">True</property>
<property name="adjustment">adjRotateY</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">5</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="label" translatable="yes">Position</property>
<property name="xalign">0.5</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">6</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">X</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">7</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">0.00</property>
<property name="adjustment">adjPositionX</property>
<property name="digits">2</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">7</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjPositionX</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">7</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="label" translatable="yes">Offset</property>
<property name="xalign">0.5</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">8</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Pre Offset</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">9</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Post Offset</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">10</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjOffsetPost</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">10</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjOffsetPre</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">9</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">0</property>
<property name="adjustment">adjOffsetPre</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">9</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">0</property>
<property name="adjustment">adjOffsetPost</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">10</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="label" translatable="yes">Divide</property>
<property name="xalign">0.5</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">11</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">0</property>
<property name="adjustment">adjDivide00</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">12</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">0</property>
<property name="adjustment">adjDivide01</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">13</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">0</property>
<property name="adjustment">adjDivide02</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">14</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjDivide00</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">12</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjDivide01</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">13</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjDivide02</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">14</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Divide 00</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">12</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Divide 01</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">13</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Divide 02</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">14</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="label" translatable="yes">Step</property>
<property name="xalign">0.5</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">15</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Step 00</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">16</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Step 01</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">17</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Step 02</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">18</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Step 03</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">19</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjStep00</property>
<property name="digits">4</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">16</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjStep01</property>
<property name="digits">4</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">17</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjStep02</property>
<property name="digits">4</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">18</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjStep03</property>
<property name="digits">4</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">19</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjStep00</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="round-digits">1</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">16</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjStep01</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="round-digits">1</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">17</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjStep02</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="round-digits">1</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">18</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjStep03</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="round-digits">1</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">19</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="label" translatable="yes">Frame</property>
<property name="xalign">0.5</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">20</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Current</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">21</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Start</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">22</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjFrameCurrent</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="round-digits">1</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">21</property>
</packing>
</child>
<child>
<object class="GtkScale">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjFrameStart</property>
<property name="restrict-to-fill-level">False</property>
<property name="fill-level">0</property>
<property name="round-digits">1</property>
<property name="draw-value">False</property>
<property name="has-origin">False</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">22</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjFrameCurrent</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">21</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">adjFrameStart</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">22</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="label" translatable="yes">Information</property>
<property name="xalign">0.5</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">23</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Private Frame</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">24</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Global Frame</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">25</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Max Frame</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">26</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="label" translatable="yes">0.00000</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">24</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="label" translatable="yes">0.00000</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">25</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="label" translatable="yes">0.00000</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">26</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes">_Display</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">27</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes">_Set Change</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">28</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes">_Partial Motion</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">30</property>
<property name="width">3</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes">Use _Osage Play Data</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">29</property>
<property name="width">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<UniversalEditor Version="5.0">
<Editors>
<Editor ID="{6dbe6294-681b-4d1f-8249-d04a1a3ef4a2}" TypeName="UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Scene.SceneEditor" Title="Scene Editor">
<Panels>
<Panel ID="{a94821d1-9bcb-4396-908a-33ce757436b8}" Title="Motion Test" ControlTypeName="UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Scene.Panels.MotionTestPanel" />
</Panels>
</Editor>
</Editors>
</UniversalEditor>

View File

@ -321,6 +321,8 @@
<Content Include="Templates\Project\General\EmptyProject.uexml" />
<Content Include="Templates\Project\File Distribution\Images\FileSystem_16x16.png" />
<Content Include="Templates\Project\File Distribution\Images\FileSystem_32x32.png" />
<Content Include="Editors\Multimedia3D\Scene\Panels\MotionTestPanel.uexml" />
<Content Include="Editors\Multimedia3D\Scene\Panels\MotionTestPanel.glade" />
</ItemGroup>
<ItemGroup>
<Content Include="Configuration\Application.upl" />

View File

@ -257,6 +257,24 @@ namespace UniversalEditor.UserInterface.Common
}
}
}
MarkupTagElement tagPanels = (tagEditor.Elements["Panels"] as MarkupTagElement);
if (tagPanels != null)
{
foreach (MarkupElement elPanel in tagPanels.Elements)
{
MarkupTagElement tagPanel = (elPanel as MarkupTagElement);
if (tagPanel == null) continue;
PanelReference pr = new PanelReference(new Guid(tagPanel.Attributes["ID"].Value));
pr.Title = tagPanel.Attributes["Title"]?.Value;
pr.ControlTypeName = tagPanel.Attributes["ControlTypeName"]?.Value;
pr.LayoutFileName = tagPanel.Attributes["LayoutFileName"]?.Value;
er.Panels.Add(pr);
}
}
MarkupTagElement tagVariables = (tagEditor.Elements["Variables"] as MarkupTagElement);
if (tagVariables != null)
{

View File

@ -81,6 +81,39 @@ namespace UniversalEditor.UserInterface
public PanelReference.PanelReferenceCollection Panels { get; } = new PanelReference.PanelReferenceCollection();
protected override void OnContextAdded(ContextChangedEventArgs e)
{
base.OnContextAdded(e);
EditorContext ec = (e.Context as EditorContext);
if (ec != null)
{
foreach (PanelReference panel in ec.Panels)
{
foreach (IHostApplicationWindow mw in Windows)
{
mw.AddPanel(panel);
}
}
}
}
protected override void OnContextRemoved(ContextChangedEventArgs e)
{
base.OnContextRemoved(e);
EditorContext ec = (e.Context as EditorContext);
if (ec != null)
{
foreach (PanelReference panel in ec.Panels)
{
foreach (IHostApplicationWindow mw in Windows)
{
mw.RemovePanel(panel);
}
}
}
}
protected override void OnStartup(EventArgs e)
{
base.OnStartup(e);

View File

@ -29,6 +29,7 @@ namespace UniversalEditor.UserInterface
public class EditorContext : UIContext
{
public EditorReference Reference { get; private set; } = null;
public PanelReference.PanelReferenceCollection Panels { get; } = new PanelReference.PanelReferenceCollection();
public override string ToString()
{
@ -48,6 +49,10 @@ namespace UniversalEditor.UserInterface
{
MenuItems.Add(reference.MenuBar.Items[i]);
}
for (int i = 0; i < reference.Panels.Count; i++)
{
Panels.Add(reference.Panels[i]);
}
}
}
}

View File

@ -31,7 +31,7 @@ namespace UniversalEditor.UserInterface
public CommandBar MenuBar { get; } = new CommandBar();
public Command.CommandCollection Commands { get; } = new Command.CommandCollection();
public PanelReference.PanelReferenceCollection Panels { get; } = new PanelReference.PanelReferenceCollection();
public EditorView.EditorViewCollection Views { get; } = new EditorView.EditorViewCollection();
public Variable.VariableCollection Variables { get; } = new Variable.VariableCollection();
public Toolbox Toolbox { get; } = new Toolbox();

View File

@ -87,6 +87,9 @@ namespace UniversalEditor.UserInterface
Document.ReadOnlyDocumentCollection Documents { get; }
Editor.ReadOnlyEditorCollection Editors { get; }
bool AddPanel(PanelReference panelReference);
bool RemovePanel(PanelReference panelReference);
}
public class IHostApplicationWindowCollection
: System.Collections.ObjectModel.Collection<IHostApplicationWindow>

View File

@ -95,6 +95,11 @@ namespace UniversalEditor.UserInterface
return tab;
}
public void UnregisterPanel(PanelReference panelReference, Panel panel)
{
_MyPanels.Remove(panelReference);
_MyPanels_ID.Remove(panelReference.ID);
}
public void RegisterPanel(PanelReference panelReference, Panel panel)
{
_MyPanels[panelReference] = panel;
@ -244,23 +249,7 @@ namespace UniversalEditor.UserInterface
{
foreach (PanelReference panel in ((EditorApplication)Application.Instance).Panels)
{
Panel p = null;
if (panel.Control != null)
{
p = panel.Control;
}
else if (panel.ControlTypeName != null)
{
p = MBS.Framework.Reflection.CreateType<Panel>(panel.ControlTypeName);
}
else
{
Console.Error.WriteLine("ue: MainWindow.InitializePanels() - could not create panel '{0}'; neither Control nor ControlTypeName were specified", panel.Title);
continue;
}
RegisterPanel(panel, p);
AddPanel(panel.Title, panel.Placement, p);
AddPanel(panel);
}
}
@ -602,6 +591,35 @@ namespace UniversalEditor.UserInterface
}
}
public bool AddPanel(PanelReference panelReference)
{
Panel p = null;
if (panelReference.Control != null)
{
p = panelReference.Control;
}
else if (panelReference.ControlTypeName != null)
{
p = MBS.Framework.Reflection.CreateType<Panel>(panelReference.ControlTypeName);
}
else
{
Console.Error.WriteLine("ue: MainWindow.InitializePanels() - could not create panel '{0}'; neither Control nor ControlTypeName were specified", panelReference.Title);
return false;
}
RegisterPanel(panelReference, p);
AddPanel(panelReference.Title, panelReference.Placement, p);
return true;
}
public bool RemovePanel(PanelReference panelReference)
{
Panel panel = FindPanel(panelReference.ID);
RemovePanel(panel);
UnregisterPanel(panelReference, panel);
return true;
}
private DockingContainer AddPanelContainer(DockingItemPlacement placement, DockingContainer parent = null)
{
DockingContainer dc = new DockingContainer();
@ -616,6 +634,8 @@ namespace UniversalEditor.UserInterface
}
return dc;
}
private Dictionary<Control, DockingWindow> dockingWindowsForPanel = new Dictionary<Control, DockingWindow>();
private void AddPanel(string title, DockingItemPlacement placement, Control control = null, DockingContainer parent = null)
{
if (control == null)
@ -635,6 +655,12 @@ namespace UniversalEditor.UserInterface
{
dckContainer.Items.Add(dw);
}
dockingWindowsForPanel[control] = dw;
}
private void RemovePanel(Panel panel)
{
DockingWindow dw = dockingWindowsForPanel[panel];
dw.Parent.Items.Remove(dw);
}
private void InitEditorPage(Document doc)

View File

@ -0,0 +1,11 @@
using System;
using UniversalEditor.UserInterface;
namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Scene.Panels
{
[ContainerLayout("~/Editors/Multimedia3D/Scene/Panels/MotionTestPanel.glade")]
public class MotionTestPanel : Panel
{
public static readonly Guid ID = new Guid("{a94821d1-9bcb-4396-908a-33ce757436b8}");
}
}

View File

@ -0,0 +1,50 @@
//
// StageEditor.cs
//
// Author:
// Michael Becker <alcexhim@gmail.com>
//
// Copyright (c) 2021 Mike Becker's Software
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using System;
using UniversalEditor.ObjectModels.Multimedia3D.Scene;
using UniversalEditor.UserInterface;
namespace UniversalEditor.Plugins.Multimedia3D.UserInterface.Editors.Scene
{
public class SceneEditor : Editor
{
private static EditorReference _er = null;
public override EditorReference MakeReference()
{
if (_er == null)
{
_er = base.MakeReference();
_er.ID = new Guid("{6dbe6294-681b-4d1f-8249-d04a1a3ef4a2}");
_er.SupportedObjectModels.Add(typeof(SceneObjectModel));
}
return _er;
}
public override void UpdateSelections()
{
}
protected override Selection CreateSelectionInternal(object content)
{
return null;
}
}
}

View File

@ -32,6 +32,8 @@
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Editors\Model\ModelEditor.cs" />
<Compile Include="Editors\Scene\SceneEditor.cs" />
<Compile Include="Editors\Scene\Panels\MotionTestPanel.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Libraries\UniversalEditor.UserInterface\UniversalEditor.UserInterface.csproj">
@ -70,6 +72,8 @@
<ItemGroup>
<Folder Include="Editors\" />
<Folder Include="Editors\Model\" />
<Folder Include="Editors\Scene\" />
<Folder Include="Editors\Scene\Panels\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>