mirror of
https://github.com/cyanfish/naps2.git
synced 2024-10-26 17:11:21 +03:00
Persist sidebar state
This commit is contained in:
parent
f9e9f4cd1c
commit
451ee4e84e
@ -203,4 +203,10 @@ public class CommonConfig
|
||||
|
||||
[Common]
|
||||
public bool DisableScannerSharing { get; set; }
|
||||
|
||||
[User]
|
||||
public bool SidebarVisible { get; set; }
|
||||
|
||||
[User]
|
||||
public int SidebarWidth { get; set; }
|
||||
}
|
@ -58,6 +58,7 @@ public static class InternalDefaults
|
||||
DesktopToolStripDock = DockStyle.Top,
|
||||
EventLogging = EventType.None,
|
||||
ShowPageNumbers = false,
|
||||
SidebarVisible = true,
|
||||
PdfSettings = new PdfSettings
|
||||
{
|
||||
Metadata = new PdfMetadata
|
||||
|
@ -88,6 +88,7 @@ public class Sidebar
|
||||
|
||||
public LayoutElement CreateView(IFormBase parentWindow)
|
||||
{
|
||||
_sidebarVis.IsVisible = _config.Get(c => c.SidebarVisible);
|
||||
_profile.SelectedItem = _profileManager.DefaultProfile;
|
||||
|
||||
_deviceSelectorWidget = new DeviceSelectorWidget(_scanPerformer, _deviceCapsCache, _iconProvider, parentWindow)
|
||||
@ -217,5 +218,6 @@ public class Sidebar
|
||||
public void ToggleVisibility()
|
||||
{
|
||||
_sidebarVis.IsVisible = !_sidebarVis.IsVisible;
|
||||
_config.User.Set(c => c.SidebarVisible, _sidebarVis.IsVisible);
|
||||
}
|
||||
}
|
@ -56,7 +56,7 @@ public static class L
|
||||
return new BufferLayoutElement(element, left, top, right, bottom);
|
||||
}
|
||||
|
||||
public static LayoutElement LeftPanel(LayoutElement left, LayoutElement right)
|
||||
public static LayoutLeftPanel LeftPanel(LayoutElement left, LayoutElement right)
|
||||
{
|
||||
return new LayoutLeftPanel(left, right);
|
||||
}
|
||||
|
@ -10,6 +10,8 @@ public class LayoutLeftPanel : LayoutElement
|
||||
private readonly LayoutOverlay _overlay;
|
||||
private readonly Splitter _splitter;
|
||||
|
||||
private Func<int> _widthGetter = () => 0;
|
||||
private Action<int> _widthSetter = _ => { };
|
||||
private bool _isInitialized;
|
||||
|
||||
public LayoutLeftPanel(LayoutElement left, LayoutElement right)
|
||||
@ -37,12 +39,13 @@ public class LayoutLeftPanel : LayoutElement
|
||||
|
||||
if (!_isInitialized)
|
||||
{
|
||||
_left.Width = _splitter.Position = _splitter.Panel1MinimumSize;
|
||||
_left.Width = _splitter.Position = Math.Max(_widthGetter(), _splitter.Panel1MinimumSize);
|
||||
_splitter.PositionChanged += (_, _) =>
|
||||
{
|
||||
if (_left.Width != _splitter.Position)
|
||||
{
|
||||
_left.Width = _splitter.Position;
|
||||
_widthSetter(_splitter.Position);
|
||||
context.Invalidate();
|
||||
}
|
||||
};
|
||||
@ -74,4 +77,11 @@ public class LayoutLeftPanel : LayoutElement
|
||||
{
|
||||
return _overlay.GetPreferredSize(context, parentBounds);
|
||||
}
|
||||
|
||||
public LayoutLeftPanel SizeConfig(Func<int> getter, Action<int> setter)
|
||||
{
|
||||
_widthGetter = getter;
|
||||
_widthSetter = setter;
|
||||
return this;
|
||||
}
|
||||
}
|
@ -135,7 +135,9 @@ public abstract class DesktopForm : EtoFormBase
|
||||
_notificationArea.Content)
|
||||
).Padding(8)
|
||||
).Scale()
|
||||
);
|
||||
).SizeConfig(
|
||||
() => Config.Get(c => c.SidebarWidth),
|
||||
width => Config.User.Set(c => c.SidebarWidth, width));
|
||||
}
|
||||
|
||||
private void OpeningContextMenu(object? sender, EventArgs e)
|
||||
|
Loading…
Reference in New Issue
Block a user