Merge pull request #893 from larsbrubaker/master

New edit printer settings page.
This commit is contained in:
johnlewin 2016-06-08 18:04:52 -07:00
commit 00d7690c2c
6 changed files with 145 additions and 49 deletions

View file

@ -71,20 +71,12 @@ namespace MatterHackers.MatterControl
testRunner.TimeToMoveMouse = 0;
testRunner.UpDelaySeconds = 0;
if (testRunner.NameExists("Done"))
UiThread.RunOnIdle(() =>
{
testRunner.ClickByName("Done");
testRunner.Wait(.2);
}
WizardWindow.Show<EditPrinterSettingsPage>("EditSettings", "Edit Printer Settings");
});
if (testRunner.NameExists("SettingsAndControls"))
{
testRunner.ClickByName("SettingsAndControls", 5);
testRunner.Wait(.2);
}
testRunner.ClickByName("Slice Settings Tab", .1);
testRunner.ClickByName("Printer Tab", .2);
testRunner.ClickByName("Connection Tab", .1);
testRunner.Wait(.5);
if (widgetNameToHighlight.Contains(","))
{

View file

@ -247,6 +247,7 @@
<Compile Include="Queue\OptionsMenu\ExportGcodePlugin.cs" />
<Compile Include="Queue\OptionsMenu\MergeQueueItems.cs" />
<Compile Include="SetupWizard\AndroidConnectDevicePage.cs" />
<Compile Include="SetupWizard\EditPrinterSettingsPage.cs" />
<Compile Include="SetupWizard\WizardPage.cs" />
<Compile Include="SetupWizard\AndroidSetupOptionsPage.cs" />
<Compile Include="SetupWizard\SetupWizardTroubleshooting.cs" />

View file

@ -132,6 +132,7 @@ namespace MatterHackers.MatterControl
printerSelectorAndEditButton.AddChild(printerSelector);
var editButton = TextImageButtonFactory.GetThemedEditButton();
editButton.ToolTipText = "Edit Selected Setting".Localize();
editButton.VAnchor = VAnchor.ParentCenter;
editButton.Click += UiNavigation.GoToEditPrinter_Click;
printerSelectorAndEditButton.AddChild(editButton);

View file

@ -0,0 +1,72 @@
/*
Copyright (c) 2016, Kevin Pope, John Lewin
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of the FreeBSD Project.
*/
using System;
using MatterHackers.Agg;
using MatterHackers.Agg.UI;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.PrinterCommunication;
using MatterHackers.MatterControl.CustomWidgets;
using MatterHackers.MatterControl.SlicerConfiguration;
namespace MatterHackers.MatterControl
{
public class EditPrinterSettingsPage : WizardPage
{
public EditPrinterSettingsPage()
: base("Done")
{
headerLabel.Text = "Current Settings".Localize();
textImageButtonFactory.borderWidth = 1;
textImageButtonFactory.normalBorderColor = RGBA_Bytes.White;
int tabIndex = 0;
AddNameSetting("MatterControl.PrinterName", contentRow, ref tabIndex);
AddNameSetting("MatterControl.AutoConnect", contentRow, ref tabIndex);
AddNameSetting("MatterControl.ComPort", contentRow, ref tabIndex);
AddNameSetting("MatterControl.DeletePrinter", contentRow, ref tabIndex);
footerRow.AddChild(new HorizontalSpacer());
footerRow.AddChild(cancelButton);
cancelButton.Text = "Back".Localize();
}
private void AddNameSetting(string sliceSettingsKey, FlowLayoutWidget contentRow, ref int tabIndex)
{
GuiWidget control = SliceSettingsWidget.CreateSettingControl(sliceSettingsKey, ref tabIndex);
if (control != null)
{
contentRow.AddChild(control);
}
}
}
}

View file

@ -381,7 +381,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
{
addedSettingToSubGroup = true;
bool addControl;
GuiWidget controlsForThisSetting = CreateSettingInfoUIControls(settingData, copyIndex, out addControl);
GuiWidget controlsForThisSetting = CreateSettingInfoUIControls(settingData, layerCascade, persistenceLayer, viewFilter, copyIndex, out addControl, ref tabIndexForItem);
if (addControl)
{
topToBottomSettings.AddChild(controlsForThisSetting);
@ -549,7 +549,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
if (ActiveSliceSettings.Instance.ActiveSliceEngine().MapContains(settingData.SlicerConfigName))
{
bool addControl;
GuiWidget controlsForThisSetting = CreateSettingInfoUIControls(settingData, 0, out addControl);
GuiWidget controlsForThisSetting = CreateSettingInfoUIControls(settingData, layerCascade, persistenceLayer, viewFilter, 0, out addControl, ref tabIndexForItem);
if (addControl)
{
topToBottomSettings.AddChild(controlsForThisSetting);
@ -576,7 +576,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
return leftSideGroupTabs;
}
private GuiWidget GetExtraSettingsWidget(OrganizerSettingsData settingData)
private static GuiWidget GetExtraSettingsWidget(OrganizerSettingsData settingData)
{
var nameHolder = new GuiWidget(HAnchor.ParentLeftRight, VAnchor.FitToChildren | VAnchor.ParentCenter)
{
@ -591,9 +591,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
public static RootedObjectEventHandler SettingChanged = new RootedObjectEventHandler();
private void OnSettingsChanged(OrganizerSettingsData settingData)
static private void OnSettingsChanged(OrganizerSettingsData settingData)
{
SettingChanged.CallEvents(this, new StringEventArgs(settingData.SlicerConfigName));
SettingChanged.CallEvents(null, new StringEventArgs(settingData.SlicerConfigName));
if (settingToReloadUiWhenChanged.Contains(settingData.SlicerConfigName))
{
@ -643,7 +643,30 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
return ActiveSliceSettings.Instance.GetActiveValue(slicerConfigName, layerCascade);
}
private GuiWidget CreateSettingInfoUIControls(OrganizerSettingsData settingData, int extruderIndex, out bool addControl)
public static GuiWidget CreateSettingControl(string sliceSettingsKey, ref int tabIndex)
{
bool addControl;
GuiWidget settingsRow = CreateSettingInfoUIControls(
SliceSettingsOrganizer.Instance.GetSettingsData(sliceSettingsKey),
null,
ActiveSliceSettings.Instance.UserLayer,
NamedSettingsLayers.All,
0,
out addControl,
ref tabIndex
);
if(addControl)
{
return settingsRow;
}
return null;
}
private static GuiWidget CreateSettingInfoUIControls(OrganizerSettingsData settingData, List<SettingsLayer> layerCascade, SettingsLayer persistenceLayer,
NamedSettingsLayers viewFilter,
int extruderIndex, out bool addControl, ref int tabIndexForItem)
{
addControl = true;
GuiWidget container = new GuiWidget();
@ -717,7 +740,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
};
intEditWidget.ActuallNumberEdit.EditComplete += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString());
SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString(), persistenceLayer);
settingsRow.UpdateStyle();
OnSettingsChanged(settingData);
@ -728,7 +751,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
if (settingData.QuickMenuSettings.Count > 0)
{
dataArea.AddChild(CreateQuickMenu(settingData, content, intEditWidget.ActuallNumberEdit.InternalTextEditWidget));
dataArea.AddChild(CreateQuickMenu(settingData, persistenceLayer, content, intEditWidget.ActuallNumberEdit.InternalTextEditWidget, layerCascade));
}
else
{
@ -755,7 +778,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
};
doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString());
SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString(), persistenceLayer);
settingsRow.UpdateStyle();
OnSettingsChanged(settingData);
@ -827,12 +850,12 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
{
foreach (string setting in settingData.SetSettingsOnChange)
{
SaveSetting(setting, numberEdit.Value.ToString() + "mm");
SaveSetting(setting, numberEdit.Value.ToString() + "mm", persistenceLayer);
}
}
// also always save to the local setting
SaveSetting(settingData.SlicerConfigName, numberEdit.Value.ToString());
SaveSetting(settingData.SlicerConfigName, numberEdit.Value.ToString(), persistenceLayer);
settingsRow.UpdateStyle();
OnSettingsChanged(settingData);
};
@ -841,7 +864,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
if (settingData.QuickMenuSettings.Count > 0)
{
dataArea.AddChild(CreateQuickMenu(settingData, content, doubleEditWidget.ActuallNumberEdit.InternalTextEditWidget));
dataArea.AddChild(CreateQuickMenu(settingData, persistenceLayer, content, doubleEditWidget.ActuallNumberEdit.InternalTextEditWidget, layerCascade));
}
else
{
@ -870,7 +893,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
};
doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString());
SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString(), persistenceLayer);
settingsRow.UpdateStyle();
OnSettingsChanged(settingData);
};
@ -914,7 +937,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
text += "%";
}
textEditWidget.Text = text;
SaveSetting(settingData.SlicerConfigName, textEditWidget.Text);
SaveSetting(settingData.SlicerConfigName, textEditWidget.Text, persistenceLayer);
settingsRow.UpdateStyle();
OnSettingsChanged(settingData);
@ -936,7 +959,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
if (settingData.QuickMenuSettings.Count > 0)
{
dataArea.AddChild(CreateQuickMenu(settingData, content, stringEdit.ActualTextEditWidget.InternalTextEditWidget));
dataArea.AddChild(CreateQuickMenu(settingData, persistenceLayer, content, stringEdit.ActualTextEditWidget.InternalTextEditWidget, layerCascade));
}
else
{
@ -990,7 +1013,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
textEditWidget.Text = text;
startingText = stringEdit.Text;
}
SaveSetting(settingData.SlicerConfigName, textEditWidget.Text);
SaveSetting(settingData.SlicerConfigName, textEditWidget.Text, persistenceLayer);
settingsRow.UpdateStyle();
OnSettingsChanged(settingData);
@ -1025,7 +1048,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
if (settingData.QuickMenuSettings.Count > 0)
{
dataArea.AddChild(CreateQuickMenu(settingData, content, stringEdit.ActualTextEditWidget.InternalTextEditWidget));
dataArea.AddChild(CreateQuickMenu(settingData, persistenceLayer, content, stringEdit.ActualTextEditWidget.InternalTextEditWidget, layerCascade));
}
else
{
@ -1053,7 +1076,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
checkBoxWidget.Click += (sender, e) =>
{
bool isChecked = ((CheckBox)sender).Checked;
SaveSetting(settingData.SlicerConfigName, isChecked ? "1" : "0");
SaveSetting(settingData.SlicerConfigName, isChecked ? "1" : "0", persistenceLayer);
settingsRow.UpdateStyle();
OnSettingsChanged(settingData);
@ -1079,7 +1102,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
stringEdit.ActualTextEditWidget.EditComplete += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text);
SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text, persistenceLayer);
settingsRow.UpdateStyle();
OnSettingsChanged(settingData);
@ -1105,7 +1128,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
stringEdit.ActualTextEditWidget.EditComplete += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text.Replace("\n", "\\n"));
SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text.Replace("\n", "\\n"), persistenceLayer);
settingsRow.UpdateStyle();
OnSettingsChanged(settingData);
@ -1141,10 +1164,10 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
selectableOptions.Click += (s, e) =>
{
AddComMenuItems(settingData, settingsRow, selectableOptions);
AddComMenuItems(settingData, persistenceLayer, settingsRow, selectableOptions);
};
AddComMenuItems(settingData, settingsRow, selectableOptions);
AddComMenuItems(settingData, persistenceLayer, settingsRow, selectableOptions);
dataArea.AddChild(selectableOptions);
@ -1203,7 +1226,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
newItem.Selected += (sender, e) =>
{
MenuItem menuItem = ((MenuItem)sender);
SaveSetting(settingData.SlicerConfigName, menuItem.Text);
SaveSetting(settingData.SlicerConfigName, menuItem.Text, persistenceLayer);
settingsRow.UpdateStyle();
@ -1235,7 +1258,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
checkBoxWidget.CheckedStateChanged += (sender, e) =>
{
bool isChecked = ((CheckBox)sender).Checked;
SaveSetting(settingData.SlicerConfigName, isChecked ? "1" : "0");
SaveSetting(settingData.SlicerConfigName, isChecked ? "1" : "0", persistenceLayer);
settingsRow.UpdateStyle();
@ -1281,7 +1304,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
xEditWidget.ActuallNumberEdit.EditComplete += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString());
SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString(), persistenceLayer);
settingsRow.UpdateStyle();
@ -1296,7 +1319,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
yEditWidget.ActuallNumberEdit.EditComplete += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString());
SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString(), persistenceLayer);
settingsRow.UpdateStyle();
@ -1352,7 +1375,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
xEditWidget.ActuallNumberEdit.EditComplete += (sender, e) =>
{
int extruderIndexLocal = extruderIndex;
SaveCommaSeparatedIndexSetting(extruderIndexLocal, settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString());
SaveCommaSeparatedIndexSetting(extruderIndexLocal, layerCascade, settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString(), persistenceLayer);
settingsRow.UpdateStyle();
@ -1368,7 +1391,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
yEditWidget.ActuallNumberEdit.EditComplete += (sender, e) =>
{
int extruderIndexLocal = extruderIndex;
SaveCommaSeparatedIndexSetting(extruderIndexLocal, settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString());
SaveCommaSeparatedIndexSetting(extruderIndexLocal, layerCascade, settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString(), persistenceLayer);
settingsRow.UpdateStyle();
@ -1444,7 +1467,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
{
if (persistenceLayer.ContainsKey(settingData.SlicerConfigName))
{
switch (this.viewFilter)
switch (viewFilter)
{
case NamedSettingsLayers.All:
if (settingData.ShowAsOverride)
@ -1492,7 +1515,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
return container;
}
private void AddComMenuItems(OrganizerSettingsData settingData, SettingsRow settingsRow, DropDownList selectableOptions)
private static void AddComMenuItems(OrganizerSettingsData settingData, SettingsLayer persistenceLayer, SettingsRow settingsRow, DropDownList selectableOptions)
{
selectableOptions.MenuItems.Clear();
string machineSpecificComPortValue = ActiveSliceSettings.Instance.ComPort();
@ -1556,7 +1579,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
return imageBuffer;
}
private GuiWidget CreateQuickMenu(OrganizerSettingsData settingData, GuiWidget content, InternalTextEditWidget internalTextWidget)
private static GuiWidget CreateQuickMenu(OrganizerSettingsData settingData, SettingsLayer persistenceLayer, GuiWidget content, InternalTextEditWidget internalTextWidget, List<SettingsLayer> layerCascade)
{
string sliceSettingValue = GetActiveValue(settingData.SlicerConfigName, layerCascade);
FlowLayoutWidget totalContent = new FlowLayoutWidget();
@ -1576,7 +1599,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
newItem.Selected += (sender, e) =>
{
SaveSetting(settingData.SlicerConfigName, valueLocal);
SaveSetting(settingData.SlicerConfigName, valueLocal, persistenceLayer);
OnSettingsChanged(settingData);
internalTextWidget.Text = valueLocal;
internalTextWidget.OnEditComplete(null);
@ -1590,6 +1613,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
content.VAnchor = VAnchor.ParentCenter;
totalContent.AddChild(content);
EventHandler localUnregisterEvents = null;
SettingChanged.RegisterEvent((sender, e) =>
{
bool foundSetting = false;
@ -1609,12 +1634,17 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
{
selectableOptions.SelectedLabel = "Custom";
}
}, ref unregisterEvents);
}, ref localUnregisterEvents);
totalContent.Closed += (s, e) =>
{
localUnregisterEvents?.Invoke(s, e);
};
return totalContent;
}
private void SaveCommaSeparatedIndexSetting(int extruderIndexLocal, string slicerConfigName, string newSingleValue)
private static void SaveCommaSeparatedIndexSetting(int extruderIndexLocal, List<SettingsLayer> layerCascade, string slicerConfigName, string newSingleValue, SettingsLayer persistenceLayer)
{
string[] settings = GetActiveValue(slicerConfigName, layerCascade).Split(',');
if (settings.Length > extruderIndexLocal)
@ -1641,7 +1671,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
}
string newValue = string.Join(",", settings);
SaveSetting(slicerConfigName, newValue);
SaveSetting(slicerConfigName, newValue, persistenceLayer);
}
protected void ReloadOptions(object sender, EventArgs e)
@ -1649,7 +1679,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
ApplicationController.Instance.ReloadAdvancedControlsPanel();
}
private void SaveSetting(string name, string value)
private static void SaveSetting(string name, string value, SettingsLayer persistenceLayer)
{
if (persistenceLayer == null)
{

View file

@ -1235,7 +1235,7 @@
},
{
"SlicerConfigName": "MatterControl.PrinterName",
"PresentationName": "",
"PresentationName": "Printer Name",
"HelpText": "This is the name of your printer that will be displayed in the choose printer menu.",
"DataEditType": "STRING",
"ExtraSettings": "",