mirror of
https://gitlab.gnome.org/jpu/cambalache.git
synced 2025-08-13 00:04:28 -04:00
Compare commits
9 Commits
f9299fb044
...
315ca0cfb0
Author | SHA1 | Date | |
---|---|---|---|
|
315ca0cfb0 | ||
|
a350cbb143 | ||
|
6adce49744 | ||
|
706d68b476 | ||
|
9c12a62f36 | ||
|
59ab9fae66 | ||
|
964c788a2a | ||
|
6b716b5dfc | ||
|
4b4f79ba49 |
@ -1,5 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_shortcuts.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
<object class="GtkShortcutsWindow" id="shortcuts">
|
<object class="GtkShortcutsWindow" id="shortcuts">
|
||||||
<property name="section-name">shortcuts</property>
|
<property name="section-name">shortcuts</property>
|
||||||
@ -8,67 +10,66 @@
|
|||||||
<property name="section-name">shortcuts</property>
|
<property name="section-name">shortcuts</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsGroup">
|
<object class="GtkShortcutsGroup">
|
||||||
<property name="title" translatable="1">Project</property>
|
<property name="title" translatable="yes">Project</property>
|
||||||
<property name="view">shortcuts</property>
|
<property name="view">shortcuts</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsShortcut">
|
<object class="GtkShortcutsShortcut">
|
||||||
<property name="accelerator"><Control>n</property>
|
<property name="accelerator"><Control>n</property>
|
||||||
<property name="title" translatable="1">Create new project</property>
|
<property name="title" translatable="yes">Create new project</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsShortcut">
|
<object class="GtkShortcutsShortcut">
|
||||||
<property name="accelerator"><Control>o</property>
|
<property name="accelerator"><Control>o</property>
|
||||||
<property name="title" translatable="1">Open a project</property>
|
<property name="title" translatable="yes">Open a project</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsShortcut">
|
<object class="GtkShortcutsShortcut">
|
||||||
<property name="accelerator"><Control>w</property>
|
<property name="accelerator"><Control>w</property>
|
||||||
<property name="title" translatable="1">Close the project</property>
|
<property name="title" translatable="yes">Close the project</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsShortcut">
|
<object class="GtkShortcutsShortcut">
|
||||||
<property name="accelerator"><Control>s</property>
|
<property name="accelerator"><Control>s</property>
|
||||||
<property name="title" translatable="1">Save the project</property>
|
<property name="title" translatable="yes">Save the project</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsShortcut">
|
<object class="GtkShortcutsShortcut">
|
||||||
<property name="visible">0</property>
|
|
||||||
<property name="accelerator"><Control>e</property>
|
<property name="accelerator"><Control>e</property>
|
||||||
<property name="title" translatable="1">Save and Export</property>
|
<property name="title" translatable="yes">Save and Export</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsGroup">
|
<object class="GtkShortcutsGroup">
|
||||||
<property name="title" translatable="1">Workspace</property>
|
<property name="title" translatable="yes">Workspace</property>
|
||||||
<property name="view">shortcuts</property>
|
<property name="view">shortcuts</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsShortcut">
|
<object class="GtkShortcutsShortcut">
|
||||||
<property name="accelerator"><Control>Insert</property>
|
<property name="accelerator"><Control>Insert</property>
|
||||||
<property name="title" translatable="1">Add slot/column</property>
|
<property name="title" translatable="yes">Add slot/column</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsShortcut">
|
<object class="GtkShortcutsShortcut">
|
||||||
<property name="accelerator"><Control>Delete</property>
|
<property name="accelerator"><Control>Delete</property>
|
||||||
<property name="title" translatable="1">Remove slot/column</property>
|
<property name="title" translatable="yes">Remove slot/column</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsShortcut">
|
<object class="GtkShortcutsShortcut">
|
||||||
<property name="accelerator"><Control><shift>Insert</property>
|
<property name="accelerator"><Control><shift>Insert</property>
|
||||||
<property name="title" translatable="1">Add row</property>
|
<property name="title" translatable="yes">Add row</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkShortcutsShortcut">
|
<object class="GtkShortcutsShortcut">
|
||||||
<property name="accelerator"><Control><shift>Delete</property>
|
<property name="accelerator"><Control><shift>Delete</property>
|
||||||
<property name="title" translatable="1">Remove row</property>
|
<property name="title" translatable="yes">Remove row</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_window.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
|
<requires lib="gio" version="2.0"/>
|
||||||
<object class="GtkFileFilter" id="import_filter">
|
<object class="GtkFileFilter" id="import_filter">
|
||||||
<mime-types>
|
<mime-types>
|
||||||
<mime-type>application/x-glade</mime-type>
|
<mime-type>application/x-glade</mime-type>
|
||||||
@ -15,47 +18,47 @@
|
|||||||
<section>
|
<section>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.import</attribute>
|
<attribute name="action">win.import</attribute>
|
||||||
<attribute name="label" translatable="1">Import</attribute>
|
<attribute name="label" translatable="yes">Import</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.export</attribute>
|
<attribute name="action">win.export</attribute>
|
||||||
<attribute name="label" translatable="1">Export all</attribute>
|
<attribute name="label" translatable="yes">Export all</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.add_css</attribute>
|
<attribute name="action">win.add_css</attribute>
|
||||||
<attribute name="label" translatable="1">Add CSS file</attribute>
|
<attribute name="label" translatable="yes">Add CSS file</attribute>
|
||||||
</item>
|
</item>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.close</attribute>
|
<attribute name="action">win.close</attribute>
|
||||||
<attribute name="label" translatable="1">Close Project</attribute>
|
<attribute name="label" translatable="yes">Close Project</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.debug</attribute>
|
<attribute name="action">win.debug</attribute>
|
||||||
<attribute name="label" translatable="1">Debug Project Data</attribute>
|
<attribute name="label" translatable="yes">Debug Project Data</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.intro</attribute>
|
<attribute name="action">win.intro</attribute>
|
||||||
<attribute name="label" translatable="1">Interactive intro</attribute>
|
<attribute name="label" translatable="yes">Interactive intro</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.contact</attribute>
|
<attribute name="action">win.contact</attribute>
|
||||||
<attribute name="label" translatable="1">Contact</attribute>
|
<attribute name="label" translatable="yes">Contact</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.donate</attribute>
|
<attribute name="action">win.donate</attribute>
|
||||||
<attribute name="label" translatable="1">Donate</attribute>
|
<attribute name="label" translatable="yes">Donate</attribute>
|
||||||
</item>
|
</item>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.show-help-overlay</attribute>
|
<attribute name="action">win.show-help-overlay</attribute>
|
||||||
<attribute name="label" translatable="1">Keyboard Shortcuts</attribute>
|
<attribute name="label" translatable="yes">Keyboard Shortcuts</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.about</attribute>
|
<attribute name="action">win.about</attribute>
|
||||||
<attribute name="label" translatable="1">About</attribute>
|
<attribute name="label" translatable="yes">About</attribute>
|
||||||
</item>
|
</item>
|
||||||
</section>
|
</section>
|
||||||
</menu>
|
</menu>
|
||||||
@ -66,9 +69,6 @@
|
|||||||
</mime-types>
|
</mime-types>
|
||||||
</object>
|
</object>
|
||||||
<template class="CmbWindow" parent="GtkApplicationWindow">
|
<template class="CmbWindow" parent="GtkApplicationWindow">
|
||||||
<style>
|
|
||||||
<class name="cmb-window"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkOverlay">
|
<object class="GtkOverlay">
|
||||||
<property name="child">
|
<property name="child">
|
||||||
@ -76,20 +76,18 @@
|
|||||||
<property name="transition-type">crossfade</property>
|
<property name="transition-type">crossfade</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">cambalache</property>
|
|
||||||
<property name="title" translatable="1">Cambalache</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="version_label">
|
<object class="GtkLabel" id="version_label">
|
||||||
<property name="vexpand">1</property>
|
|
||||||
<property name="name">version</property>
|
|
||||||
<property name="halign">center</property>
|
<property name="halign">center</property>
|
||||||
<property name="valign">end</property>
|
|
||||||
<property name="margin-bottom">4</property>
|
<property name="margin-bottom">4</property>
|
||||||
|
<property name="name">version</property>
|
||||||
|
<property name="valign">end</property>
|
||||||
|
<property name="vexpand">1</property>
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="size" value="9000"></attribute>
|
<attribute name="size" value="9000"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
@ -98,36 +96,36 @@
|
|||||||
</style>
|
</style>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">cambalache</property>
|
||||||
|
<property name="title" translatable="yes">Cambalache</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">new_project</property>
|
|
||||||
<property name="title" translatable="1">New Project</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="label" translatable="1"><b>
|
<property name="justify">center</property>
|
||||||
|
<property name="label" translatable="yes"><b>
|
||||||
|
|
||||||
<span size="18000">New project</span>
|
<span size="18000">New project</span>
|
||||||
</b></property>
|
</b></property>
|
||||||
<property name="use-markup">1</property>
|
<property name="use-markup">1</property>
|
||||||
<property name="justify">center</property>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkGrid">
|
<object class="GtkGrid">
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="valign">start</property>
|
|
||||||
<property name="row-spacing">8</property>
|
|
||||||
<property name="column-spacing">8</property>
|
|
||||||
<property name="column-homogeneous">1</property>
|
<property name="column-homogeneous">1</property>
|
||||||
|
<property name="column-spacing">8</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="row-spacing">8</property>
|
||||||
|
<property name="valign">start</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
<property name="label" translatable="1">Name</property>
|
<property name="label" translatable="yes">Name</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">0</property>
|
<property name="row">0</property>
|
||||||
@ -137,7 +135,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
<property name="label" translatable="1">Toolkit target</property>
|
<property name="label" translatable="yes">Toolkit target</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">2</property>
|
<property name="row">2</property>
|
||||||
@ -147,7 +145,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
<property name="label" translatable="1">Location</property>
|
<property name="label" translatable="yes">Location</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">1</property>
|
<property name="row">1</property>
|
||||||
@ -157,25 +155,25 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="np_name_entry">
|
<object class="GtkEntry" id="np_name_entry">
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="width-chars">32</property>
|
|
||||||
<property name="placeholder-text" translatable="1"><project basename></property>
|
|
||||||
<property name="input-purpose">alpha</property>
|
|
||||||
<property name="input-hints">GTK_INPUT_HINT_LOWERCASE | GTK_INPUT_HINT_NONE</property>
|
<property name="input-hints">GTK_INPUT_HINT_LOWERCASE | GTK_INPUT_HINT_NONE</property>
|
||||||
<signal name="changed" handler="on_np_name_entry_changed" swapped="no"/>
|
<property name="input-purpose">alpha</property>
|
||||||
|
<property name="placeholder-text" translatable="yes"><project basename></property>
|
||||||
|
<property name="width-chars">32</property>
|
||||||
|
<signal name="changed" handler="on_np_name_entry_changed"/>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">0</property>
|
|
||||||
<property name="column-span">3</property>
|
<property name="column-span">3</property>
|
||||||
|
<property name="row">0</property>
|
||||||
</layout>
|
</layout>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="np_create_button">
|
<object class="GtkButton" id="np_create_button">
|
||||||
<property name="label" translatable="1">Create</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="receives-default">1</property>
|
|
||||||
<property name="margin-top">16</property>
|
|
||||||
<property name="action-name">win.new</property>
|
<property name="action-name">win.new</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="label" translatable="yes">Create</property>
|
||||||
|
<property name="margin-top">16</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<style>
|
<style>
|
||||||
<class name="suggested-action"/>
|
<class name="suggested-action"/>
|
||||||
</style>
|
</style>
|
||||||
@ -189,14 +187,11 @@
|
|||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="homogeneous">True</property>
|
<property name="homogeneous">True</property>
|
||||||
<style>
|
|
||||||
<class name="linked"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkToggleButton" id="np_gtk3_radiobutton">
|
<object class="GtkToggleButton" id="np_gtk3_radiobutton">
|
||||||
<property name="tooltip-text" translatable="1">Old stable version</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="group">np_gtk4_radiobutton</property>
|
<property name="group">np_gtk4_radiobutton</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Old stable version</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="spacing">8</property>
|
<property name="spacing">8</property>
|
||||||
@ -210,9 +205,9 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
|
<property name="justify">center</property>
|
||||||
<property name="label"><b>Gtk 3</b></property>
|
<property name="label"><b>Gtk 3</b></property>
|
||||||
<property name="use-markup">1</property>
|
<property name="use-markup">1</property>
|
||||||
<property name="justify">center</property>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
@ -221,9 +216,9 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkToggleButton" id="np_gtk4_radiobutton">
|
<object class="GtkToggleButton" id="np_gtk4_radiobutton">
|
||||||
<property name="tooltip-text" translatable="1">Recommended for new projects</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="active">1</property>
|
<property name="active">1</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Recommended for new projects</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="spacing">8</property>
|
<property name="spacing">8</property>
|
||||||
@ -237,27 +232,30 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
|
<property name="justify">center</property>
|
||||||
<property name="label"><b>Gtk 4</b></property>
|
<property name="label"><b>Gtk 4</b></property>
|
||||||
<property name="use-markup">1</property>
|
<property name="use-markup">1</property>
|
||||||
<property name="justify">center</property>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="linked"/>
|
||||||
|
</style>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">2</property>
|
|
||||||
<property name="column-span">3</property>
|
<property name="column-span">3</property>
|
||||||
|
<property name="row">2</property>
|
||||||
</layout>
|
</layout>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="np_location_chooser">
|
<object class="GtkButton" id="np_location_chooser">
|
||||||
<property name="sensitive">False</property>
|
|
||||||
<property name="icon-name">folder-symbolic</property>
|
|
||||||
<property name="action-name">win.select_project_location</property>
|
<property name="action-name">win.select_project_location</property>
|
||||||
|
<property name="icon-name">folder-symbolic</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="spacing">4</property>
|
<property name="spacing">4</property>
|
||||||
@ -268,26 +266,26 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="np_location_chooser_label">
|
<object class="GtkLabel" id="np_location_chooser_label">
|
||||||
<property name="hexpand">True</property>
|
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">1</property>
|
|
||||||
<property name="column-span">3</property>
|
<property name="column-span">3</property>
|
||||||
|
<property name="row">1</property>
|
||||||
</layout>
|
</layout>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="np_cancel_button">
|
<object class="GtkButton" id="np_cancel_button">
|
||||||
<property name="label" translatable="1">Cancel</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="receives-default">1</property>
|
|
||||||
<property name="margin-top">16</property>
|
|
||||||
<property name="action-name">win.show_workspace</property>
|
<property name="action-name">win.show_workspace</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="label" translatable="yes">Cancel</property>
|
||||||
|
<property name="margin-top">16</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">4</property>
|
<property name="row">4</property>
|
||||||
@ -297,7 +295,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
<property name="label" translatable="1">UI Filename</property>
|
<property name="label" translatable="yes">UI Filename</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">3</property>
|
<property name="row">3</property>
|
||||||
@ -306,98 +304,35 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkEntry" id="np_ui_entry">
|
<object class="GtkEntry" id="np_ui_entry">
|
||||||
<property name="sensitive">0</property>
|
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="width-chars">32</property>
|
|
||||||
<property name="input-purpose">alpha</property>
|
|
||||||
<property name="input-hints">GTK_INPUT_HINT_LOWERCASE | GTK_INPUT_HINT_NONE</property>
|
<property name="input-hints">GTK_INPUT_HINT_LOWERCASE | GTK_INPUT_HINT_NONE</property>
|
||||||
|
<property name="input-purpose">alpha</property>
|
||||||
|
<property name="sensitive">0</property>
|
||||||
|
<property name="width-chars">32</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">3</property>
|
|
||||||
<property name="column-span">3</property>
|
<property name="column-span">3</property>
|
||||||
|
<property name="row">3</property>
|
||||||
</layout>
|
</layout>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">new_project</property>
|
||||||
|
<property name="title" translatable="yes">New Project</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">workspace</property>
|
|
||||||
<property name="title" translatable="1">Workspace</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkPaned">
|
<object class="GtkPaned">
|
||||||
<property name="shrink-end-child">0</property>
|
|
||||||
<property name="resize-end-child">0</property>
|
|
||||||
<property name="shrink-start-child">0</property>
|
|
||||||
<property name="height-request">380</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="start-child">
|
|
||||||
<object class="GtkPaned">
|
|
||||||
<property name="shrink-end-child">0</property>
|
|
||||||
<property name="shrink-start-child">0</property>
|
|
||||||
<property name="resize-start-child">0</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="start-child">
|
|
||||||
<object class="GtkBox" id="inspector">
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkScrolledWindow">
|
|
||||||
<property name="vexpand">1</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="min-content-width">256</property>
|
|
||||||
<property name="propagate-natural-width">1</property>
|
|
||||||
<property name="propagate-natural-height">1</property>
|
|
||||||
<child>
|
|
||||||
<object class="CmbTreeView" id="tree_view">
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="headers-visible">False</property>
|
|
||||||
<property name="headers-clickable">False</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</property>
|
|
||||||
<property name="end-child">
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<object class="CmbTypeChooser" id="type_chooser">
|
|
||||||
<property name="spacing">2</property>
|
|
||||||
<signal name="chooser-popdown" handler="on_type_chooser_chooser_popdown" swapped="no"/>
|
|
||||||
<signal name="chooser-popup" handler="on_type_chooser_chooser_popup" swapped="no"/>
|
|
||||||
<signal name="type-selected" handler="on_type_chooser_type_selected" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="CmbView" id="view">
|
|
||||||
<property name="vexpand">1</property>
|
|
||||||
<signal name="placeholder-activated" handler="on_view_placeholder_activated" swapped="no"/>
|
|
||||||
<signal name="placeholder-selected" handler="on_view_placeholder_selected" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</property>
|
|
||||||
</object>
|
|
||||||
</property>
|
|
||||||
<property name="end-child">
|
<property name="end-child">
|
||||||
<object class="GtkStack" id="editor_stack">
|
<object class="GtkStack" id="editor_stack">
|
||||||
<property name="transition-type">crossfade</property>
|
<property name="transition-type">crossfade</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">object</property>
|
|
||||||
<property name="title" translatable="1">Object Editor</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
@ -413,12 +348,10 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStack" id="object_stack">
|
<object class="GtkStack" id="object_stack">
|
||||||
<property name="vexpand">1</property>
|
|
||||||
<property name="transition-type">crossfade</property>
|
<property name="transition-type">crossfade</property>
|
||||||
|
<property name="vexpand">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">properties</property>
|
|
||||||
<property name="title" translatable="1">Properties</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="CmbScrolledWindow">
|
<object class="CmbScrolledWindow">
|
||||||
<property name="child">
|
<property name="child">
|
||||||
@ -428,12 +361,12 @@
|
|||||||
</property>
|
</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">properties</property>
|
||||||
|
<property name="title" translatable="yes">Properties</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">layout</property>
|
|
||||||
<property name="title" translatable="1">Layout</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="CmbScrolledWindow">
|
<object class="CmbScrolledWindow">
|
||||||
<property name="child">
|
<property name="child">
|
||||||
@ -443,38 +376,38 @@
|
|||||||
</property>
|
</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">layout</property>
|
||||||
|
<property name="title" translatable="yes">Layout</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
|
<property name="child">
|
||||||
|
<object class="CmbSignalEditor" id="signal_editor"/>
|
||||||
|
</property>
|
||||||
<property name="name">signals</property>
|
<property name="name">signals</property>
|
||||||
<property name="title" translatable="1">Signals</property>
|
<property name="title" translatable="yes">Signals</property>
|
||||||
<property name="child">
|
|
||||||
<object class="CmbSignalEditor" id="signal_editor">
|
|
||||||
</object>
|
|
||||||
</property>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">fragment</property>
|
|
||||||
<property name="title" translatable="0"></></property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="CmbFragmentEditor" id="fragment_editor">
|
<object class="CmbFragmentEditor" id="fragment_editor"/>
|
||||||
</object>
|
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">fragment</property>
|
||||||
|
<property name="title"></></property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">object</property>
|
||||||
|
<property name="title" translatable="yes">Object Editor</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">ui</property>
|
|
||||||
<property name="title" translatable="1">UI Editor</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
@ -494,116 +427,153 @@
|
|||||||
<property name="vexpand">1</property>
|
<property name="vexpand">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">properties</property>
|
|
||||||
<property name="title" translatable="1">Properties</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="CmbUIEditor" id="ui_editor">
|
<object class="CmbUIEditor" id="ui_editor">
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<property name="vexpand">True</property>
|
<property name="vexpand">True</property>
|
||||||
<signal name="remove-ui" handler="on_ui_editor_remove_ui" swapped="no"/>
|
<signal name="remove-ui" handler="on_ui_editor_remove_ui"/>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">properties</property>
|
||||||
|
<property name="title" translatable="yes">Properties</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">requires</property>
|
|
||||||
<property name="title" translatable="1">Requires</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="CmbUIRequiresEditor" id="ui_requires_editor">
|
<object class="CmbUIRequiresEditor" id="ui_requires_editor">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">requires</property>
|
||||||
|
<property name="title" translatable="yes">Requires</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">fragment</property>
|
|
||||||
<property name="title" translatable="0"></></property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="CmbFragmentEditor" id="ui_fragment_editor">
|
<object class="CmbFragmentEditor" id="ui_fragment_editor">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">fragment</property>
|
||||||
|
<property name="title"></></property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">ui</property>
|
||||||
|
<property name="title" translatable="yes">UI Editor</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">css</property>
|
|
||||||
<property name="title" translatable="1">CSS Editor</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="CmbCSSEditor" id="css_editor">
|
<object class="CmbCSSEditor" id="css_editor">
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<property name="vexpand">True</property>
|
<property name="vexpand">True</property>
|
||||||
<signal name="remove-css" handler="on_css_editor_remove_ui" swapped="no"/>
|
<signal name="remove-css" handler="on_css_editor_remove_ui"/>
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">css</property>
|
||||||
|
<property name="title" translatable="yes">CSS Editor</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="height-request">380</property>
|
||||||
|
<property name="resize-end-child">0</property>
|
||||||
|
<property name="shrink-end-child">0</property>
|
||||||
|
<property name="shrink-start-child">0</property>
|
||||||
|
<property name="start-child">
|
||||||
|
<object class="GtkPaned">
|
||||||
|
<property name="end-child">
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="CmbTypeChooser" id="type_chooser">
|
||||||
|
<property name="spacing">2</property>
|
||||||
|
<signal name="chooser-popdown" handler="on_type_chooser_chooser_popdown"/>
|
||||||
|
<signal name="chooser-popup" handler="on_type_chooser_chooser_popup"/>
|
||||||
|
<signal name="type-selected" handler="on_type_chooser_type_selected"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="CmbView" id="view">
|
||||||
|
<property name="vexpand">1</property>
|
||||||
|
<signal name="placeholder-activated" handler="on_view_placeholder_activated"/>
|
||||||
|
<signal name="placeholder-selected" handler="on_view_placeholder_selected"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="resize-start-child">0</property>
|
||||||
|
<property name="shrink-end-child">0</property>
|
||||||
|
<property name="shrink-start-child">0</property>
|
||||||
|
<property name="start-child">
|
||||||
|
<object class="GtkBox" id="inspector">
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScrolledWindow">
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="min-content-width">256</property>
|
||||||
|
<property name="propagate-natural-height">1</property>
|
||||||
|
<property name="propagate-natural-width">1</property>
|
||||||
|
<property name="vexpand">1</property>
|
||||||
|
<child>
|
||||||
|
<object class="CmbTreeView" id="tree_view">
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="headers-clickable">False</property>
|
||||||
|
<property name="headers-visible">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">workspace</property>
|
||||||
|
<property name="title" translatable="yes">Workspace</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStackPage">
|
||||||
<property name="name">donate</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<style>
|
|
||||||
<class name="donate"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton">
|
<object class="GtkButton">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="receives-default">1</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="action-name">win.show_workspace</property>
|
<property name="action-name">win.show_workspace</property>
|
||||||
<style>
|
<property name="focusable">1</property>
|
||||||
<class name="borderless"/>
|
<property name="halign">start</property>
|
||||||
</style>
|
<property name="receives-default">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">go-previous-symbolic</property>
|
<property name="icon-name">go-previous-symbolic</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="borderless"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="vexpand">1</property>
|
|
||||||
<property name="halign">center</property>
|
<property name="halign">center</property>
|
||||||
<property name="valign">start</property>
|
|
||||||
<property name="margin-top">32</property>
|
|
||||||
<property name="margin-bottom">64</property>
|
|
||||||
<property name="spacing">196</property>
|
|
||||||
<property name="homogeneous">1</property>
|
<property name="homogeneous">1</property>
|
||||||
|
<property name="margin-bottom">64</property>
|
||||||
|
<property name="margin-top">32</property>
|
||||||
|
<property name="spacing">196</property>
|
||||||
|
<property name="valign">start</property>
|
||||||
|
<property name="vexpand">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="halign">center</property>
|
<property name="halign">center</property>
|
||||||
@ -620,7 +590,7 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="label" translatable="1">• Liberapay is a recurrent donations platform
|
<property name="label" translatable="yes">• Liberapay is a recurrent donations platform
|
||||||
|
|
||||||
• Run by a non-profit organization
|
• Run by a non-profit organization
|
||||||
|
|
||||||
@ -633,11 +603,11 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton">
|
<object class="GtkButton">
|
||||||
<property name="label" translatable="1">Donate</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="receives-default">1</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="action-name">win.liberapay</property>
|
<property name="action-name">win.liberapay</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="label" translatable="yes">Donate</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<style>
|
<style>
|
||||||
<class name="suggested-action"/>
|
<class name="suggested-action"/>
|
||||||
</style>
|
</style>
|
||||||
@ -661,7 +631,7 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="label" translatable="1">• Patreon is a membership platform for creators
|
<property name="label" translatable="yes">• Patreon is a membership platform for creators
|
||||||
|
|
||||||
• Run by private company
|
• Run by private company
|
||||||
|
|
||||||
@ -674,28 +644,29 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton">
|
<object class="GtkButton">
|
||||||
<property name="label" translatable="1">Donate</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="receives-default">1</property>
|
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="action-name">win.patreon</property>
|
<property name="action-name">win.patreon</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="label" translatable="yes">Donate</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="donate"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="name">donate</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
<child type="overlay">
|
<child type="overlay">
|
||||||
<object class="GtkRevealer" id="message_revealer">
|
<object class="GtkRevealer" id="message_revealer">
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="valign">end</property>
|
|
||||||
<property name="transition-type">slide-up</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkLabel" id="message_label">
|
<object class="GtkLabel" id="message_label">
|
||||||
<style>
|
<style>
|
||||||
@ -703,6 +674,9 @@
|
|||||||
</style>
|
</style>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="transition-type">slide-up</property>
|
||||||
|
<property name="valign">end</property>
|
||||||
<style>
|
<style>
|
||||||
<class name="message"/>
|
<class name="message"/>
|
||||||
</style>
|
</style>
|
||||||
@ -717,7 +691,7 @@
|
|||||||
<property name="orientation">GTK_ORIENTATION_VERTICAL</property>
|
<property name="orientation">GTK_ORIENTATION_VERTICAL</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="label" translatable="1">Cambalache</property>
|
<property name="label" translatable="yes">Cambalache</property>
|
||||||
<property name="vexpand">true</property>
|
<property name="vexpand">true</property>
|
||||||
<style>
|
<style>
|
||||||
<class name="title"/>
|
<class name="title"/>
|
||||||
@ -737,8 +711,8 @@
|
|||||||
<child type="end">
|
<child type="end">
|
||||||
<object class="GtkMenuButton" id="menu_button">
|
<object class="GtkMenuButton" id="menu_button">
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="receives-default">1</property>
|
|
||||||
<property name="menu-model">main_menu</property>
|
<property name="menu-model">main_menu</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">open-menu-symbolic</property>
|
<property name="icon-name">open-menu-symbolic</property>
|
||||||
@ -748,16 +722,13 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="open_button_box">
|
<object class="GtkBox" id="open_button_box">
|
||||||
<style>
|
|
||||||
<class name="linked"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="open_button">
|
<object class="GtkButton" id="open_button">
|
||||||
<property name="label" translatable="1">_Open</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="receives-default">1</property>
|
|
||||||
<property name="tooltip-text" translatable="1">Open a project</property>
|
|
||||||
<property name="action-name">win.open</property>
|
<property name="action-name">win.open</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="label" translatable="yes">_Open</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Open a project</property>
|
||||||
<property name="use-underline">1</property>
|
<property name="use-underline">1</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
@ -771,15 +742,17 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="linked"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="new_button">
|
<object class="GtkButton" id="new_button">
|
||||||
|
<property name="action-name">win.create_new</property>
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="receives-default">1</property>
|
||||||
<property name="tooltip-text" translatable="1">Create a new project</property>
|
<property name="tooltip-text" translatable="yes">Create a new project</property>
|
||||||
<property name="action-name">win.create_new</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">document-new-symbolic</property>
|
<property name="icon-name">document-new-symbolic</property>
|
||||||
@ -789,20 +762,17 @@
|
|||||||
</child>
|
</child>
|
||||||
<child type="end">
|
<child type="end">
|
||||||
<object class="GtkBox" id="save_button_box">
|
<object class="GtkBox" id="save_button_box">
|
||||||
<style>
|
|
||||||
<class name="linked"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="cmb_save_button">
|
<object class="GtkButton" id="cmb_save_button">
|
||||||
<property name="label" translatable="1">Save</property>
|
|
||||||
<property name="tooltip-text" translatable="1">Save project</property>
|
|
||||||
<property name="action-name">win.save</property>
|
<property name="action-name">win.save</property>
|
||||||
|
<property name="label" translatable="yes">Save</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Save project</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="save_as_button">
|
<object class="GtkButton" id="save_as_button">
|
||||||
<property name="tooltip-text" translatable="1">Save project with a different file name</property>
|
|
||||||
<property name="action-name">win.save_as</property>
|
<property name="action-name">win.save_as</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Save project with a different file name</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">document-save-as-symbolic</property>
|
<property name="icon-name">document-save-as-symbolic</property>
|
||||||
@ -810,6 +780,9 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="linked"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
@ -817,8 +790,8 @@
|
|||||||
</child>
|
</child>
|
||||||
<child type="end">
|
<child type="end">
|
||||||
<object class="GtkButton" id="add_button">
|
<object class="GtkButton" id="add_button">
|
||||||
<property name="tooltip-text" translatable="1">Add new UI to project</property>
|
|
||||||
<property name="action-name">win.add_ui</property>
|
<property name="action-name">win.add_ui</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Add new UI to project</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">list-add-symbolic</property>
|
<property name="icon-name">list-add-symbolic</property>
|
||||||
@ -828,8 +801,8 @@
|
|||||||
</child>
|
</child>
|
||||||
<child type="end">
|
<child type="end">
|
||||||
<object class="GtkButton" id="intro_button">
|
<object class="GtkButton" id="intro_button">
|
||||||
<property name="tooltip-text" translatable="1">Start interactive introduction</property>
|
|
||||||
<property name="action-name">win.intro</property>
|
<property name="action-name">win.intro</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Start interactive introduction</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">start-here-symbolic</property>
|
<property name="icon-name">start-here-symbolic</property>
|
||||||
@ -839,14 +812,11 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<style>
|
|
||||||
<class name="linked"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="undo_button">
|
<object class="GtkButton" id="undo_button">
|
||||||
|
<property name="action-name">win.undo</property>
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="receives-default">1</property>
|
||||||
<property name="action-name">win.undo</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">edit-undo-symbolic</property>
|
<property name="icon-name">edit-undo-symbolic</property>
|
||||||
@ -856,9 +826,9 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="redo_button">
|
<object class="GtkButton" id="redo_button">
|
||||||
|
<property name="action-name">win.redo</property>
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="receives-default">1</property>
|
||||||
<property name="action-name">win.redo</property>
|
|
||||||
<property name="use-underline">1</property>
|
<property name="use-underline">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
@ -867,22 +837,28 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="linked"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="cmb-window"/>
|
||||||
|
</style>
|
||||||
</template>
|
</template>
|
||||||
<object class="GtkAboutDialog" id="about_dialog">
|
<object class="GtkAboutDialog" id="about_dialog">
|
||||||
<property name="transient-for">CmbWindow</property>
|
|
||||||
<property name="program-name">Cambalache</property>
|
|
||||||
<property name="copyright">© 2020-2024 Juan Pablo Ugarte</property>
|
|
||||||
<property name="comments" translatable="1">User Interface Maker</property>
|
|
||||||
<property name="website">https://gitlab.gnome.org/jpu/cambalache</property>
|
|
||||||
<property name="website-label" translatable="1">Source repository and issue tracker</property>
|
|
||||||
<property name="authors">Juan Pablo Ugarte</property>
|
|
||||||
<property name="artists">Franco Dodorico
|
<property name="artists">Franco Dodorico
|
||||||
Juan Pablo Ugarte</property>
|
Juan Pablo Ugarte</property>
|
||||||
<property name="logo-icon-name">ar.xjuan.Cambalache</property>
|
<property name="authors">Juan Pablo Ugarte</property>
|
||||||
|
<property name="comments" translatable="yes">User Interface Maker</property>
|
||||||
|
<property name="copyright">© 2020-2024 Juan Pablo Ugarte</property>
|
||||||
<property name="license-type">lgpl-2-1-only</property>
|
<property name="license-type">lgpl-2-1-only</property>
|
||||||
|
<property name="logo-icon-name">ar.xjuan.Cambalache</property>
|
||||||
|
<property name="program-name">Cambalache</property>
|
||||||
|
<property name="transient-for">CmbWindow</property>
|
||||||
|
<property name="website">https://gitlab.gnome.org/jpu/cambalache</property>
|
||||||
|
<property name="website-label" translatable="yes">Source repository and issue tracker</property>
|
||||||
</object>
|
</object>
|
||||||
</interface>
|
</interface>
|
||||||
|
@ -1,41 +1,44 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_context_menu.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
|
<requires lib="gio" version="2.0"/>
|
||||||
<menu id="menu_model">
|
<menu id="menu_model">
|
||||||
<section>
|
<section>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.cut</attribute>
|
<attribute name="action">win.cut</attribute>
|
||||||
<attribute name="label" translatable="1">Cut</attribute>
|
<attribute name="label" translatable="yes">Cut</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.copy</attribute>
|
<attribute name="action">win.copy</attribute>
|
||||||
<attribute name="label" translatable="1">Copy</attribute>
|
<attribute name="label" translatable="yes">Copy</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.paste</attribute>
|
<attribute name="action">win.paste</attribute>
|
||||||
<attribute name="label" translatable="1">Paste</attribute>
|
<attribute name="label" translatable="yes">Paste</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.delete</attribute>
|
<attribute name="action">win.delete</attribute>
|
||||||
<attribute name="label" translatable="1">Delete</attribute>
|
<attribute name="label" translatable="yes">Delete</attribute>
|
||||||
</item>
|
</item>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.add_object</attribute>
|
<attribute name="action">win.add_object</attribute>
|
||||||
<attribute name="label" translatable="1">Add object here</attribute>
|
<attribute name="label" translatable="yes">Add object here</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.add_object_toplevel</attribute>
|
<attribute name="action">win.add_object_toplevel</attribute>
|
||||||
<attribute name="label" translatable="1">Add object as toplevel</attribute>
|
<attribute name="label" translatable="yes">Add object as toplevel</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.clear</attribute>
|
<attribute name="action">win.clear</attribute>
|
||||||
<attribute name="label" translatable="1">Clear Properties</attribute>
|
<attribute name="label" translatable="yes">Clear Properties</attribute>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<attribute name="action">win.documentation</attribute>
|
<attribute name="action">win.documentation</attribute>
|
||||||
<attribute name="label" translatable="1">Read Documentation</attribute>
|
<attribute name="label" translatable="yes">Read Documentation</attribute>
|
||||||
</item>
|
</item>
|
||||||
</section>
|
</section>
|
||||||
<section id="main_section"/>
|
<section id="main_section"/>
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
from gi.repository import GObject, Gtk
|
from gi.repository import GObject, Gtk
|
||||||
|
from cambalache import utils, _
|
||||||
from .cmb_css import CmbCSS
|
from .cmb_css import CmbCSS
|
||||||
from . import utils
|
|
||||||
|
|
||||||
|
|
||||||
@Gtk.Template(resource_path="/ar/xjuan/Cambalache/cmb_css_editor.ui")
|
@Gtk.Template(resource_path="/ar/xjuan/Cambalache/cmb_css_editor.ui")
|
||||||
@ -34,6 +34,7 @@ class CmbCSSEditor(Gtk.Grid):
|
|||||||
priority = Gtk.Template.Child()
|
priority = Gtk.Template.Child()
|
||||||
is_global = Gtk.Template.Child()
|
is_global = Gtk.Template.Child()
|
||||||
|
|
||||||
|
ui_menu_button = Gtk.Template.Child()
|
||||||
ui_box = Gtk.Template.Child()
|
ui_box = Gtk.Template.Child()
|
||||||
infobar = Gtk.Template.Child()
|
infobar = Gtk.Template.Child()
|
||||||
save_button = Gtk.Template.Child()
|
save_button = Gtk.Template.Child()
|
||||||
@ -102,6 +103,7 @@ class CmbCSSEditor(Gtk.Grid):
|
|||||||
obj.connect("file-changed", self.__on_file_changed)
|
obj.connect("file-changed", self.__on_file_changed)
|
||||||
|
|
||||||
self.__update_provider_for()
|
self.__update_provider_for()
|
||||||
|
self.__update_ui_button_label()
|
||||||
|
|
||||||
@Gtk.Template.Callback("on_remove_button_clicked")
|
@Gtk.Template.Callback("on_remove_button_clicked")
|
||||||
def __on_remove_button_clicked(self, button):
|
def __on_remove_button_clicked(self, button):
|
||||||
@ -153,6 +155,27 @@ class CmbCSSEditor(Gtk.Grid):
|
|||||||
else:
|
else:
|
||||||
self.object.remove_ui(ui)
|
self.object.remove_ui(ui)
|
||||||
|
|
||||||
|
self.__update_ui_button_label()
|
||||||
|
|
||||||
|
def __update_ui_button_label(self):
|
||||||
|
n = 0
|
||||||
|
first_one = None
|
||||||
|
child = self.ui_box.get_first_child()
|
||||||
|
|
||||||
|
while child is not None:
|
||||||
|
if child.props.active:
|
||||||
|
n += 1
|
||||||
|
|
||||||
|
if first_one is None:
|
||||||
|
first_one = child
|
||||||
|
|
||||||
|
child = child.get_next_sibling()
|
||||||
|
|
||||||
|
if first_one is None:
|
||||||
|
self.ui_menu_button.props.label = _("None")
|
||||||
|
else:
|
||||||
|
self.ui_menu_button.props.label = f"{first_one.props.label} + {n - 1}" if n > 1 else first_one.props.label
|
||||||
|
|
||||||
def __on_ui_added_removed(self, project, ui):
|
def __on_ui_added_removed(self, project, ui):
|
||||||
self.__update_provider_for()
|
self.__update_provider_for()
|
||||||
|
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_css_editor.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
<template class="CmbCSSEditor" parent="GtkGrid">
|
<template class="CmbCSSEditor" parent="GtkGrid">
|
||||||
<property name="row-spacing">4</property>
|
|
||||||
<property name="column-spacing">3</property>
|
<property name="column-spacing">3</property>
|
||||||
|
<property name="row-spacing">4</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Filename:</property>
|
<property name="label" translatable="yes">Filename:</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">0</property>
|
<property name="row">0</property>
|
||||||
@ -17,7 +19,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Priority:</property>
|
<property name="label" translatable="yes">Priority:</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">1</property>
|
<property name="row">1</property>
|
||||||
@ -26,9 +28,9 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="tooltip-text" translatable="1">This provider will be used in all UI.</property>
|
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Global:</property>
|
<property name="label" translatable="yes">Global:</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">This provider will be used in all UI.</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">2</property>
|
<property name="row">2</property>
|
||||||
@ -37,16 +39,43 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="CmbEntry" id="filename">
|
<object class="CmbEntry" id="filename">
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can-focus">True</property>
|
<property name="can-focus">True</property>
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<property name="placeholder-text" translatable="1"><file name relative to project></property>
|
<property name="placeholder-text" translatable="yes"><file name relative to project></property>
|
||||||
|
<property name="visible">True</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">0</property>
|
<property name="row">0</property>
|
||||||
</layout>
|
</layout>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuButton" id="ui_menu_button">
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="popover">
|
||||||
|
<object class="GtkPopover">
|
||||||
|
<child>
|
||||||
|
<object class="GtkScrolledWindow">
|
||||||
|
<property name="hscrollbar-policy">never</property>
|
||||||
|
<property name="propagate-natural-height">True</property>
|
||||||
|
<property name="propagate-natural-width">True</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="ui_box">
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<layout>
|
||||||
|
<property name="column">1</property>
|
||||||
|
<property name="column-span">1</property>
|
||||||
|
<property name="row">3</property>
|
||||||
|
<property name="row-span">1</property>
|
||||||
|
</layout>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkSpinButton" id="priority">
|
<object class="GtkSpinButton" id="priority">
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
@ -67,30 +96,11 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="ui_box">
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
<layout>
|
|
||||||
<property name="column">1</property>
|
|
||||||
<property name="row">3</property>
|
|
||||||
</layout>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="tooltip-text" translatable="1">List of UI where this provider will be used</property>
|
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="valign">start</property>
|
<property name="label" translatable="yes">Provider for:</property>
|
||||||
<property name="label" translatable="1">Provider for:</property>
|
<property name="tooltip-text" translatable="yes">List of UI where this provider will be used</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">3</property>
|
<property name="row">3</property>
|
||||||
@ -103,11 +113,10 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="remove_button">
|
<object class="GtkButton" id="remove_button">
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<!-- <property name="receives-default">1</property> -->
|
|
||||||
<!-- <property name="tooltip-text" translatable="1">Remove CSS file from project</property> -->
|
<!-- <property name="tooltip-text" translatable="1">Remove CSS file from project</property> -->
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="valign">end</property>
|
<property name="valign">end</property>
|
||||||
<signal name="clicked" handler="on_remove_button_clicked" swapped="no"/>
|
<signal name="clicked" handler="on_remove_button_clicked"/>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">app-remove-symbolic</property>
|
<property name="icon-name">app-remove-symbolic</property>
|
||||||
@ -118,21 +127,21 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">center</property>
|
<property name="halign">center</property>
|
||||||
<property name="valign">center</property>
|
<property name="label" translatable="yes"><small>Note: CSS files need to be loaded at runtime</small></property>
|
||||||
<property name="label" translatable="1"><small>Note: CSS files need to be loaded at runtime</small></property>
|
|
||||||
<property name="use-markup">1</property>
|
<property name="use-markup">1</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="save_button">
|
<object class="GtkButton" id="save_button">
|
||||||
<property name="sensitive">0</property>
|
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="receives-default">1</property>
|
|
||||||
<property name="tooltip-text" translatable="1">Save CSS file</property>
|
|
||||||
<property name="hexpand">True</property>
|
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
|
<property name="sensitive">0</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Save CSS file</property>
|
||||||
<property name="valign">end</property>
|
<property name="valign">end</property>
|
||||||
<signal name="clicked" handler="on_save_button_clicked" swapped="no"/>
|
<signal name="clicked" handler="on_save_button_clicked"/>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">document-save-symbolic</property>
|
<property name="icon-name">document-save-symbolic</property>
|
||||||
@ -142,8 +151,8 @@
|
|||||||
</child>
|
</child>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">5</property>
|
|
||||||
<property name="column-span">2</property>
|
<property name="column-span">2</property>
|
||||||
|
<property name="row">5</property>
|
||||||
</layout>
|
</layout>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
@ -155,17 +164,17 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkInfoBar" id="infobar">
|
<object class="GtkInfoBar" id="infobar">
|
||||||
<property name="message-type">warning</property>
|
<property name="message-type">warning</property>
|
||||||
<property name="show-close-button">1</property>
|
|
||||||
<property name="revealed">0</property>
|
<property name="revealed">0</property>
|
||||||
<signal name="response" handler="on_infobar_response" swapped="no"/>
|
<property name="show-close-button">1</property>
|
||||||
|
<signal name="response" handler="on_infobar_response"/>
|
||||||
<child type="action">
|
<child type="action">
|
||||||
<object class="GtkButton" id="reload_button">
|
<object class="GtkButton" id="reload_button">
|
||||||
<property name="label" translatable="1">Reload</property>
|
<property name="focusable">1</property>
|
||||||
<property name="focusable">1</property>
|
<property name="halign">start</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="label" translatable="yes">Reload</property>
|
||||||
<property name="halign">start</property>
|
<property name="receives-default">1</property>
|
||||||
<property name="valign">end</property>
|
<property name="valign">end</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
@ -175,14 +184,12 @@
|
|||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="hexpand">1</property>
|
<property name="hexpand">1</property>
|
||||||
<property name="label" translatable="1">The file changed on disk.</property>
|
<property name="label" translatable="yes">The file changed on disk.</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<action-widgets>
|
<!-- Custom object fragments -->
|
||||||
<action-widget response="-5">reload_button</action-widget>
|
|
||||||
</action-widgets>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
@ -191,22 +198,21 @@
|
|||||||
<property name="vexpand">1</property>
|
<property name="vexpand">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="CmbSourceView" id="view">
|
<object class="CmbSourceView" id="view">
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can-focus">True</property>
|
<property name="can-focus">True</property>
|
||||||
<property name="lang">css</property>
|
<property name="lang">css</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
<child type="label_item">
|
<property name="vexpand">True</property>
|
||||||
<placeholder/>
|
<property name="vexpand-set">True</property>
|
||||||
</child>
|
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">4</property>
|
|
||||||
<property name="column-span">2</property>
|
<property name="column-span">2</property>
|
||||||
|
<property name="row">4</property>
|
||||||
</layout>
|
</layout>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
@ -473,6 +473,9 @@ class CmbDB(GObject.GObject):
|
|||||||
if version < (0, 13, 1):
|
if version < (0, 13, 1):
|
||||||
data = cmb_db_migration.ensure_columns_for_0_13_1(table, data)
|
data = cmb_db_migration.ensure_columns_for_0_13_1(table, data)
|
||||||
|
|
||||||
|
if version < (0, 17, 3):
|
||||||
|
data = cmb_db_migration.ensure_columns_for_0_17_3(table, data)
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def __migrate_table_data(self, c, version, table, data):
|
def __migrate_table_data(self, c, version, table, data):
|
||||||
@ -844,14 +847,30 @@ class CmbDB(GObject.GObject):
|
|||||||
knowns = []
|
knowns = []
|
||||||
retval = []
|
retval = []
|
||||||
|
|
||||||
|
def get_key_val(node, attr):
|
||||||
|
tokens = attr.split(":")
|
||||||
|
key = tokens[0]
|
||||||
|
val = node.get(key, None)
|
||||||
|
|
||||||
|
if len(tokens) > 1:
|
||||||
|
t = tokens[1]
|
||||||
|
if t == "bool":
|
||||||
|
return (key, val.lower() in {"1", "t", "y", "true", "yes"} if val else False)
|
||||||
|
elif t == "int":
|
||||||
|
return (key, int(val))
|
||||||
|
|
||||||
|
return (key, val)
|
||||||
|
|
||||||
for attr in args:
|
for attr in args:
|
||||||
if isinstance(attr, list):
|
if isinstance(attr, list):
|
||||||
for opt in attr:
|
for opt in attr:
|
||||||
retval.append(node.get(opt, None))
|
key, val = get_key_val(node, opt)
|
||||||
knowns.append(opt)
|
retval.append(val)
|
||||||
|
knowns.append(key)
|
||||||
elif attr in keys:
|
elif attr in keys:
|
||||||
retval.append(node.get(attr))
|
key, val = get_key_val(node, attr)
|
||||||
knowns.append(attr)
|
retval.append(val)
|
||||||
|
knowns.append(key)
|
||||||
else:
|
else:
|
||||||
self.__collect_error("missing-attr", node, attr)
|
self.__collect_error("missing-attr", node, attr)
|
||||||
|
|
||||||
@ -865,21 +884,46 @@ class CmbDB(GObject.GObject):
|
|||||||
def __get_property_info(self, info, property_id):
|
def __get_property_info(self, info, property_id):
|
||||||
pinfo = None
|
pinfo = None
|
||||||
|
|
||||||
|
debug = info.type_id == "CmbFragmentEditor"
|
||||||
|
|
||||||
|
if debug:
|
||||||
|
print(info.properties, info.interfaces, property_id)
|
||||||
|
|
||||||
# Find owner type for property
|
# Find owner type for property
|
||||||
if property_id in info.properties:
|
if property_id in info.properties:
|
||||||
pinfo = info.properties[property_id]
|
pinfo = info.properties[property_id]
|
||||||
else:
|
else:
|
||||||
|
# Search in interfaces properties
|
||||||
|
for iface in info.interfaces:
|
||||||
|
iface_info = self.type_info[iface]
|
||||||
|
|
||||||
|
if property_id in iface_info.properties:
|
||||||
|
pinfo = iface_info.properties[property_id]
|
||||||
|
break
|
||||||
|
|
||||||
for parent in info.hierarchy:
|
for parent in info.hierarchy:
|
||||||
type_info = self.type_info[parent]
|
type_info = self.type_info[parent]
|
||||||
|
|
||||||
|
# Search in parent properties
|
||||||
if property_id in type_info.properties:
|
if property_id in type_info.properties:
|
||||||
pinfo = type_info.properties[property_id]
|
pinfo = type_info.properties[property_id]
|
||||||
|
|
||||||
|
# Search in parent interfaces properties
|
||||||
|
for iface in type_info.interfaces:
|
||||||
|
iface_info = self.type_info[iface]
|
||||||
|
|
||||||
|
if property_id in iface_info.properties:
|
||||||
|
pinfo = iface_info.properties[property_id]
|
||||||
|
break
|
||||||
|
|
||||||
|
if pinfo is not None:
|
||||||
break
|
break
|
||||||
|
|
||||||
return pinfo
|
return pinfo
|
||||||
|
|
||||||
def __import_property(self, c, info, ui_id, object_id, prop, object_id_map=None):
|
def __import_property(self, c, info, ui_id, object_id, prop, object_id_map=None):
|
||||||
name, translatable, context, comments, bind_source_id, bind_property_id, bind_flags = self.__node_get(
|
name, translatable, context, comments, bind_source_id, bind_property_id, bind_flags = self.__node_get(
|
||||||
prop, "name", ["translatable", "context", "comments", "bind-source", "bind-property", "bind-flags"]
|
prop, "name", ["translatable:bool", "context", "comments", "bind-source", "bind-property", "bind-flags"]
|
||||||
)
|
)
|
||||||
|
|
||||||
property_id = name.replace("_", "-")
|
property_id = name.replace("_", "-")
|
||||||
@ -899,15 +943,14 @@ class CmbDB(GObject.GObject):
|
|||||||
inline_object_id = None
|
inline_object_id = None
|
||||||
|
|
||||||
# GtkBuilder in Gtk4 supports defining an object in a property
|
# GtkBuilder in Gtk4 supports defining an object in a property
|
||||||
if self.target_tk == "gtk-4.0" and pinfo.is_object:
|
obj_node = prop.find("object")
|
||||||
|
if self.target_tk == "gtk-4.0" and pinfo.is_object and obj_node is not None:
|
||||||
if pinfo.disable_inline_object:
|
if pinfo.disable_inline_object:
|
||||||
self.__collect_error("not-inline-object", prop, f"{info.type_id}:{property_id}")
|
self.__collect_error("not-inline-object", prop, f"{info.type_id}:{property_id}")
|
||||||
return
|
return
|
||||||
|
|
||||||
obj_node = prop.find("object")
|
inline_object_id = self.__import_object(ui_id, obj_node, object_id)
|
||||||
if obj_node is not None:
|
value = None
|
||||||
inline_object_id = self.__import_object(ui_id, obj_node, object_id)
|
|
||||||
value = None
|
|
||||||
|
|
||||||
# Need to remap object ids on paste
|
# Need to remap object ids on paste
|
||||||
if object_id_map and pinfo.is_object:
|
if object_id_map and pinfo.is_object:
|
||||||
@ -949,7 +992,7 @@ class CmbDB(GObject.GObject):
|
|||||||
user_data,
|
user_data,
|
||||||
swap,
|
swap,
|
||||||
after,
|
after,
|
||||||
) = self.__node_get(signal, "name", ["handler", "object", "swapped", "after"])
|
) = self.__node_get(signal, "name", ["handler", "object", "swapped:bool", "after:bool"])
|
||||||
|
|
||||||
tokens = name.split("::")
|
tokens = name.split("::")
|
||||||
|
|
||||||
@ -1000,6 +1043,8 @@ class CmbDB(GObject.GObject):
|
|||||||
object_id = None
|
object_id = None
|
||||||
packing = None
|
packing = None
|
||||||
|
|
||||||
|
custom_fragments = []
|
||||||
|
|
||||||
for node in child.iterchildren():
|
for node in child.iterchildren():
|
||||||
if node.tag == "object":
|
if node.tag == "object":
|
||||||
object_id = self.__import_object(ui_id, node, parent_id, internal, ctype, object_id_map=object_id_map)
|
object_id = self.__import_object(ui_id, node, parent_id, internal, ctype, object_id_map=object_id_map)
|
||||||
@ -1009,12 +1054,18 @@ class CmbDB(GObject.GObject):
|
|||||||
elif node.tag == "placeholder":
|
elif node.tag == "placeholder":
|
||||||
# Ignore placeholder tags
|
# Ignore placeholder tags
|
||||||
pass
|
pass
|
||||||
|
elif node.tag is etree.Comment:
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
self.__unknown_tag(node, ctype, node.tag)
|
custom_fragments.append(node)
|
||||||
|
|
||||||
if packing is not None and object_id:
|
if packing is not None and object_id:
|
||||||
self.__import_layout_properties(c, info, ui_id, parent_id, object_id, packing)
|
self.__import_layout_properties(c, info, ui_id, parent_id, object_id, packing)
|
||||||
|
|
||||||
|
fragment = self.__custom_fragments_tostring(custom_fragments)
|
||||||
|
if fragment and object_id is not None:
|
||||||
|
c.execute("UPDATE object SET custom_child_fragment=? WHERE ui_id=? AND object_id=?", (fragment, ui_id, object_id))
|
||||||
|
|
||||||
def __get_layout_property_owner(self, type_id, property_id):
|
def __get_layout_property_owner(self, type_id, property_id):
|
||||||
info = self.type_info.get(type_id, None)
|
info = self.type_info.get(type_id, None)
|
||||||
|
|
||||||
@ -1044,7 +1095,7 @@ class CmbDB(GObject.GObject):
|
|||||||
self.__unknown_tag(prop, parent_id, prop.tag)
|
self.__unknown_tag(prop, parent_id, prop.tag)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
name, translatable, context, comments = self.__node_get(prop, "name", ["translatable", "context", "comments"])
|
name, translatable, context, comments = self.__node_get(prop, "name", ["translatable:bool", "context", "comments"])
|
||||||
property_id = name.replace("_", "-")
|
property_id = name.replace("_", "-")
|
||||||
comment = self.__node_get_comment(prop)
|
comment = self.__node_get_comment(prop)
|
||||||
owner_id = self.__get_layout_property_owner(parent_type[0], property_id)
|
owner_id = self.__get_layout_property_owner(parent_type[0], property_id)
|
||||||
@ -1139,7 +1190,7 @@ class CmbDB(GObject.GObject):
|
|||||||
comment = self.__node_get_comment(ntag)
|
comment = self.__node_get_comment(ntag)
|
||||||
|
|
||||||
if taginfo.translatable:
|
if taginfo.translatable:
|
||||||
translatable, context, comments = self.__node_get(ntag, ["translatable", "context", "comments"])
|
translatable, context, comments = self.__node_get(ntag, ["translatable:bool", "context", "comments"])
|
||||||
else:
|
else:
|
||||||
translatable, context, comments = (None, None, None)
|
translatable, context, comments = (None, None, None)
|
||||||
|
|
||||||
@ -1303,7 +1354,6 @@ class CmbDB(GObject.GObject):
|
|||||||
self.__import_object_data(ui_id, object_id, taginfo.owner_id, taginfo, child, None)
|
self.__import_object_data(ui_id, object_id, taginfo.owner_id, taginfo, child, None)
|
||||||
else:
|
else:
|
||||||
custom_fragments.append(child)
|
custom_fragments.append(child)
|
||||||
# self.__unknown_tag(child, klass, child.tag)
|
|
||||||
|
|
||||||
fragment = self.__custom_fragments_tostring(custom_fragments)
|
fragment = self.__custom_fragments_tostring(custom_fragments)
|
||||||
if fragment:
|
if fragment:
|
||||||
@ -1573,12 +1623,13 @@ class CmbDB(GObject.GObject):
|
|||||||
|
|
||||||
if type_id == GMENU_TYPE:
|
if type_id == GMENU_TYPE:
|
||||||
obj = E.menu()
|
obj = E.menu()
|
||||||
# Only menu has id
|
|
||||||
self.__node_set(obj, "id", f"__cmb__{ui_id}.{object_id}" if merengue else name)
|
self.__node_set(obj, "id", f"__cmb__{ui_id}.{object_id}" if merengue else name)
|
||||||
elif type_id == GMENU_SECTION_TYPE:
|
elif type_id == GMENU_SECTION_TYPE:
|
||||||
obj = E.section()
|
obj = E.section()
|
||||||
|
self.__node_set(obj, "id", f"__cmb__{ui_id}.{object_id}" if merengue else name)
|
||||||
elif type_id == GMENU_SUBMENU_TYPE:
|
elif type_id == GMENU_SUBMENU_TYPE:
|
||||||
obj = E.submenu()
|
obj = E.submenu()
|
||||||
|
self.__node_set(obj, "id", f"__cmb__{ui_id}.{object_id}" if merengue else name)
|
||||||
elif type_id == GMENU_ITEM_TYPE:
|
elif type_id == GMENU_ITEM_TYPE:
|
||||||
obj = E.item()
|
obj = E.item()
|
||||||
else:
|
else:
|
||||||
@ -1764,7 +1815,6 @@ class CmbDB(GObject.GObject):
|
|||||||
# From now own all output should be without an ID
|
# From now own all output should be without an ID
|
||||||
# because we do not want so select internal widget from the template
|
# because we do not want so select internal widget from the template
|
||||||
ignore_id = True
|
ignore_id = True
|
||||||
self.__node_set(obj, "id", name)
|
|
||||||
elif not ignore_id:
|
elif not ignore_id:
|
||||||
self.__node_set(obj, "id", f"__cmb__{ui_id}.{object_id}")
|
self.__node_set(obj, "id", f"__cmb__{ui_id}.{object_id}")
|
||||||
else:
|
else:
|
||||||
@ -1918,7 +1968,7 @@ class CmbDB(GObject.GObject):
|
|||||||
# Children
|
# Children
|
||||||
for row in c.execute(
|
for row in c.execute(
|
||||||
"""
|
"""
|
||||||
SELECT object_id, internal, type, comment, position
|
SELECT object_id, internal, type, comment, position, custom_child_fragment
|
||||||
FROM object
|
FROM object
|
||||||
WHERE ui_id=? AND parent_id=? AND
|
WHERE ui_id=? AND parent_id=? AND
|
||||||
object_id NOT IN (SELECT inline_object_id FROM object_property
|
object_id NOT IN (SELECT inline_object_id FROM object_property
|
||||||
@ -1927,7 +1977,7 @@ class CmbDB(GObject.GObject):
|
|||||||
""",
|
""",
|
||||||
(ui_id, object_id, ui_id, object_id),
|
(ui_id, object_id, ui_id, object_id),
|
||||||
):
|
):
|
||||||
child_id, internal, ctype, comment, position = row
|
child_id, internal, ctype, comment, position, custom_child_fragment = row
|
||||||
|
|
||||||
if merengue:
|
if merengue:
|
||||||
position = position if position is not None else 0
|
position = position if position is not None else 0
|
||||||
@ -1948,35 +1998,37 @@ class CmbDB(GObject.GObject):
|
|||||||
|
|
||||||
obj.append(child)
|
obj.append(child)
|
||||||
|
|
||||||
if linfo is None:
|
if linfo is not None:
|
||||||
continue
|
# Packing / Layout
|
||||||
|
layout = E("packing" if self.target_tk == "gtk+-3.0" else "layout")
|
||||||
|
for prop in cc.execute(
|
||||||
|
f"""
|
||||||
|
SELECT value, property_id, comment
|
||||||
|
FROM object_layout_property
|
||||||
|
WHERE ui_id=? AND object_id=? AND child_id=?
|
||||||
|
UNION
|
||||||
|
SELECT default_value AS value, property_id, null
|
||||||
|
FROM property
|
||||||
|
WHERE save_always=1 AND owner_id IN ({placeholders}) AND property_id NOT IN
|
||||||
|
(SELECT property_id FROM object_layout_property WHERE ui_id=? AND object_id=? AND child_id=?)
|
||||||
|
ORDER BY property_id
|
||||||
|
""",
|
||||||
|
(ui_id, object_id, child_id) + tuple(hierarchy) + (ui_id, object_id, child_id),
|
||||||
|
):
|
||||||
|
value, property_id, comment = prop
|
||||||
|
node = E.property(value, name=property_id)
|
||||||
|
layout.append(node)
|
||||||
|
self.__node_add_comment(node, comment)
|
||||||
|
|
||||||
# Packing / Layout
|
if len(layout) > 0:
|
||||||
layout = E("packing" if self.target_tk == "gtk+-3.0" else "layout")
|
if self.target_tk == "gtk+-3.0":
|
||||||
for prop in cc.execute(
|
child.append(layout)
|
||||||
f"""
|
else:
|
||||||
SELECT value, property_id, comment
|
child_obj.append(layout)
|
||||||
FROM object_layout_property
|
|
||||||
WHERE ui_id=? AND object_id=? AND child_id=?
|
|
||||||
UNION
|
|
||||||
SELECT default_value AS value, property_id, null
|
|
||||||
FROM property
|
|
||||||
WHERE save_always=1 AND owner_id IN ({placeholders}) AND property_id NOT IN
|
|
||||||
(SELECT property_id FROM object_layout_property WHERE ui_id=? AND object_id=? AND child_id=?)
|
|
||||||
ORDER BY property_id
|
|
||||||
""",
|
|
||||||
(ui_id, object_id, child_id) + tuple(hierarchy) + (ui_id, object_id, child_id),
|
|
||||||
):
|
|
||||||
value, property_id, comment = prop
|
|
||||||
node = E.property(value, name=property_id)
|
|
||||||
layout.append(node)
|
|
||||||
self.__node_add_comment(node, comment)
|
|
||||||
|
|
||||||
if len(layout) > 0:
|
if custom_child_fragment is not None:
|
||||||
if self.target_tk == "gtk+-3.0":
|
# Dump custom child fragments
|
||||||
child.append(layout)
|
self.__export_custom_fragment(child, custom_child_fragment)
|
||||||
else:
|
|
||||||
child_obj.append(layout)
|
|
||||||
|
|
||||||
# Custom buildable tags
|
# Custom buildable tags
|
||||||
# Iterate over all hierarchy extra data
|
# Iterate over all hierarchy extra data
|
||||||
@ -2002,7 +2054,7 @@ class CmbDB(GObject.GObject):
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
node.append(etree.Comment(" Custom fragments "))
|
node.append(etree.Comment(f" Custom {node.tag} fragments "))
|
||||||
for child in root:
|
for child in root:
|
||||||
node.append(child)
|
node.append(child)
|
||||||
|
|
||||||
|
@ -102,3 +102,11 @@ def ensure_columns_for_0_13_1(table, data):
|
|||||||
return [row + (None, None, None) for row in data]
|
return [row + (None, None, None) for row in data]
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_columns_for_0_17_3(table, data):
|
||||||
|
if table == "object":
|
||||||
|
# Append custom_child_fragment column
|
||||||
|
return [row + (None,) for row in data]
|
||||||
|
|
||||||
|
return data
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
from gi.repository import GObject, Gtk
|
from gi.repository import GObject, Gtk
|
||||||
|
from .cmb_object import CmbObject
|
||||||
|
|
||||||
|
|
||||||
@Gtk.Template(resource_path="/ar/xjuan/Cambalache/cmb_fragment_editor.ui")
|
@Gtk.Template(resource_path="/ar/xjuan/Cambalache/cmb_fragment_editor.ui")
|
||||||
@ -29,10 +30,12 @@ class CmbFragmentEditor(Gtk.Box):
|
|||||||
__gtype_name__ = "CmbFragmentEditor"
|
__gtype_name__ = "CmbFragmentEditor"
|
||||||
|
|
||||||
view = Gtk.Template.Child()
|
view = Gtk.Template.Child()
|
||||||
|
child_view = Gtk.Template.Child()
|
||||||
|
switcher = Gtk.Template.Child()
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
self._object = None
|
self._object = None
|
||||||
self.__binding = None
|
self.__bindings = []
|
||||||
|
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
@ -45,9 +48,10 @@ class CmbFragmentEditor(Gtk.Box):
|
|||||||
if obj == self._object:
|
if obj == self._object:
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.__binding:
|
for binding in self.__bindings:
|
||||||
self.__binding.unbind()
|
binding.unbind()
|
||||||
self.__binding = None
|
|
||||||
|
self.__bindings = []
|
||||||
|
|
||||||
self._object = obj
|
self._object = obj
|
||||||
|
|
||||||
@ -61,7 +65,20 @@ class CmbFragmentEditor(Gtk.Box):
|
|||||||
"text",
|
"text",
|
||||||
GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL,
|
GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL,
|
||||||
)
|
)
|
||||||
self.__binding = binding
|
self.__bindings.append(binding)
|
||||||
|
|
||||||
|
# Only objects have child fragments
|
||||||
|
if type(obj) == CmbObject and obj.parent is not None:
|
||||||
|
binding = GObject.Object.bind_property(
|
||||||
|
obj,
|
||||||
|
"custom-child-fragment",
|
||||||
|
self.child_view,
|
||||||
|
"text",
|
||||||
|
GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL,
|
||||||
|
)
|
||||||
|
self.__bindings.append(binding)
|
||||||
|
|
||||||
|
self.switcher.set_visible(True)
|
||||||
|
|
||||||
|
|
||||||
Gtk.WidgetClass.set_css_name(CmbFragmentEditor, "CmbFragmentEditor")
|
Gtk.WidgetClass.set_css_name(CmbFragmentEditor, "CmbFragmentEditor")
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_fragment_editor.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
<template class="CmbFragmentEditor" parent="GtkBox">
|
<template class="CmbFragmentEditor" parent="GtkBox">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
@ -7,21 +9,52 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Extra fragments:</property>
|
<property name="label" translatable="yes">Extra fragments:</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkStack" id="fragment_stack">
|
||||||
<property name="vexpand">1</property>
|
<property name="vexpand">True</property>
|
||||||
<property name="focusable">1</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="CmbSourceView" id="view">
|
<object class="GtkStackPage">
|
||||||
<property name="visible">True</property>
|
<property name="child">
|
||||||
<property name="can-focus">True</property>
|
<object class="GtkScrolledWindow">
|
||||||
<property name="lang">xml</property>
|
<child>
|
||||||
|
<object class="CmbSourceView" id="view">
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="lang">xml</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<property name="name">fragment</property>
|
||||||
|
<property name="title" translatable="yes">Fragment</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackPage">
|
||||||
|
<property name="child">
|
||||||
|
<object class="GtkScrolledWindow">
|
||||||
|
<child>
|
||||||
|
<object class="CmbSourceView" id="child_view">
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="lang">xml</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<property name="name">child_fragment</property>
|
||||||
|
<property name="title" translatable="yes">Child Fragment</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackSwitcher" id="switcher">
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="stack">fragment_stack</property>
|
||||||
|
<property name="visible">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</template>
|
</template>
|
||||||
</interface>
|
</interface>
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_object_data_editor.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
<template class="CmbObjectDataEditor" parent="GtkBox">
|
<template class="CmbObjectDataEditor" parent="GtkBox">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
@ -8,28 +10,27 @@
|
|||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
<property name="spacing">4</property>
|
<property name="spacing">4</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="label">
|
<object class="GtkLabel" id="label"/>
|
||||||
</object>
|
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="top_box">
|
<object class="GtkBox" id="top_box">
|
||||||
<property name="hexpand">True</property>
|
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="remove_button">
|
<object class="GtkButton" id="remove_button">
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
<style>
|
<signal name="clicked" handler="on_remove_clicked"/>
|
||||||
<class name="borderless"/>
|
|
||||||
</style>
|
|
||||||
<signal name="clicked" handler="on_remove_clicked" swapped="no"/>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">user-trash-symbolic</property>
|
<property name="icon-name">user-trash-symbolic</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="borderless"/>
|
||||||
|
</style>
|
||||||
<style>
|
<style>
|
||||||
<class name="hidden"/>
|
<class name="hidden"/>
|
||||||
</style>
|
</style>
|
||||||
@ -37,8 +38,8 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkMenuButton" id="add_child">
|
<object class="GtkMenuButton" id="add_child">
|
||||||
<property name="visible">0</property>
|
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
|
<property name="visible">0</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">list-add-symbolic</property>
|
<property name="icon-name">list-add-symbolic</property>
|
||||||
@ -48,33 +49,27 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="add_only_child">
|
<object class="GtkButton" id="add_only_child">
|
||||||
<property name="visible">0</property>
|
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
<signal name="clicked" handler="on_add_only_child_clicked" swapped="no"/>
|
<property name="visible">0</property>
|
||||||
<style>
|
<signal name="clicked" handler="on_add_only_child_clicked"/>
|
||||||
<class name="borderless"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">list-add-symbolic</property>
|
<property name="icon-name">list-add-symbolic</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="borderless"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkGrid" id="grid">
|
<object class="GtkGrid" id="grid">
|
||||||
<property name="vexpand">1</property>
|
|
||||||
<property name="row-spacing">4</property>
|
|
||||||
<property name="column-spacing">4</property>
|
<property name="column-spacing">4</property>
|
||||||
<child>
|
<property name="row-spacing">4</property>
|
||||||
<placeholder/>
|
<property name="vexpand">1</property>
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<placeholder/>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</template>
|
</template>
|
||||||
|
@ -976,7 +976,21 @@ class CmbBaseObject(CmbBase):
|
|||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_row(cls, project, ui_id, object_id, type_id, name, parent_id, internal, type, comment, position, custom_fragment):
|
def from_row(
|
||||||
|
cls,
|
||||||
|
project,
|
||||||
|
ui_id,
|
||||||
|
object_id,
|
||||||
|
type_id,
|
||||||
|
name,
|
||||||
|
parent_id,
|
||||||
|
internal,
|
||||||
|
type,
|
||||||
|
comment,
|
||||||
|
position,
|
||||||
|
custom_fragment,
|
||||||
|
custom_child_fragment,
|
||||||
|
):
|
||||||
return cls(project=project, ui_id=ui_id, object_id=object_id)
|
return cls(project=project, ui_id=ui_id, object_id=object_id)
|
||||||
|
|
||||||
@GObject.Property(type=str)
|
@GObject.Property(type=str)
|
||||||
@ -1147,6 +1161,27 @@ class CmbBaseObject(CmbBase):
|
|||||||
value,
|
value,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@GObject.Property(type=str)
|
||||||
|
def custom_child_fragment(self):
|
||||||
|
return self.db_get(
|
||||||
|
"SELECT custom_child_fragment FROM object WHERE (ui_id, object_id) IS (?, ?);",
|
||||||
|
(
|
||||||
|
self.ui_id,
|
||||||
|
self.object_id,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
@custom_child_fragment.setter
|
||||||
|
def _set_custom_child_fragment(self, value):
|
||||||
|
self.db_set(
|
||||||
|
"UPDATE object SET custom_child_fragment=? WHERE (ui_id, object_id) IS (?, ?);",
|
||||||
|
(
|
||||||
|
self.ui_id,
|
||||||
|
self.object_id,
|
||||||
|
),
|
||||||
|
value,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class CmbBaseObjectData(CmbBase):
|
class CmbBaseObjectData(CmbBase):
|
||||||
__gtype_name__ = "CmbBaseObjectData"
|
__gtype_name__ = "CmbBaseObjectData"
|
||||||
|
@ -31,6 +31,7 @@ from lxml import etree
|
|||||||
from .cmb_db import CmbDB
|
from .cmb_db import CmbDB
|
||||||
from .cmb_ui import CmbUI
|
from .cmb_ui import CmbUI
|
||||||
from .cmb_css import CmbCSS
|
from .cmb_css import CmbCSS
|
||||||
|
from .cmb_base import CmbBase
|
||||||
from .cmb_object import CmbObject
|
from .cmb_object import CmbObject
|
||||||
from .cmb_object_data import CmbObjectData
|
from .cmb_object_data import CmbObjectData
|
||||||
from .cmb_property import CmbProperty
|
from .cmb_property import CmbProperty
|
||||||
@ -119,7 +120,7 @@ class CmbProject(Gtk.TreeStore):
|
|||||||
raise Exception("Either target_tk or filename are required")
|
raise Exception("Either target_tk or filename are required")
|
||||||
|
|
||||||
# Use a TreeStore to hold object tree instead of using SQL for every TreeStore call
|
# Use a TreeStore to hold object tree instead of using SQL for every TreeStore call
|
||||||
self.set_column_types([GObject.GObject])
|
self.set_column_types([CmbBase])
|
||||||
|
|
||||||
# DataModel is only used internally
|
# DataModel is only used internally
|
||||||
self.db = CmbDB(target_tk=self.target_tk)
|
self.db = CmbDB(target_tk=self.target_tk)
|
||||||
@ -586,6 +587,7 @@ class CmbProject(Gtk.TreeStore):
|
|||||||
comment=None,
|
comment=None,
|
||||||
position=0,
|
position=0,
|
||||||
custom_fragment=None,
|
custom_fragment=None,
|
||||||
|
custom_child_fragment=None,
|
||||||
):
|
):
|
||||||
obj = CmbObject(project=self, ui_id=ui_id, object_id=object_id, info=self.type_info[obj_type])
|
obj = CmbObject(project=self, ui_id=ui_id, object_id=object_id, info=self.type_info[obj_type])
|
||||||
|
|
||||||
@ -1452,8 +1454,9 @@ class CmbProject(Gtk.TreeStore):
|
|||||||
iter = self.iter_next(iter)
|
iter = self.iter_next(iter)
|
||||||
|
|
||||||
# GtkTreeDragDest Iface
|
# GtkTreeDragDest Iface
|
||||||
def do_drag_data_received(self, path, selection_data):
|
def do_drag_data_received(self, dest, value):
|
||||||
valid, _model, drag_path = Gtk.tree_get_row_drag_data(selection_data)
|
value = GObject.Value(Gtk.TreeRowData, value)
|
||||||
|
valid, _model, drag_path = Gtk.tree_get_row_drag_data(value)
|
||||||
|
|
||||||
if not valid:
|
if not valid:
|
||||||
return False
|
return False
|
||||||
@ -1463,12 +1466,12 @@ class CmbProject(Gtk.TreeStore):
|
|||||||
|
|
||||||
# Move to new place
|
# Move to new place
|
||||||
try:
|
try:
|
||||||
iter = self.get_iter(path)
|
iter = self.get_iter(dest)
|
||||||
self.move_before(drag_iter, iter)
|
drag_iter = self.insert_before(None, iter, [self[drag_iter][0]])
|
||||||
except ValueError:
|
except ValueError:
|
||||||
path.prev()
|
dest.prev()
|
||||||
iter = self.get_iter(path)
|
iter = self.get_iter(dest)
|
||||||
self.move_after(drag_iter, iter)
|
drag_iter = self.insert_before(None, iter, [self[drag_iter][0]])
|
||||||
|
|
||||||
position_path = self.get_path(drag_iter)
|
position_path = self.get_path(drag_iter)
|
||||||
|
|
||||||
@ -1482,15 +1485,17 @@ class CmbProject(Gtk.TreeStore):
|
|||||||
drag_obj.parent.reorder_child(drag_obj, indices[-1])
|
drag_obj.parent.reorder_child(drag_obj, indices[-1])
|
||||||
self.__reordering_children = False
|
self.__reordering_children = False
|
||||||
|
|
||||||
# Manually emmit signal since we disable it by setting __reordering_children flag
|
# Manually emit signal since we disable it by setting __reordering_children flag
|
||||||
self.emit("object-changed", drag_obj, "position")
|
self.emit("object-changed", drag_obj, "position")
|
||||||
|
|
||||||
|
self.set_selection([])
|
||||||
self.set_selection([drag_obj])
|
self.set_selection([drag_obj])
|
||||||
|
|
||||||
return False
|
return True
|
||||||
|
|
||||||
def do_row_drop_possible(self, path, selection_data):
|
def do_row_drop_possible(self, path, value):
|
||||||
valid, _model, drag_path = Gtk.tree_get_row_drag_data(selection_data)
|
value = GObject.Value(Gtk.TreeRowData, value)
|
||||||
|
valid, _model, drag_path = Gtk.tree_get_row_drag_data(value)
|
||||||
|
|
||||||
if not valid:
|
if not valid:
|
||||||
return False
|
return False
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_signal_editor.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
<object class="GtkEntryCompletion" id="handler_entrycompletion">
|
<object class="GtkEntryCompletion" id="handler_entrycompletion">
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCellRendererText"/>
|
<object class="GtkCellRendererText"/>
|
||||||
|
<!-- Custom child fragments -->
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="text">0</attribute>
|
<attribute name="text">0</attribute>
|
||||||
</attributes>
|
</attributes>
|
||||||
@ -28,8 +31,6 @@
|
|||||||
<property name="spacing">4</property>
|
<property name="spacing">4</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkScrolledWindow">
|
||||||
<property name="vexpand">1</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkTreeView" id="treeview">
|
<object class="GtkTreeView" id="treeview">
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
@ -40,13 +41,14 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeViewColumn" id="signal_id_column">
|
<object class="GtkTreeViewColumn" id="signal_id_column">
|
||||||
<property name="resizable">1</property>
|
|
||||||
<property name="min-width">64</property>
|
<property name="min-width">64</property>
|
||||||
<property name="title" translatable="1">Signal</property>
|
<property name="resizable">1</property>
|
||||||
|
<property name="title" translatable="yes">Signal</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCellRendererText" id="signal_id">
|
<object class="GtkCellRendererText" id="signal_id">
|
||||||
<signal name="edited" handler="on_detail_edited" swapped="no"/>
|
<signal name="edited" handler="on_detail_edited"/>
|
||||||
</object>
|
</object>
|
||||||
|
<!-- Custom child fragments -->
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="text">2</attribute>
|
<attribute name="text">2</attribute>
|
||||||
</attributes>
|
</attributes>
|
||||||
@ -55,16 +57,17 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeViewColumn" id="handler_column">
|
<object class="GtkTreeViewColumn" id="handler_column">
|
||||||
<property name="resizable">1</property>
|
|
||||||
<property name="min-width">64</property>
|
|
||||||
<property name="title" translatable="1">Handler</property>
|
|
||||||
<property name="expand">1</property>
|
<property name="expand">1</property>
|
||||||
|
<property name="min-width">64</property>
|
||||||
|
<property name="resizable">1</property>
|
||||||
|
<property name="title" translatable="yes">Handler</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCellRendererText" id="handler">
|
<object class="GtkCellRendererText" id="handler">
|
||||||
<property name="editable">1</property>
|
<property name="editable">1</property>
|
||||||
<property name="placeholder-text"><Enter callback></property>
|
<property name="placeholder-text"><Enter callback></property>
|
||||||
<signal name="edited" handler="on_handler_edited" swapped="no"/>
|
<signal name="edited" handler="on_handler_edited"/>
|
||||||
</object>
|
</object>
|
||||||
|
<!-- Custom child fragments -->
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="text">4</attribute>
|
<attribute name="text">4</attribute>
|
||||||
</attributes>
|
</attributes>
|
||||||
@ -73,13 +76,14 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeViewColumn" id="user_data_column">
|
<object class="GtkTreeViewColumn" id="user_data_column">
|
||||||
<property name="title" translatable="1">Data</property>
|
<property name="title" translatable="yes">Data</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCellRendererText" id="user_data">
|
<object class="GtkCellRendererText" id="user_data">
|
||||||
<property name="editable">1</property>
|
<property name="editable">1</property>
|
||||||
<property name="placeholder-text"><object></property>
|
<property name="placeholder-text"><object></property>
|
||||||
<signal name="edited" handler="on_user_data_edited" swapped="no"/>
|
<signal name="edited" handler="on_user_data_edited"/>
|
||||||
</object>
|
</object>
|
||||||
|
<!-- Custom child fragments -->
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="text">5</attribute>
|
<attribute name="text">5</attribute>
|
||||||
</attributes>
|
</attributes>
|
||||||
@ -88,11 +92,12 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeViewColumn" id="swap_column">
|
<object class="GtkTreeViewColumn" id="swap_column">
|
||||||
<property name="title" translatable="1">Swap</property>
|
<property name="title" translatable="yes">Swap</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCellRendererToggle" id="swap">
|
<object class="GtkCellRendererToggle" id="swap">
|
||||||
<signal name="toggled" handler="on_swap_toggled" swapped="no"/>
|
<signal name="toggled" handler="on_swap_toggled"/>
|
||||||
</object>
|
</object>
|
||||||
|
<!-- Custom child fragments -->
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="active">6</attribute>
|
<attribute name="active">6</attribute>
|
||||||
</attributes>
|
</attributes>
|
||||||
@ -101,11 +106,12 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkTreeViewColumn" id="after_column">
|
<object class="GtkTreeViewColumn" id="after_column">
|
||||||
<property name="title" translatable="1">After</property>
|
<property name="title" translatable="yes">After</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCellRendererToggle" id="after">
|
<object class="GtkCellRendererToggle" id="after">
|
||||||
<signal name="toggled" handler="on_after_toggled" swapped="no"/>
|
<signal name="toggled" handler="on_after_toggled"/>
|
||||||
</object>
|
</object>
|
||||||
|
<!-- Custom child fragments -->
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="active">7</attribute>
|
<attribute name="active">7</attribute>
|
||||||
</attributes>
|
</attributes>
|
||||||
@ -114,6 +120,8 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="vexpand">1</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</template>
|
</template>
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_type_chooser.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
<object class="CmbTypeChooserPopover" id="all">
|
<object class="CmbTypeChooserPopover" id="all">
|
||||||
<property name="show-categories">True</property>
|
<property name="show-categories">True</property>
|
||||||
@ -28,14 +30,14 @@
|
|||||||
<object class="GtkBox" id="content">
|
<object class="GtkBox" id="content">
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkMenuButton" id="type_chooser_all">
|
<object class="GtkMenuButton" id="type_chooser_all">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="focus-on-click">0</property>
|
<property name="focus-on-click">0</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="popover">all</property>
|
<property name="popover">all</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">edit-find-symbolic</property>
|
<property name="icon-name">edit-find-symbolic</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
@ -46,82 +48,79 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="type_label">
|
<object class="GtkLabel" id="type_label">
|
||||||
<property name="sensitive">0</property>
|
|
||||||
<property name="hexpand">1</property>
|
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
|
<property name="hexpand">1</property>
|
||||||
|
<property name="sensitive">0</property>
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="style" value="italic"></attribute>
|
<attribute name="style" value="italic"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox" id="type_chooser_gtk">
|
<object class="GtkBox" id="type_chooser_gtk">
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="homogeneous">False</property>
|
<property name="homogeneous">False</property>
|
||||||
<style>
|
<property name="visible">True</property>
|
||||||
<class name="linked"/>
|
|
||||||
</style>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkMenuButton">
|
<object class="GtkMenuButton">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="focus-on-click">0</property>
|
<property name="focus-on-click">0</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="popover">toplevel</property>
|
<property name="popover">toplevel</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="label" translatable="1" comments="Widget group for toplevels/windows">Toplevel</property>
|
<property name="label" translatable="yes" comments="Widget group for toplevels/windows">Toplevel</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkMenuButton">
|
<object class="GtkMenuButton">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="focus-on-click">0</property>
|
<property name="focus-on-click">0</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="popover">layout</property>
|
<property name="popover">layout</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="label" translatable="1" comments="Widget group for container widgets like GtkBox grid">Layout</property>
|
<property name="label" translatable="yes" comments="Widget group for container widgets like GtkBox grid">Layout</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkMenuButton">
|
<object class="GtkMenuButton">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="focus-on-click">0</property>
|
<property name="focus-on-click">0</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="popover">control</property>
|
<property name="popover">control</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="label" translatable="1" comments="Widget group for control widget like buttons, entries">Control</property>
|
<property name="label" translatable="yes" comments="Widget group for control widget like buttons, entries">Control</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkMenuButton">
|
<object class="GtkMenuButton">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="focus-on-click">0</property>
|
<property name="focus-on-click">0</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="popover">display</property>
|
<property name="popover">display</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="label" translatable="1" comments="Widget group for display widgets (label, image)">Display</property>
|
<property name="label" translatable="yes" comments="Widget group for display widgets (label, image)">Display</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkMenuButton">
|
<object class="GtkMenuButton">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="focus-on-click">0</property>
|
<property name="focus-on-click">0</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="popover">model</property>
|
<property name="popover">model</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="label" translatable="1" comments="Widget group for model objects (ListStore, TextBuffer)">Model</property>
|
<property name="label" translatable="yes" comments="Widget group for model objects (ListStore, TextBuffer)">Model</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
@ -129,8 +128,8 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkMenuButton">
|
<object class="GtkMenuButton">
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="receives-default">1</property>
|
|
||||||
<property name="popover">extra</property>
|
<property name="popover">extra</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">pan-down-symbolic</property>
|
<property name="icon-name">pan-down-symbolic</property>
|
||||||
@ -138,6 +137,9 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<style>
|
||||||
|
<class name="linked"/>
|
||||||
|
</style>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</template>
|
</template>
|
||||||
|
@ -57,6 +57,19 @@ class CmbTypeChooserWidget(Gtk.Box):
|
|||||||
|
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
|
self.connect("map", self.__on_map)
|
||||||
|
|
||||||
|
def __on_map(self, widget):
|
||||||
|
root = widget.get_root()
|
||||||
|
|
||||||
|
if root is not None:
|
||||||
|
height = root.get_allocated_height() - 100
|
||||||
|
if height > 460:
|
||||||
|
height = height * 0.7
|
||||||
|
|
||||||
|
self.scrolledwindow.set_max_content_height(height)
|
||||||
|
return False
|
||||||
|
|
||||||
def __type_info_should_append(self, info):
|
def __type_info_should_append(self, info):
|
||||||
retval = False
|
retval = False
|
||||||
|
|
||||||
|
@ -1,28 +1,25 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_type_chooser_widget.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
<template class="CmbTypeChooserWidget" parent="GtkBox">
|
<template class="CmbTypeChooserWidget" parent="GtkBox">
|
||||||
<property name="orientation">vertical</property>
|
<property name="orientation">vertical</property>
|
||||||
<property name="spacing">6</property>
|
<property name="spacing">6</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkSearchEntry" id="searchentry">
|
<object class="GtkSearchEntry" id="searchentry">
|
||||||
<signal name="activate" handler="on_searchentry_activate" swapped="no"/>
|
<signal name="activate" handler="on_searchentry_activate"/>
|
||||||
<signal name="search-changed" handler="on_searchentry_search_changed" swapped="no"/>
|
<signal name="search-changed" handler="on_searchentry_search_changed"/>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow" id="scrolledwindow">
|
<object class="GtkScrolledWindow" id="scrolledwindow">
|
||||||
<property name="hscrollbar-policy">never</property>
|
|
||||||
<property name="window-placement">bottom-left</property>
|
|
||||||
<property name="min-content-height">256</property>
|
|
||||||
<property name="propagate-natural-width">1</property>
|
|
||||||
<property name="propagate-natural-height">1</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkTreeView" id="treeview">
|
<object class="GtkTreeView" id="treeview">
|
||||||
<property name="headers-visible">0</property>
|
|
||||||
<property name="enable-search">0</property>
|
|
||||||
<property name="activate-on-single-click">1</property>
|
<property name="activate-on-single-click">1</property>
|
||||||
<signal name="row-activated" handler="on_treeview_row_activated" swapped="no"/>
|
<property name="enable-search">0</property>
|
||||||
|
<property name="headers-visible">0</property>
|
||||||
|
<signal name="row-activated" handler="on_treeview_row_activated"/>
|
||||||
<child internal-child="selection">
|
<child internal-child="selection">
|
||||||
<object class="GtkTreeSelection" id="treeview-selection"/>
|
<object class="GtkTreeSelection" id="treeview-selection"/>
|
||||||
</child>
|
</child>
|
||||||
@ -30,6 +27,7 @@
|
|||||||
<object class="GtkTreeViewColumn" id="column_adaptor">
|
<object class="GtkTreeViewColumn" id="column_adaptor">
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkCellRendererText" id="adaptor_cell"/>
|
<object class="GtkCellRendererText" id="adaptor_cell"/>
|
||||||
|
<!-- Custom child fragments -->
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="markup">0</attribute>
|
<attribute name="markup">0</attribute>
|
||||||
<attribute name="sensitive">3</attribute>
|
<attribute name="sensitive">3</attribute>
|
||||||
@ -39,6 +37,11 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="hscrollbar-policy">never</property>
|
||||||
|
<property name="min-content-height">256</property>
|
||||||
|
<property name="propagate-natural-height">1</property>
|
||||||
|
<property name="propagate-natural-width">1</property>
|
||||||
|
<property name="window-placement">bottom-left</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</template>
|
</template>
|
||||||
|
@ -115,7 +115,17 @@ class CmbUI(CmbBaseUI):
|
|||||||
c.close()
|
c.close()
|
||||||
|
|
||||||
def get_display_name(self):
|
def get_display_name(self):
|
||||||
return self.filename if self.filename else _("Unnamed {ui_id}").format(ui_id=self.ui_id)
|
if self.filename:
|
||||||
|
return self.filename
|
||||||
|
|
||||||
|
template_id = self.template_id
|
||||||
|
|
||||||
|
if template_id:
|
||||||
|
template = self.project.get_object_by_id(self.ui_id, template_id)
|
||||||
|
if template is not None:
|
||||||
|
return template.name
|
||||||
|
|
||||||
|
return _("Unnamed {ui_id}").format(ui_id=self.ui_id)
|
||||||
|
|
||||||
def __get_infered_target(self, library_id):
|
def __get_infered_target(self, library_id):
|
||||||
ui_id = self.ui_id
|
ui_id = self.ui_id
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_ui_editor.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
<object class="CmbTextBuffer" id="authors"/>
|
<object class="CmbTextBuffer" id="authors"/>
|
||||||
<object class="CmbTextBuffer" id="comment"/>
|
<object class="CmbTextBuffer" id="comment"/>
|
||||||
<object class="CmbTextBuffer" id="copyright"/>
|
<object class="CmbTextBuffer" id="copyright"/>
|
||||||
<object class="CmbTextBuffer" id="description"/>
|
<object class="CmbTextBuffer" id="description"/>
|
||||||
<template class="CmbUIEditor" parent="GtkGrid">
|
<template class="CmbUIEditor" parent="GtkGrid">
|
||||||
<property name="row-spacing">4</property>
|
|
||||||
<property name="column-spacing">3</property>
|
<property name="column-spacing">3</property>
|
||||||
|
<property name="row-spacing">4</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Filename:</property>
|
<property name="label" translatable="yes">Filename:</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">0</property>
|
<property name="row">0</property>
|
||||||
@ -21,7 +23,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Description:</property>
|
<property name="label" translatable="yes">Description:</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">2</property>
|
<property name="row">2</property>
|
||||||
@ -31,7 +33,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Copyright:</property>
|
<property name="label" translatable="yes">Copyright:</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">3</property>
|
<property name="row">3</property>
|
||||||
@ -41,7 +43,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Authors:</property>
|
<property name="label" translatable="yes">Authors:</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">4</property>
|
<property name="row">4</property>
|
||||||
@ -51,7 +53,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Domain:</property>
|
<property name="label" translatable="yes">Domain:</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">5</property>
|
<property name="row">5</property>
|
||||||
@ -60,10 +62,10 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="CmbEntry" id="filename">
|
<object class="CmbEntry" id="filename">
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can-focus">True</property>
|
<property name="can-focus">True</property>
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<property name="placeholder-text" translatable="1"><file name relative to project></property>
|
<property name="placeholder-text" translatable="yes"><file name relative to project></property>
|
||||||
|
<property name="visible">True</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">0</property>
|
<property name="row">0</property>
|
||||||
@ -72,10 +74,10 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="CmbEntry" id="translation_domain">
|
<object class="CmbEntry" id="translation_domain">
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can-focus">True</property>
|
<property name="can-focus">True</property>
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="placeholder-text" translatable="1"><translation domain></property>
|
<property name="placeholder-text" translatable="yes"><translation domain></property>
|
||||||
|
<property name="visible">True</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">5</property>
|
<property name="row">5</property>
|
||||||
@ -84,15 +86,15 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkScrolledWindow">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="min-content-height">96</property>
|
|
||||||
<property name="max-content-height">256</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkTextView">
|
<object class="GtkTextView">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="buffer">description</property>
|
<property name="buffer">description</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="max-content-height">256</property>
|
||||||
|
<property name="min-content-height">96</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">2</property>
|
<property name="row">2</property>
|
||||||
@ -101,15 +103,15 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkScrolledWindow">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="min-content-height">96</property>
|
|
||||||
<property name="max-content-height">256</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkTextView">
|
<object class="GtkTextView">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="buffer">authors</property>
|
<property name="buffer">authors</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="max-content-height">256</property>
|
||||||
|
<property name="min-content-height">96</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">4</property>
|
<property name="row">4</property>
|
||||||
@ -118,10 +120,10 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="CmbToplevelChooser" id="template_id">
|
<object class="CmbToplevelChooser" id="template_id">
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can-focus">False</property>
|
<property name="can-focus">False</property>
|
||||||
<property name="halign">start</property>
|
|
||||||
<property name="derivable-only">True</property>
|
<property name="derivable-only">True</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">1</property>
|
<property name="row">1</property>
|
||||||
@ -131,7 +133,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Template:</property>
|
<property name="label" translatable="yes">Template:</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">1</property>
|
<property name="row">1</property>
|
||||||
@ -140,14 +142,14 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkBox">
|
<object class="GtkBox">
|
||||||
|
<property name="spacing">4</property>
|
||||||
<property name="valign">end</property>
|
<property name="valign">end</property>
|
||||||
<property name="vexpand">1</property>
|
<property name="vexpand">1</property>
|
||||||
<property name="spacing">4</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="remove_button">
|
<object class="GtkButton" id="remove_button">
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="receives-default">1</property>
|
<property name="receives-default">1</property>
|
||||||
<signal name="clicked" handler="on_remove_button_clicked" swapped="no"/>
|
<signal name="clicked" handler="on_remove_button_clicked"/>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkImage">
|
<object class="GtkImage">
|
||||||
<property name="icon-name">app-remove-symbolic</property>
|
<property name="icon-name">app-remove-symbolic</property>
|
||||||
@ -157,13 +159,13 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="export_button">
|
<object class="GtkButton" id="export_button">
|
||||||
<property name="label" translatable="1">Export</property>
|
|
||||||
<property name="focusable">1</property>
|
<property name="focusable">1</property>
|
||||||
<property name="receives-default">1</property>
|
|
||||||
<property name="tooltip-text" translatable="1">Export</property>
|
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<signal name="clicked" handler="on_export_button_clicked" swapped="no"/>
|
<property name="label" translatable="yes">Export</property>
|
||||||
|
<property name="receives-default">1</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Export</property>
|
||||||
|
<signal name="clicked" handler="on_export_button_clicked"/>
|
||||||
<style>
|
<style>
|
||||||
<class name="suggested-action"/>
|
<class name="suggested-action"/>
|
||||||
</style>
|
</style>
|
||||||
@ -171,22 +173,22 @@
|
|||||||
</child>
|
</child>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">7</property>
|
|
||||||
<property name="column-span">2</property>
|
<property name="column-span">2</property>
|
||||||
|
<property name="row">7</property>
|
||||||
</layout>
|
</layout>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkScrolledWindow">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="min-content-height">96</property>
|
|
||||||
<property name="max-content-height">256</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkTextView">
|
<object class="GtkTextView">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="buffer">copyright</property>
|
<property name="buffer">copyright</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="max-content-height">256</property>
|
||||||
|
<property name="min-content-height">96</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">3</property>
|
<property name="row">3</property>
|
||||||
@ -196,7 +198,7 @@
|
|||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel">
|
<object class="GtkLabel">
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="1">Comment:</property>
|
<property name="label" translatable="yes">Comment:</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">0</property>
|
<property name="column">0</property>
|
||||||
<property name="row">6</property>
|
<property name="row">6</property>
|
||||||
@ -205,15 +207,15 @@
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkScrolledWindow">
|
<object class="GtkScrolledWindow">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="min-content-height">96</property>
|
|
||||||
<property name="max-content-height">256</property>
|
|
||||||
<property name="child">
|
<property name="child">
|
||||||
<object class="GtkTextView">
|
<object class="GtkTextView">
|
||||||
<property name="focusable">1</property>
|
|
||||||
<property name="buffer">comment</property>
|
<property name="buffer">comment</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="focusable">1</property>
|
||||||
|
<property name="max-content-height">256</property>
|
||||||
|
<property name="min-content-height">96</property>
|
||||||
<layout>
|
<layout>
|
||||||
<property name="column">1</property>
|
<property name="column">1</property>
|
||||||
<property name="row">6</property>
|
<property name="row">6</property>
|
||||||
|
@ -1,73 +1,73 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!-- Created with Cambalache 0.17.3 -->
|
||||||
<interface>
|
<interface>
|
||||||
|
<!-- interface-name cmb_view.ui -->
|
||||||
<requires lib="gtk" version="4.0"/>
|
<requires lib="gtk" version="4.0"/>
|
||||||
|
<requires lib="webkitgtk" version="6.0"/>
|
||||||
<object class="WebKitSettings" id="settings">
|
<object class="WebKitSettings" id="settings">
|
||||||
<property name="enable-html5-local-storage">False</property>
|
|
||||||
<property name="enable-html5-database">False</property>
|
|
||||||
<property name="enable-fullscreen">False</property>
|
<property name="enable-fullscreen">False</property>
|
||||||
|
<property name="enable-html5-database">False</property>
|
||||||
|
<property name="enable-html5-local-storage">False</property>
|
||||||
|
<property name="enable-media">False</property>
|
||||||
<property name="enable-webaudio">False</property>
|
<property name="enable-webaudio">False</property>
|
||||||
<property name="media-playback-allows-inline">False</property>
|
<property name="media-playback-allows-inline">False</property>
|
||||||
<property name="user-agent">Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15</property>
|
<property name="user-agent">Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15</property>
|
||||||
<property name="enable-media">False</property>
|
|
||||||
</object>
|
</object>
|
||||||
<template class="CmbView" parent="GtkBox">
|
<template class="CmbView" parent="GtkBox">
|
||||||
<child>
|
|
||||||
<object class="GtkStack" id="stack">
|
|
||||||
<property name="hexpand">true</property>
|
|
||||||
<property name="transition-duration">300</property>
|
|
||||||
<property name="transition-type">crossfade</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStackPage">
|
<object class="GtkStack" id="stack">
|
||||||
<property name="name">ui_view</property>
|
<property name="hexpand">true</property>
|
||||||
<property name="title" translatable="1">Project View</property>
|
<property name="transition-duration">300</property>
|
||||||
<property name="child">
|
<property name="transition-type">crossfade</property>
|
||||||
<object class="WebKitWebView" id="webview">
|
<child>
|
||||||
<property name="visible">True</property>
|
<object class="GtkStackPage">
|
||||||
<property name="can-focus">True</property>
|
<property name="child">
|
||||||
<property name="settings">settings</property>
|
<object class="WebKitWebView" id="webview">
|
||||||
<signal name="context-menu" handler="on_context_menu" swapped="no"/>
|
<property name="can-focus">True</property>
|
||||||
<child>
|
<property name="settings">settings</property>
|
||||||
<placeholder/>
|
<property name="visible">True</property>
|
||||||
</child>
|
<signal name="context-menu" handler="on_context_menu"/>
|
||||||
|
</object>
|
||||||
|
</property>
|
||||||
|
<property name="name">ui_view</property>
|
||||||
|
<property name="title" translatable="yes">Project View</property>
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</child>
|
||||||
</object>
|
<child>
|
||||||
</child>
|
<object class="GtkStackPage">
|
||||||
<child>
|
<property name="child">
|
||||||
<object class="GtkStackPage">
|
<object class="GtkBox">
|
||||||
<property name="name">ui_xml</property>
|
<property name="orientation">vertical</property>
|
||||||
<property name="title" translatable="1">UI Definition</property>
|
|
||||||
<property name="child">
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkScrolledWindow">
|
|
||||||
<property name="vexpand">1</property>
|
|
||||||
<property name="focusable">1</property>
|
|
||||||
<child>
|
<child>
|
||||||
<object class="CmbSourceView" id="text_view">
|
<object class="GtkScrolledWindow">
|
||||||
<property name="visible">True</property>
|
<property name="focusable">1</property>
|
||||||
<property name="can-focus">True</property>
|
<property name="vexpand">1</property>
|
||||||
<property name="editable">False</property>
|
<child>
|
||||||
<property name="cursor-visible">False</property>
|
<object class="CmbSourceView" id="text_view">
|
||||||
<property name="lang">xml</property>
|
<property name="can-focus">True</property>
|
||||||
|
<property name="cursor-visible">False</property>
|
||||||
|
<property name="editable">False</property>
|
||||||
|
<property name="lang">xml</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkStackSwitcher">
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<property name="margin-bottom">4</property>
|
||||||
|
<property name="margin-top">4</property>
|
||||||
|
<property name="stack">stack</property>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</property>
|
||||||
<child>
|
<property name="name">ui_xml</property>
|
||||||
<object class="GtkStackSwitcher">
|
<property name="title" translatable="yes">UI Definition</property>
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="margin-top">4</property>
|
|
||||||
<property name="margin-bottom">4</property>
|
|
||||||
<property name="stack">stack</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
</property>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</template>
|
</template>
|
||||||
</interface>
|
</interface>
|
||||||
|
@ -122,6 +122,7 @@ CREATE TABLE object (
|
|||||||
comment TEXT,
|
comment TEXT,
|
||||||
position INTEGER NOT NULL ON CONFLICT REPLACE DEFAULT 0,
|
position INTEGER NOT NULL ON CONFLICT REPLACE DEFAULT 0,
|
||||||
custom_fragment TEXT,
|
custom_fragment TEXT,
|
||||||
|
custom_child_fragment TEXT,
|
||||||
PRIMARY KEY(ui_id, object_id),
|
PRIMARY KEY(ui_id, object_id),
|
||||||
FOREIGN KEY(ui_id, parent_id) REFERENCES object(ui_id, object_id) ON DELETE CASCADE
|
FOREIGN KEY(ui_id, parent_id) REFERENCES object(ui_id, object_id) ON DELETE CASCADE
|
||||||
) WITHOUT ROWID;
|
) WITHOUT ROWID;
|
||||||
@ -205,7 +206,7 @@ CREATE TABLE object_property (
|
|||||||
property_id TEXT,
|
property_id TEXT,
|
||||||
|
|
||||||
value TEXT,
|
value TEXT,
|
||||||
translatable BOOLEAN,
|
translatable BOOLEAN CHECK (translatable IS NULL OR (translatable IN (1, 0))),
|
||||||
comment TEXT,
|
comment TEXT,
|
||||||
translation_context TEXT,
|
translation_context TEXT,
|
||||||
translation_comments TEXT,
|
translation_comments TEXT,
|
||||||
@ -238,7 +239,7 @@ CREATE TABLE object_layout_property (
|
|||||||
property_id TEXT,
|
property_id TEXT,
|
||||||
|
|
||||||
value TEXT,
|
value TEXT,
|
||||||
translatable BOOLEAN,
|
translatable BOOLEAN CHECK (translatable IS NULL OR (translatable IN (1, 0))),
|
||||||
comment TEXT,
|
comment TEXT,
|
||||||
translation_context TEXT,
|
translation_context TEXT,
|
||||||
translation_comments TEXT,
|
translation_comments TEXT,
|
||||||
@ -265,8 +266,8 @@ CREATE TABLE object_signal (
|
|||||||
handler TEXT NOT NULL,
|
handler TEXT NOT NULL,
|
||||||
detail TEXT,
|
detail TEXT,
|
||||||
user_data INTEGER,
|
user_data INTEGER,
|
||||||
swap BOOLEAN,
|
swap BOOLEAN CHECK (swap IS NULL OR (swap IN (1, 0))),
|
||||||
after BOOLEAN,
|
after BOOLEAN CHECK (after IS NULL OR (after IN (1, 0))),
|
||||||
comment TEXT,
|
comment TEXT,
|
||||||
FOREIGN KEY(ui_id, object_id) REFERENCES object ON DELETE CASCADE,
|
FOREIGN KEY(ui_id, object_id) REFERENCES object ON DELETE CASCADE,
|
||||||
FOREIGN KEY(owner_id, signal_id) REFERENCES signal
|
FOREIGN KEY(owner_id, signal_id) REFERENCES signal
|
||||||
@ -290,7 +291,7 @@ CREATE TABLE object_data (
|
|||||||
value TEXT,
|
value TEXT,
|
||||||
parent_id INTEGER,
|
parent_id INTEGER,
|
||||||
comment TEXT,
|
comment TEXT,
|
||||||
translatable BOOLEAN,
|
translatable BOOLEAN CHECK (translatable IS NULL OR (translatable IN (1, 0))),
|
||||||
translation_context TEXT,
|
translation_context TEXT,
|
||||||
translation_comments TEXT,
|
translation_comments TEXT,
|
||||||
PRIMARY KEY(ui_id, object_id, owner_id, data_id, id),
|
PRIMARY KEY(ui_id, object_id, owner_id, data_id, id),
|
||||||
|
@ -39,31 +39,23 @@ class MrgGtkPopover(MrgGtkWidget):
|
|||||||
self.property_ignore_list.add("autohide")
|
self.property_ignore_list.add("autohide")
|
||||||
else:
|
else:
|
||||||
self.property_ignore_list.add("modal")
|
self.property_ignore_list.add("modal")
|
||||||
self.property_ignore_list.add("relative_to")
|
#self.property_ignore_list.add("relative_to")
|
||||||
|
|
||||||
def __ensure_popup(self):
|
def __ensure_popup(self):
|
||||||
if self.object is None:
|
if self.object is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
self.__button.set_popover(self.object)
|
if self.__button:
|
||||||
|
self.__button.set_popover(self.object)
|
||||||
|
|
||||||
if Gtk.MAJOR_VERSION == 3:
|
if Gtk.MAJOR_VERSION == 3:
|
||||||
self.object.set_modal(False)
|
self.object.set_modal(False)
|
||||||
else:
|
else:
|
||||||
self.object.set_autohide(False)
|
self.object.set_autohide(False)
|
||||||
|
|
||||||
def popup(self):
|
|
||||||
if self.__button is None:
|
|
||||||
return
|
|
||||||
|
|
||||||
if Gtk.MAJOR_VERSION == 3:
|
|
||||||
self.__button.set_active(True)
|
|
||||||
else:
|
|
||||||
self.__button.popup()
|
|
||||||
|
|
||||||
def object_changed(self, old, new):
|
def object_changed(self, old, new):
|
||||||
# Clear old popover
|
# Clear old popover
|
||||||
if old:
|
if old and self.__button:
|
||||||
self.__button.set_popover(None)
|
self.__button.set_popover(None)
|
||||||
|
|
||||||
self.selection = None
|
self.selection = None
|
||||||
@ -74,14 +66,20 @@ class MrgGtkPopover(MrgGtkWidget):
|
|||||||
self.window = None
|
self.window = None
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.window is None:
|
# TODO: keep track when these prop changes and update window
|
||||||
|
if Gtk.MAJOR_VERSION == 4:
|
||||||
|
canot_be_activated = self.object.props.parent is None
|
||||||
|
else:
|
||||||
|
canot_be_activated = self.object.props.relative_to is None
|
||||||
|
|
||||||
|
if self.window is None and canot_be_activated:
|
||||||
self.__button = Gtk.MenuButton(
|
self.__button = Gtk.MenuButton(
|
||||||
visible=True, halign=Gtk.Align.CENTER, valign=Gtk.Align.CENTER, receives_default=False
|
visible=True, halign=Gtk.Align.CENTER, valign=Gtk.Align.CENTER, receives_default=False
|
||||||
)
|
)
|
||||||
|
|
||||||
self.window = Gtk.Window(title="Popover Preview Window", deletable=False, width_request=320, height_request=240)
|
self.window = Gtk.Window(title="Popover Preview Window", deletable=False)
|
||||||
|
|
||||||
self.window.set_default_size(640, 480)
|
self.window.set_default_size(320, 240)
|
||||||
|
|
||||||
if Gtk.MAJOR_VERSION == 4:
|
if Gtk.MAJOR_VERSION == 4:
|
||||||
self.__button.set_icon_name("open-menu-symbolic")
|
self.__button.set_icon_name("open-menu-symbolic")
|
||||||
@ -98,10 +96,12 @@ class MrgGtkPopover(MrgGtkWidget):
|
|||||||
|
|
||||||
if Gtk.MAJOR_VERSION == 4:
|
if Gtk.MAJOR_VERSION == 4:
|
||||||
self.object.show()
|
self.object.show()
|
||||||
self.window.show()
|
if self.window:
|
||||||
|
self.window.show()
|
||||||
else:
|
else:
|
||||||
self.object.show_all()
|
self.object.show_all()
|
||||||
self.window.show_all()
|
if self.window:
|
||||||
|
self.window.show_all()
|
||||||
|
|
||||||
def on_selected_changed(self):
|
def on_selected_changed(self):
|
||||||
super().on_selected_changed()
|
super().on_selected_changed()
|
||||||
|
29
cambalache/merengue/mrg_webkit/__init__.py
Normal file
29
cambalache/merengue/mrg_webkit/__init__.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Merengue WebKit plugin
|
||||||
|
#
|
||||||
|
# Copyright (C) 2022 Juan Pablo Ugarte
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation;
|
||||||
|
# version 2.1 of the License.
|
||||||
|
#
|
||||||
|
# library 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
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Juan Pablo Ugarte <juanpablougarte@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
from gi.repository import GObject
|
||||||
|
|
||||||
|
from .mrg_webkit_web_view import MrgWebKitWebView
|
||||||
|
from .mrg_webkit_web_view import MrgDummyWebView
|
||||||
|
from .mrg_webkit_web_view import MrgDummyWebViewProxy
|
||||||
|
|
||||||
|
GObject.type_ensure(MrgDummyWebViewProxy.__gtype__)
|
144
cambalache/merengue/mrg_webkit/mrg_webkit_web_view.py
Normal file
144
cambalache/merengue/mrg_webkit/mrg_webkit_web_view.py
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
# MrgWebKitWebView Controller
|
||||||
|
#
|
||||||
|
# Copyright (C) 2022 Juan Pablo Ugarte
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation;
|
||||||
|
# version 2.1 of the License.
|
||||||
|
#
|
||||||
|
# library 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
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Juan Pablo Ugarte <juanpablougarte@gmail.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
from gi.repository import GObject, Gtk, WebKit
|
||||||
|
|
||||||
|
from merengue.mrg_gtk import MrgGtkWidget
|
||||||
|
|
||||||
|
from merengue import getLogger
|
||||||
|
|
||||||
|
logger = getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class MrgWebKitWebView(MrgGtkWidget):
|
||||||
|
object = GObject.Property(type=WebKit.WebView, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super().__init__(**kwargs)
|
||||||
|
logger.warning("MrgWebKitWebView __init__")
|
||||||
|
|
||||||
|
def object_changed(self, old, new):
|
||||||
|
super().object_changed(old, new)
|
||||||
|
|
||||||
|
if self.object:
|
||||||
|
self.object.load_html(
|
||||||
|
"""
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Cambalache WebKit</title>
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.content {
|
||||||
|
display: table-cell;
|
||||||
|
text-align: center;
|
||||||
|
vertical-align: middle;
|
||||||
|
border: 3px groove lightgray;
|
||||||
|
border-radius: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
function open_url() {
|
||||||
|
const url = document.querySelector('#url_entry').value;
|
||||||
|
window.location.href = (url.startsWith('http')) ? url : 'http://' + url;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="content">
|
||||||
|
<h3>WebKit Test Page</h3>
|
||||||
|
<span>URL:</span>
|
||||||
|
<input type="text" id="url_entry" />
|
||||||
|
<input type="button" value="Open" onclick="open_url()" />
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
<a href="https://gitlab.gnome.org/jpu/cambalache">Cambalache</a>
|
||||||
|
<a href="https://webkitgtk.org/">WebKitGtk</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
""",
|
||||||
|
".",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MrgDummyWebViewProxy(Gtk.Label):
|
||||||
|
__gtype_name__ = "MrgDummyWebViewProxy"
|
||||||
|
|
||||||
|
automation_presentation_type = GObject.Property(
|
||||||
|
type=WebKit.AutomationBrowsingContextPresentation,
|
||||||
|
default=WebKit.AutomationBrowsingContextPresentation.WINDOW,
|
||||||
|
flags=GObject.ParamFlags.READWRITE,
|
||||||
|
)
|
||||||
|
camera_capture_state = GObject.Property(
|
||||||
|
type=WebKit.MediaCaptureState, default=WebKit.MediaCaptureState.NONE, flags=GObject.ParamFlags.READWRITE
|
||||||
|
)
|
||||||
|
default_content_security_policy = GObject.Property(type=str, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
display_capture_state = GObject.Property(
|
||||||
|
type=WebKit.MediaCaptureState, default=WebKit.MediaCaptureState.NONE, flags=GObject.ParamFlags.READWRITE
|
||||||
|
)
|
||||||
|
editable = GObject.Property(type=bool, default=False, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
is_controlled_by_automation = GObject.Property(type=bool, default=False, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
is_ephemeral = GObject.Property(type=bool, default=False, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
is_muted = GObject.Property(type=bool, default=False, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
microphone_capture_state = GObject.Property(
|
||||||
|
type=WebKit.MediaCaptureState, default=WebKit.MediaCaptureState.NONE, flags=GObject.ParamFlags.READWRITE
|
||||||
|
)
|
||||||
|
related_view = GObject.Property(type=WebKit.WebView, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
settings = GObject.Property(type=WebKit.Settings, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
user_content_manager = GObject.Property(type=WebKit.UserContentManager, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
web_context = GObject.Property(type=WebKit.WebContext, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
web_extension_mode = GObject.Property(
|
||||||
|
type=WebKit.WebExtensionMode, default=WebKit.WebExtensionMode.NONE, flags=GObject.ParamFlags.READWRITE
|
||||||
|
)
|
||||||
|
website_policies = GObject.Property(type=WebKit.WebsitePolicies, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
zoom_level = GObject.Property(type=float, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super().__init__(**kwargs)
|
||||||
|
self.props.label = "WebKit.WebView\nplaceholder"
|
||||||
|
self.props.justify = Gtk.Justification.CENTER
|
||||||
|
|
||||||
|
|
||||||
|
class MrgDummyWebView(MrgGtkWidget):
|
||||||
|
object = GObject.Property(type=MrgDummyWebViewProxy, flags=GObject.ParamFlags.READWRITE)
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super().__init__(**kwargs)
|
@ -1,12 +1,12 @@
|
|||||||
project(
|
project(
|
||||||
'cambalache', 'c',
|
'cambalache', 'c',
|
||||||
version: '0.17.2',
|
version: '0.17.3',
|
||||||
meson_version: '>= 0.50.0'
|
meson_version: '>= 0.50.0'
|
||||||
)
|
)
|
||||||
|
|
||||||
# File format version follows app version and only changes when there is a
|
# File format version follows app version and only changes when there is a
|
||||||
# change that prevents older versions to load it.
|
# change that prevents older versions to load it.
|
||||||
fileformatversion = '0.17.1'
|
fileformatversion = '0.17.3'
|
||||||
|
|
||||||
python = import('python')
|
python = import('python')
|
||||||
python_bin = python.find_installation('python3')
|
python_bin = python.find_installation('python3')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user