Move MatterControl settings to dedicated DialogPage
This commit is contained in:
parent
0cc0530ca0
commit
ab7a5c5292
3 changed files with 407 additions and 242 deletions
|
|
@ -43,7 +43,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage
|
|||
{
|
||||
public class ApplicationSettingsWidget : FlowLayoutWidget, IIgnoredPopupChild
|
||||
{
|
||||
public static Action OpenPrintNotification = null;
|
||||
public static Action<DialogWindow> OpenPrintNotification = null;
|
||||
|
||||
private ThemeConfig theme;
|
||||
|
||||
|
|
@ -55,246 +55,14 @@ namespace MatterHackers.MatterControl.ConfigurationPage
|
|||
this.BackgroundColor = theme.Colors.PrimaryBackgroundColor;
|
||||
this.theme = theme;
|
||||
|
||||
var configureIcon = AggContext.StaticData.LoadIcon("fa-cog_16.png", 16, 16, theme.InvertIcons);
|
||||
|
||||
#if __ANDROID__
|
||||
// Camera Monitoring
|
||||
bool hasCamera = true || ApplicationSettings.Instance.get(ApplicationSettingsKey.HardwareHasCamera) == "true";
|
||||
|
||||
var previewButton = new IconButton(configureIcon, theme)
|
||||
{
|
||||
ToolTipText = "Configure Camera View".Localize()
|
||||
};
|
||||
previewButton.Click += (s, e) =>
|
||||
{
|
||||
AppContext.Platform.OpenCameraPreview();
|
||||
};
|
||||
|
||||
this.AddSettingsRow(
|
||||
new SettingsItem(
|
||||
"Camera Monitoring".Localize(),
|
||||
theme,
|
||||
new SettingsItem.ToggleSwitchConfig()
|
||||
{
|
||||
Checked = ActiveSliceSettings.Instance.GetValue<bool>(SettingsKey.publish_bed_image),
|
||||
ToggleAction = (itemChecked) =>
|
||||
{
|
||||
ActiveSliceSettings.Instance.SetValue(SettingsKey.publish_bed_image, itemChecked ? "1" : "0");
|
||||
}
|
||||
},
|
||||
previewButton,
|
||||
AggContext.StaticData.LoadIcon("camera-24x24.png", 24, 24))
|
||||
);
|
||||
#endif
|
||||
|
||||
// Print Notifications
|
||||
var configureNotificationsButton = new IconButton(configureIcon, theme)
|
||||
{
|
||||
Name = "Configure Notification Settings Button",
|
||||
ToolTipText = "Configure Notifications".Localize(),
|
||||
Margin = new BorderDouble(left: 6),
|
||||
VAnchor = VAnchor.Center
|
||||
};
|
||||
configureNotificationsButton.Click += (s, e) =>
|
||||
{
|
||||
if (OpenPrintNotification != null)
|
||||
{
|
||||
UiThread.RunOnIdle(OpenPrintNotification);
|
||||
}
|
||||
};
|
||||
|
||||
AddMenuItem("Help".Localize(), ApplicationController.Instance.ShowApplicationHelp);
|
||||
|
||||
this.AddSettingsRow(
|
||||
new SettingsItem(
|
||||
"Notifications".Localize(),
|
||||
theme,
|
||||
new SettingsItem.ToggleSwitchConfig()
|
||||
{
|
||||
Checked = UserSettings.Instance.get(UserSettingsKey.PrintNotificationsEnabled) == "true",
|
||||
ToggleAction = (itemChecked) =>
|
||||
{
|
||||
UserSettings.Instance.set(UserSettingsKey.PrintNotificationsEnabled, itemChecked ? "true" : "false");
|
||||
}
|
||||
},
|
||||
configureNotificationsButton,
|
||||
AggContext.StaticData.LoadIcon("notify-24x24.png")));
|
||||
|
||||
// Touch Screen Mode
|
||||
this.AddSettingsRow(
|
||||
new SettingsItem(
|
||||
"Touch Screen Mode".Localize(),
|
||||
theme,
|
||||
new SettingsItem.ToggleSwitchConfig()
|
||||
{
|
||||
Checked = UserSettings.Instance.get(UserSettingsKey.ApplicationDisplayMode) == "touchscreen",
|
||||
ToggleAction = (itemChecked) =>
|
||||
{
|
||||
string displayMode = itemChecked ? "touchscreen" : "responsive";
|
||||
if (displayMode != UserSettings.Instance.get(UserSettingsKey.ApplicationDisplayMode))
|
||||
{
|
||||
UserSettings.Instance.set(UserSettingsKey.ApplicationDisplayMode, displayMode);
|
||||
ApplicationController.Instance.ReloadAll();
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
// LanguageControl
|
||||
var languageSelector = new LanguageSelector(theme);
|
||||
languageSelector.SelectionChanged += (s, e) =>
|
||||
{
|
||||
UiThread.RunOnIdle(() =>
|
||||
{
|
||||
string languageCode = languageSelector.SelectedValue;
|
||||
if (languageCode != UserSettings.Instance.get(UserSettingsKey.Language))
|
||||
{
|
||||
UserSettings.Instance.set(UserSettingsKey.Language, languageCode);
|
||||
|
||||
if (languageCode == "L10N")
|
||||
{
|
||||
#if DEBUG
|
||||
AppContext.Platform.GenerateLocalizationValidationFile();
|
||||
#endif
|
||||
}
|
||||
|
||||
ApplicationController.Instance.ResetTranslationMap();
|
||||
ApplicationController.Instance.ReloadAll();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
this.AddSettingsRow(new SettingsItem("Language".Localize(), languageSelector, theme));
|
||||
|
||||
#if !__ANDROID__
|
||||
// ThumbnailRendering
|
||||
var thumbnailsModeDropList = new DropDownList("", theme.Colors.PrimaryTextColor, maxHeight: 200, pointSize: theme.DefaultFontSize)
|
||||
{
|
||||
BorderColor = theme.GetBorderColor(75)
|
||||
};
|
||||
thumbnailsModeDropList.AddItem("Flat".Localize(), "orthographic");
|
||||
thumbnailsModeDropList.AddItem("3D".Localize(), "raytraced");
|
||||
|
||||
thumbnailsModeDropList.SelectedValue = UserSettings.Instance.ThumbnailRenderingMode;
|
||||
thumbnailsModeDropList.SelectionChanged += (s, e) =>
|
||||
{
|
||||
string thumbnailRenderingMode = thumbnailsModeDropList.SelectedValue;
|
||||
if (thumbnailRenderingMode != UserSettings.Instance.ThumbnailRenderingMode)
|
||||
{
|
||||
UserSettings.Instance.ThumbnailRenderingMode = thumbnailRenderingMode;
|
||||
|
||||
UiThread.RunOnIdle(() =>
|
||||
{
|
||||
// Ask if the user they would like to rebuild their thumbnails
|
||||
StyledMessageBox.ShowMessageBox(
|
||||
(bool rebuildThumbnails) =>
|
||||
{
|
||||
if (rebuildThumbnails)
|
||||
{
|
||||
string[] thumbnails = new string[]
|
||||
{
|
||||
ApplicationController.CacheablePath(
|
||||
Path.Combine("Thumbnails", "Content"), ""),
|
||||
ApplicationController.CacheablePath(
|
||||
Path.Combine("Thumbnails", "Library"), "")
|
||||
};
|
||||
foreach (var directoryToRemove in thumbnails)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (Directory.Exists(directoryToRemove))
|
||||
{
|
||||
Directory.Delete(directoryToRemove, true);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
GuiWidget.BreakInDebugger();
|
||||
}
|
||||
|
||||
Directory.CreateDirectory(directoryToRemove);
|
||||
}
|
||||
|
||||
ApplicationController.Instance.Library.NotifyContainerChanged();
|
||||
}
|
||||
},
|
||||
"You are switching to a different thumbnail rendering mode. If you want, your current thumbnails can be removed and recreated in the new style. You can switch back and forth at any time. There will be some processing overhead while the new thumbnails are created.\n\nDo you want to rebuild your existing thumbnails now?".Localize(),
|
||||
"Rebuild Thumbnails Now".Localize(),
|
||||
StyledMessageBox.MessageType.YES_NO,
|
||||
"Rebuild".Localize());
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
this.AddSettingsRow(
|
||||
new SettingsItem(
|
||||
"Thumbnails".Localize(),
|
||||
thumbnailsModeDropList,
|
||||
theme));
|
||||
#endif
|
||||
|
||||
// TextSize
|
||||
if (!double.TryParse(UserSettings.Instance.get(UserSettingsKey.ApplicationTextSize), out double currentTextSize))
|
||||
{
|
||||
currentTextSize = 1.0;
|
||||
}
|
||||
|
||||
double sliderThumbWidth = 10 * GuiWidget.DeviceScale;
|
||||
double sliderWidth = 100 * GuiWidget.DeviceScale;
|
||||
var textSizeSlider = new SolidSlider(new Vector2(), sliderThumbWidth, .7, 1.4)
|
||||
{
|
||||
Name = "Text Size Slider",
|
||||
Margin = new BorderDouble(5, 0),
|
||||
Value = currentTextSize,
|
||||
HAnchor = HAnchor.Stretch,
|
||||
VAnchor = VAnchor.Center,
|
||||
TotalWidthInPixels = sliderWidth,
|
||||
};
|
||||
|
||||
var optionalContainer = new FlowLayoutWidget()
|
||||
{
|
||||
VAnchor = VAnchor.Center | VAnchor.Fit,
|
||||
HAnchor = HAnchor.Fit
|
||||
};
|
||||
|
||||
TextWidget sectionLabel = null;
|
||||
|
||||
var textSizeApplyButton = new TextButton("Apply".Localize(), theme)
|
||||
{
|
||||
VAnchor = VAnchor.Center,
|
||||
BackgroundColor = theme.SlightShade,
|
||||
Visible = false,
|
||||
Margin = new BorderDouble(right: 6)
|
||||
};
|
||||
textSizeApplyButton.Click += (s, e) =>
|
||||
{
|
||||
GuiWidget.DeviceScale = textSizeSlider.Value;
|
||||
ApplicationController.Instance.ReloadAll();
|
||||
};
|
||||
optionalContainer.AddChild(textSizeApplyButton);
|
||||
|
||||
textSizeSlider.ValueChanged += (s, e) =>
|
||||
{
|
||||
double textSizeNew = textSizeSlider.Value;
|
||||
UserSettings.Instance.set(UserSettingsKey.ApplicationTextSize, textSizeNew.ToString("0.0"));
|
||||
sectionLabel.Text = "Text Size".Localize() + $" : {textSizeNew:0.0}";
|
||||
textSizeApplyButton.Visible = textSizeNew != currentTextSize;
|
||||
};
|
||||
|
||||
var section = new SettingsItem(
|
||||
"Text Size".Localize() + $" : {currentTextSize:0.0}",
|
||||
textSizeSlider,
|
||||
theme,
|
||||
optionalContainer);
|
||||
|
||||
sectionLabel = section.Children<TextWidget>().FirstOrDefault();
|
||||
|
||||
this.AddSettingsRow(section);
|
||||
|
||||
AddMenuItem("Forums".Localize(), () => ApplicationController.Instance.LaunchBrowser("https://forums.matterhackers.com/category/20/mattercontrol"));
|
||||
AddMenuItem("Wiki".Localize(), () => ApplicationController.Instance.LaunchBrowser("http://wiki.mattercontrol.com"));
|
||||
AddMenuItem("Guides and Articles".Localize(), () => ApplicationController.Instance.LaunchBrowser("http://www.matterhackers.com/topic/mattercontrol"));
|
||||
AddMenuItem("Release Notes".Localize(), () => ApplicationController.Instance.LaunchBrowser("http://wiki.mattercontrol.com/Release_Notes"));
|
||||
AddMenuItem("Report a Bug".Localize(), () => ApplicationController.Instance.LaunchBrowser("https://github.com/MatterHackers/MatterControl/issues"));
|
||||
AddMenuItem("Settings".Localize(), () => DialogWindow.Show<ApplicationSettingsPage>());
|
||||
|
||||
var updateMatterControl = new SettingsItem("Check For Update".Localize(), theme);
|
||||
updateMatterControl.Click += (s, e) =>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue