Move remaining preferences to settings pane
Saves one more dialog.
This commit is contained in:
parent
e440e5315d
commit
135ea1ef01
@ -329,14 +329,14 @@ Tool selection only works from the diagram. If a tool does not get selected, cli
|
||||
<property name="margin_left">6</property>
|
||||
<property name="margin_right">6</property>
|
||||
<property name="margin_top">12</property>
|
||||
<property name="margin_bottom">6</property>
|
||||
<property name="margin_bottom">12</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Style sheet</property>
|
||||
<property name="label" translatable="yes">Preferences</property>
|
||||
<property name="xalign">0</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
@ -349,18 +349,55 @@ Tool selection only works from the diagram. If a tool does not get selected, cli
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Learn more about <a href="https://gaphor.readthedocs.io/en/latest/style_sheets.html">Style sheets in Gaphor</a>.</property>
|
||||
<property name="use_markup">True</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="max_width_chars">28</property>
|
||||
<property name="xalign">0</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Reset tool automatically</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="action_name">win.reset-tool-after-create</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_top">6</property>
|
||||
<property name="label" translatable="yes">Style sheet</property>
|
||||
<property name="xalign">0</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
@ -384,6 +421,22 @@ Tool selection only works from the diagram. If a tool does not get selected, cli
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">🔗 <a href="https://gaphor.readthedocs.io/en/latest/style_sheets.html">Style sheets in Gaphor</a></property>
|
||||
<property name="use_markup">True</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="max_width_chars">28</property>
|
||||
<property name="xalign">0</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">settings</property>
|
||||
|
@ -56,6 +56,7 @@ class ElementEditor(UIComponent, ActionProvider):
|
||||
"""Constructor. Build the action group for the element editor window.
|
||||
This will place a button for opening the window in the toolbar.
|
||||
The widget attribute is a PropertyEditor."""
|
||||
self.properties = properties
|
||||
self.editors = EditorStack(event_manager, diagrams, properties)
|
||||
self.settings = SettingsStack(event_manager, element_factory)
|
||||
|
||||
@ -89,6 +90,13 @@ class ElementEditor(UIComponent, ActionProvider):
|
||||
def toggle_editor_settings(self, active):
|
||||
self.editor_stack.set_visible_child_name("settings" if active else "editors")
|
||||
|
||||
@action(
|
||||
name="reset-tool-after-create",
|
||||
state=lambda self: self.properties.get("reset-tool-after-create", True),
|
||||
)
|
||||
def reset_tool_after_create(self, active):
|
||||
self.properties.set("reset-tool-after-create", active)
|
||||
|
||||
|
||||
class EditorStack:
|
||||
def __init__(self, event_manager, diagrams, properties):
|
||||
|
@ -58,7 +58,6 @@ def create_hamburger_model(export_menu, tools_menu):
|
||||
model.append_section(None, part)
|
||||
|
||||
part = Gio.Menu.new()
|
||||
part.append(gettext("Preferences"), "win.preferences")
|
||||
part.append(gettext("Keyboard Shortcuts"), "app.shortcuts")
|
||||
part.append(gettext("About Gaphor"), "app.about")
|
||||
model.append_section(None, part)
|
||||
|
@ -1,70 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.2 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.18"/>
|
||||
<object class="GtkDialog" id="preferences">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="border_width">8</property>
|
||||
<property name="title" translatable="yes">Preferences</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<child type="titlebar">
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkBox">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">2</property>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkButtonBox">
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="row_spacing">12</property>
|
||||
<property name="column_spacing">6</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="label" translatable="yes">Reset to pointer tool after placing an item on a diagram</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSwitch">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="action_name">pref.reset-tool-after-create</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="padding">16</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
@ -1,42 +0,0 @@
|
||||
import importlib
|
||||
|
||||
from gi.repository import Gtk
|
||||
|
||||
from gaphor.abc import ActionProvider, Service
|
||||
from gaphor.action import action
|
||||
from gaphor.ui.actiongroup import create_action_group
|
||||
|
||||
|
||||
class Preferences(Service, ActionProvider):
|
||||
def __init__(self, main_window, properties):
|
||||
self.main_window = main_window
|
||||
self.properties = properties
|
||||
|
||||
@action(name="win.preferences", shortcut="<Primary>comma")
|
||||
def open(self):
|
||||
builder = Gtk.Builder()
|
||||
with importlib.resources.path("gaphor.ui", "mockups.glade") as glade_file:
|
||||
builder.add_objects_from_file(str(glade_file), ("preferences",))
|
||||
|
||||
prefs = builder.get_object("preferences")
|
||||
prefs.set_transient_for(self.main_window.window)
|
||||
prefs.set_modal(True)
|
||||
|
||||
prefs.insert_action_group("pref", self.create_action_group())
|
||||
|
||||
prefs.show_all()
|
||||
return prefs
|
||||
|
||||
def shutdown(self):
|
||||
pass
|
||||
|
||||
def create_action_group(self):
|
||||
action_group, accel_group = create_action_group(self, "pref")
|
||||
return action_group
|
||||
|
||||
@action(
|
||||
name="pref.reset-tool-after-create",
|
||||
state=lambda self: self.properties.get("reset-tool-after-create", True),
|
||||
)
|
||||
def reset_tool_after_create(self, active):
|
||||
self.properties.set("reset-tool-after-create", active)
|
@ -1,20 +0,0 @@
|
||||
from gi.repository import Gtk
|
||||
|
||||
from gaphor.ui.preferences import Preferences
|
||||
|
||||
|
||||
class MainWindowMock:
|
||||
def __init__(self):
|
||||
self.window = Gtk.Window.new(Gtk.WindowType.TOPLEVEL)
|
||||
|
||||
|
||||
def test_preferences_window():
|
||||
prefs = Preferences(MainWindowMock(), {})
|
||||
|
||||
dialog = prefs.open()
|
||||
action_group = dialog.get_action_group("pref")
|
||||
|
||||
assert (
|
||||
action_group.lookup_action("reset-tool-after-create").get_state().get_boolean()
|
||||
is True
|
||||
)
|
@ -77,7 +77,6 @@ gaphorconvert = 'gaphor.plugins.diagramexport.gaphorconvert:main'
|
||||
"file_manager" = "gaphor.ui.filemanager:FileManager"
|
||||
"recent_files" = "gaphor.ui.recentfiles:RecentFiles"
|
||||
"main_window" = "gaphor.ui.mainwindow:MainWindow"
|
||||
"preferences" = "gaphor.ui.preferences:Preferences"
|
||||
"export_menu" = "gaphor.ui.menufragment:MenuFragment"
|
||||
"tools_menu" = "gaphor.ui.menufragment:MenuFragment"
|
||||
"copy" = "gaphor.services.copyservice:CopyService"
|
||||
|
Loading…
x
Reference in New Issue
Block a user