Move remaining preferences to settings pane

Saves one more dialog.
This commit is contained in:
Arjan Molenaar 2020-07-13 22:46:25 +02:00
parent e440e5315d
commit 135ea1ef01
7 changed files with 70 additions and 143 deletions

View File

@ -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 &lt;a href="https://gaphor.readthedocs.io/en/latest/style_sheets.html"&gt;Style sheets in Gaphor&lt;/a&gt;.</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">🔗 &lt;a href="https://gaphor.readthedocs.io/en/latest/style_sheets.html"&gt;Style sheets in Gaphor&lt;/a&gt;</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>

View File

@ -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):

View File

@ -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)

View File

@ -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>

View File

@ -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)

View File

@ -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
)

View File

@ -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"