48 changed files with 1528 additions and 223 deletions
@ -0,0 +1,84 @@
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org> |
||||
* |
||||
* This file is part of Zrythm |
||||
* |
||||
* Zrythm is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as published by |
||||
* the Free Software Foundation, either version 3 of the License, or |
||||
* (at your option) any later version. |
||||
* |
||||
* Zrythm 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 Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
/**
|
||||
* \file |
||||
* |
||||
* Automation editor space. |
||||
*/ |
||||
|
||||
#ifndef __GUI_WIDGETS_AUTOMATION_EDITOR_SPACE_H__ |
||||
#define __GUI_WIDGETS_AUTOMATION_EDITOR_SPACE_H__ |
||||
|
||||
#include <gtk/gtk.h> |
||||
|
||||
#define AUTOMATION_EDITOR_SPACE_WIDGET_TYPE \ |
||||
(automation_editor_space_widget_get_type ()) |
||||
G_DECLARE_FINAL_TYPE ( |
||||
AutomationEditorSpaceWidget, |
||||
automation_editor_space_widget, |
||||
Z, AUTOMATION_EDITOR_SPACE_WIDGET, |
||||
GtkBox) |
||||
|
||||
typedef struct _AutomationArrangerWidget |
||||
AutomationArrangerWidget; |
||||
|
||||
/**
|
||||
* @addtogroup widgets |
||||
* |
||||
* @{ |
||||
*/ |
||||
|
||||
#define MW_AUTOMATION_EDITOR_SPACE \ |
||||
MW_CLIP_EDITOR_INNER->automation_editor_space |
||||
|
||||
/**
|
||||
* The piano roll widget is the whole space inside |
||||
* the clip editor tab when a AUTOMATION region is selected. |
||||
*/ |
||||
typedef struct _AutomationEditorSpaceWidget |
||||
{ |
||||
GtkBox parent_instance; |
||||
|
||||
GtkScrolledWindow * arranger_scroll; |
||||
GtkViewport * arranger_viewport; |
||||
AutomationArrangerWidget * arranger; |
||||
} AutomationEditorSpaceWidget; |
||||
|
||||
void |
||||
automation_editor_space_widget_setup ( |
||||
AutomationEditorSpaceWidget * self); |
||||
|
||||
/**
|
||||
* See CLIP_EDITOR_INNER_WIDGET_ADD_TO_SIZEGROUP. |
||||
*/ |
||||
void |
||||
automation_editor_space_widget_update_size_group ( |
||||
AutomationEditorSpaceWidget * self, |
||||
int visible); |
||||
|
||||
void |
||||
automation_editor_space_widget_refresh ( |
||||
AutomationEditorSpaceWidget * self); |
||||
|
||||
/**
|
||||
* @} |
||||
*/ |
||||
|
||||
#endif |
@ -0,0 +1,105 @@
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org> |
||||
* |
||||
* This file is part of Zrythm |
||||
* |
||||
* Zrythm is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as published by |
||||
* the Free Software Foundation, either version 3 of the License, or |
||||
* (at your option) any later version. |
||||
* |
||||
* Zrythm 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 Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
/**
|
||||
* \file |
||||
* |
||||
* Chord editor space. |
||||
*/ |
||||
|
||||
#ifndef __GUI_WIDGETS_CHORD_EDITOR_SPACE_H__ |
||||
#define __GUI_WIDGETS_CHORD_EDITOR_SPACE_H__ |
||||
|
||||
#include <gtk/gtk.h> |
||||
|
||||
#define CHORD_EDITOR_SPACE_WIDGET_TYPE \ |
||||
(chord_editor_space_widget_get_type ()) |
||||
G_DECLARE_FINAL_TYPE ( |
||||
ChordEditorSpaceWidget, |
||||
chord_editor_space_widget, |
||||
Z, CHORD_EDITOR_SPACE_WIDGET, |
||||
GtkBox) |
||||
|
||||
typedef struct _ChordArrangerWidget |
||||
ChordArrangerWidget; |
||||
typedef struct _ChordKeyWidget ChordKeyWidget; |
||||
|
||||
/**
|
||||
* @addtogroup widgets |
||||
* |
||||
* @{ |
||||
*/ |
||||
|
||||
#define MW_CHORD_EDITOR_SPACE \ |
||||
MW_CLIP_EDITOR_INNER->chord_editor_space |
||||
|
||||
/**
|
||||
* The piano roll widget is the whole space inside |
||||
* the clip editor tab when a CHORD region is selected. |
||||
*/ |
||||
typedef struct _ChordEditorSpaceWidget |
||||
{ |
||||
GtkBox parent_instance; |
||||
|
||||
/** The main vertical paned. */ |
||||
GtkPaned * main_top_bot_paned; |
||||
|
||||
/** The box dividing the chord keys and the
|
||||
* arranger. */ |
||||
GtkBox * chord_keys_slash_arranger_box; |
||||
|
||||
/** The box on the left of the arranger containing
|
||||
* the chord keys. */ |
||||
GtkBox * left_box; |
||||
|
||||
/** The box wrapped inside a scroll that will host
|
||||
* the ChordKeyWidget's. */ |
||||
GtkBox * chord_keys_box; |
||||
|
||||
/** The chord keys (see ChordEditor). */ |
||||
ChordKeyWidget * chord_keys[128]; |
||||
|
||||
/** The arranger. */ |
||||
ChordArrangerWidget * arranger; |
||||
GtkScrolledWindow * arranger_scroll; |
||||
GtkViewport * arranger_viewport; |
||||
|
||||
} ChordEditorSpaceWidget; |
||||
|
||||
void |
||||
chord_editor_space_widget_setup ( |
||||
ChordEditorSpaceWidget * self); |
||||
|
||||
/**
|
||||
* See CLIP_EDITOR_INNER_WIDGET_ADD_TO_SIZEGROUP. |
||||
*/ |
||||
void |
||||
chord_editor_space_widget_update_size_group ( |
||||
ChordEditorSpaceWidget * self, |
||||
int visible); |
||||
|
||||
void |
||||
chord_editor_space_widget_refresh ( |
||||
ChordEditorSpaceWidget * self); |
||||
|
||||
/**
|
||||
* @} |
||||
*/ |
||||
|
||||
#endif |
@ -0,0 +1,59 @@
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org> |
||||
* |
||||
* This file is part of Zrythm |
||||
* |
||||
* Zrythm is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as published by |
||||
* the Free Software Foundation, either version 3 of the License, or |
||||
* (at your option) any later version. |
||||
* |
||||
* Zrythm 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 Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with Zrythm. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
/**
|
||||
* \file |
||||
*/ |
||||
|
||||
#ifndef __GUI_WIDGETS_CHORD_KEY_H__ |
||||
#define __GUI_WIDGETS_CHORD_KEY_H__ |
||||
|
||||
#include <gtk/gtk.h> |
||||
|
||||
#define CHORD_KEY_WIDGET_TYPE \ |
||||
(chord_key_widget_get_type ()) |
||||
G_DECLARE_FINAL_TYPE ( |
||||
ChordKeyWidget, |
||||
chord_key_widget, |
||||
Z, CHORD_KEY_WIDGET, |
||||
GtkDrawingArea) |
||||
|
||||
/**
|
||||
* Piano roll note widget to be shown on the left |
||||
* side of the piano roll (128 of these). |
||||
*/ |
||||
typedef struct _ChordKeyWidget |
||||
{ |
||||
GtkDrawingArea parent_instance; |
||||
|
||||
/** The chord this widget is for. */ |
||||
ChordDescriptor * descr; |
||||
|
||||
GtkGestureMultiPress * multipress; |
||||
} ChordKeyWidget; |
||||
|
||||
/**
|
||||
* Creates a ChordKeyWidget for the given |
||||
* MIDI note descriptor. |
||||
*/ |
||||
ChordKeyWidget * |
||||
chord_key_widget_new ( |
||||
ChordDescriptor * descr); |
||||
|
||||
#endif |
@ -0,0 +1,203 @@
@@ -0,0 +1,203 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!-- Generated with glade 3.22.1 --> |
||||
<!-- |
||||
|
||||
Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org> |
||||
|
||||
This file is part of Zrythm |
||||
|
||||
Zrythm is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU Affero General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
Zrythm 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 Affero General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU Affero General Public License |
||||
along with Zrythm. If not, see <https://www.gnu.org/licenses/>. |
||||
|
||||
--> |
||||
<interface> |
||||
<requires lib="gtk+" version="3.20"/> |
||||
<template class="AutomationEditorSpaceWidget" parent="GtkBox"> |
||||
<property name="visible">True</property> |
||||
<child> |
||||
<object class="GtkPaned" id="midi_arranger_velocity_paned"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">True</property> |
||||
<property name="orientation">vertical</property> |
||||
<child> |
||||
<object class="GtkBox" id="midi_notes_arranger_box"> |
||||
<property name="height_request">120</property> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<property name="vexpand">True</property> |
||||
<child> |
||||
<object class="GtkBox" id="midi_notes_box"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<child> |
||||
<object class="GtkScrolledWindow" id="piano_roll_keys_scroll"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">True</property> |
||||
<property name="hscrollbar_policy">never</property> |
||||
<property name="vscrollbar_policy">external</property> |
||||
<property name="shadow_type">in</property> |
||||
<child> |
||||
<object class="GtkViewport" id="piano_roll_keys_viewport"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<child> |
||||
<object class="GtkBox" id="piano_roll_keys_box"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<property name="orientation">vertical</property> |
||||
<child> |
||||
<placeholder/> |
||||
</child> |
||||
<child> |
||||
<placeholder/> |
||||
</child> |
||||
<child> |
||||
<placeholder/> |
||||
</child> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">True</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">0</property> |
||||
</packing> |
||||
</child> |
||||
<child> |
||||
<placeholder/> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">False</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">0</property> |
||||
</packing> |
||||
</child> |
||||
<child> |
||||
<object class="GtkBox" id="midi_arranger_box"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<property name="orientation">vertical</property> |
||||
<child> |
||||
<object class="GtkScrolledWindow" id="arranger_scroll"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">True</property> |
||||
<property name="hscrollbar_policy">always</property> |
||||
<property name="shadow_type">in</property> |
||||
<child> |
||||
<object class="GtkViewport" id="arranger_viewport"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<child> |
||||
<object class="MidiArrangerWidget" id="arranger"> |
||||
<property name="visible">1</property> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">True</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">0</property> |
||||
</packing> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">True</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">1</property> |
||||
</packing> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="resize">True</property> |
||||
<property name="shrink">False</property> |
||||
</packing> |
||||
</child> |
||||
<child> |
||||
<object class="GtkBox" id="midi_vel_label_editor_box"> |
||||
<property name="height_request">60</property> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<child> |
||||
<object class="GtkBox" id="midi_vel_chooser_box"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<property name="orientation">vertical</property> |
||||
<child> |
||||
<object class="GtkComboBoxText" id="midi_modifier_chooser"> |
||||
<property name="visible">1</property> |
||||
<items> |
||||
<item translatable="yes" id="midi_velocity">Velocity</item> |
||||
<item translatable="yes" id="midi_pitch_wheel">Pitch Wheel</item> |
||||
<item translatable="yes" id="midi_mod_wheel">Mod Wheel</item> |
||||
<item translatable="yes" id="midi_aftertouch">Aftertouch</item> |
||||
</items> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">False</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">0</property> |
||||
</packing> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">False</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">0</property> |
||||
</packing> |
||||
</child> |
||||
<child> |
||||
<object class="GtkScrolledWindow" id="modifier_arranger_scroll"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">True</property> |
||||
<property name="hscrollbar_policy">external</property> |
||||
<property name="vscrollbar_policy">never</property> |
||||
<property name="shadow_type">in</property> |
||||
<child> |
||||
<object class="GtkViewport" id="modifier_arranger_viewport"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<child> |
||||
<object class="MidiModifierArrangerWidget" id="modifier_arranger"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">1</property> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">True</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">1</property> |
||||
</packing> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="resize">False</property> |
||||
<property name="shrink">False</property> |
||||
</packing> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">True</property> |
||||
<property name="fill">True</property> |
||||
</packing> |
||||
</child> |
||||
</template> |
||||
</interface> |
||||
|
@ -0,0 +1,211 @@
@@ -0,0 +1,211 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!-- Generated with glade 3.22.1 --> |
||||
<!-- |
||||
|
||||
Copyright (C) 2019 Alexandros Theodotou <alex at zrythm dot org> |
||||
|
||||
This file is part of Zrythm |
||||
|
||||
Zrythm is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU Affero General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
Zrythm 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 Affero General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU Affero General Public License |
||||
along with Zrythm. If not, see <https://www.gnu.org/licenses/>. |
||||
|
||||
--> |
||||
<interface> |
||||
<requires lib="gtk+" version="3.20"/> |
||||
<template class="ChordEditorSpaceWidget" parent="GtkBox"> |
||||
<property name="visible">True</property> |
||||
<child> |
||||
<object class="GtkPaned" id="main_top_bot_paned"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">True</property> |
||||
<property name="orientation">vertical</property> |
||||
<child> |
||||
<object class="GtkBox" |
||||
id="chord_keys_slash_arranger_box"> |
||||
<property name="height_request">120</property> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<property name="vexpand">True</property> |
||||
<child> |
||||
<object class="GtkBox" |
||||
id="left_box"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<child> |
||||
<object class="GtkScrolledWindow" |
||||
id="chord_roll_keys_scroll"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">True</property> |
||||
<property name="hscrollbar_policy">never</property> |
||||
<property name="vscrollbar_policy">external</property> |
||||
<property name="shadow_type">in</property> |
||||
<child> |
||||
<object class="GtkViewport" |
||||
id="chord_keys_viewport"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<child> |
||||
<object class="GtkBox" |
||||
id="chord_keys_box"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<property name="orientation">vertical</property> |
||||
<child> |
||||
<placeholder/> |
||||
</child> |
||||
<child> |
||||
<placeholder/> |
||||
</child> |
||||
<child> |
||||
<placeholder/> |
||||
</child> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">True</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">0</property> |
||||
</packing> |
||||
</child> |
||||
<child> |
||||
<placeholder/> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">False</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">0</property> |
||||
</packing> |
||||
</child> |
||||
<child> |
||||
<object class="GtkBox" |
||||
id="arranger_box"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<property name="orientation">vertical</property> |
||||
<child> |
||||
<object class="GtkScrolledWindow" |
||||
id="arranger_scroll"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">True</property> |
||||
<property name="hscrollbar_policy">always</property> |
||||
<property name="shadow_type">in</property> |
||||
<child> |
||||
<object class="GtkViewport" |
||||
id="arranger_viewport"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<child> |
||||
<object class="ChordArrangerWidget" id="arranger"> |
||||
<property name="visible">1</property> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">True</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">0</property> |
||||
</packing> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">True</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">1</property> |
||||
</packing> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="resize">True</property> |
||||
<property name="shrink">False</property> |
||||
</packing> |
||||
</child> |
||||
<child> |
||||
<object class="GtkBox" id="midi_vel_label_editor_box"> |
||||
<property name="height_request">60</property> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<child> |
||||
<object class="GtkBox" id="midi_vel_chooser_box"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<property name="orientation">vertical</property> |
||||
<child> |
||||
<object class="GtkComboBoxText" id="midi_modifier_chooser"> |
||||
<property name="visible">1</property> |
||||
<items> |
||||
<item translatable="yes" id="midi_velocity">Velocity</item> |
||||
<item translatable="yes" id="midi_pitch_wheel">Pitch Wheel</item> |
||||
<item translatable="yes" id="midi_mod_wheel">Mod Wheel</item> |
||||
<item translatable="yes" id="midi_aftertouch">Aftertouch</item> |
||||
</items> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">False</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">0</property> |
||||
</packing> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">False</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">0</property> |
||||
</packing> |
||||
</child> |
||||
<child> |
||||
<object class="GtkScrolledWindow" id="modifier_arranger_scroll"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">True</property> |
||||
<property name="hscrollbar_policy">external</property> |
||||
<property name="vscrollbar_policy">never</property> |
||||
<property name="shadow_type">in</property> |
||||
<child> |
||||
<object class="GtkViewport" id="modifier_arranger_viewport"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">False</property> |
||||
<child> |
||||
<object class="MidiModifierArrangerWidget" id="modifier_arranger"> |
||||
<property name="visible">True</property> |
||||
<property name="can_focus">1</property> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">True</property> |
||||
<property name="fill">True</property> |
||||
<property name="position">1</property> |
||||
</packing> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="resize">False</property> |
||||
<property name="shrink">False</property> |
||||
</packing> |
||||
</child> |
||||
</object> |
||||
<packing> |
||||
<property name="expand">True</property> |
||||
<property name="fill">True</property> |
||||
</packing> |
||||
</child> |
||||
</template> |
||||
</interface> |
||||
|