Workarounds for DesignTools Android

This commit is contained in:
John Lewin 2017-06-14 19:25:00 -07:00
parent 7e3c2ff4b6
commit d950e76722
8 changed files with 11 additions and 149 deletions

View file

@ -737,7 +737,12 @@ namespace MatterHackers.MatterControl
// Accessing any property on ProfileManager will run the static constructor and spin up the ProfileManager instance
bool na = ProfileManager.Instance.IsGuestProfile;
// TODO: Short-term workaround to force DesktopView on Android
#if __ANDROID__
if (false)
#else
if (UserSettings.Instance.IsTouchScreen)
#endif
{
// and make sure we have the check for print recovery wired up needed for lazy tabs.
var temp2 = PrintHistoryData.Instance;

View file

@ -59,7 +59,7 @@ namespace MatterHackers.MatterControl.Library
this.ChildContainers = new List<ILibraryContainerLink>();
this.Items = new List<ILibraryItem>();
#if !__ANDROID__
if (OsInformation.OperatingSystem == OSType.Windows)
{
directoryWatcher = new FileSystemWatcher(path);
@ -77,7 +77,7 @@ namespace MatterHackers.MatterControl.Library
// Begin watching.
directoryWatcher.EnableRaisingEvents = true;
}
#endif
GetFilesAndCollectionsInCurrentDirectory();
}

View file

@ -2,6 +2,7 @@
using MatterHackers.PolygonMesh;
using MatterHackers.VectorMath;
using System.Linq;
using MatterHackers.DataConverters3D;
namespace MatterHackers.MatterControl.PartPreviewWindow
{

View file

@ -1,139 +0,0 @@
/*
Copyright (c) 2014, Lars Brubaker
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 MatterHackers.Agg.UI;
using MatterHackers.Localizations;
using MatterHackers.PolygonMesh;
using System.ComponentModel;
using System.Globalization;
using System.Threading;
using System.Threading.Tasks;
using System;
namespace MatterHackers.MatterControl.PartPreviewWindow
{
public partial class View3DWidget
{
private string PartsNotPrintableMessage = "Parts are not on the bed or outside the print area.\n\nWould you like to center them on the bed?".Localize();
private string PartsNotPrintableTitle = "Parts not in print area".Localize();
private void CreateSelectionData()
{
processingProgressControl.ProcessType = "Preparing Meshes".Localize() + ":";
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
PushMeshGroupDataToAsynchLists(TraceInfoOpperation.DONT_COPY);
asyncPlatingDatas.Clear();
double ratioPerMeshGroup = 1.0 / asyncMeshGroups.Count;
double currentRatioDone = 0;
for (int i = 0; i < asyncMeshGroups.Count; i++)
{
asyncPlatingDatas.Add(new PlatingMeshGroupData());
// create the selection info
PlatingHelper.CreateITraceableForMeshGroup(asyncPlatingDatas, asyncMeshGroups, i, (double progress0To1, string processingState, out bool continueProcessing) =>
{
ReportProgressChanged(progress0To1, processingState, out continueProcessing);
});
currentRatioDone += ratioPerMeshGroup;
}
bool continueProcessing2;
ReportProgressChanged(1, "Creating GL Data", out continueProcessing2);
meshViewerWidget.CreateGlDataForMeshes(asyncMeshGroups);
}
private async void EnterEditAndCreateSelectionData()
{
if (enterEditButtonsContainer.Visible == true)
{
enterEditButtonsContainer.Visible = false;
}
viewControls3D.ActiveButton = ViewControls3DButtons.PartSelect;
if (MeshGroups.Count > 0)
{
processingProgressControl.Visible = true;
LockEditControls();
viewIsInEditModePreLock = true;
await Task.Run((System.Action)CreateSelectionData);
if (HasBeenClosed)
{
return;
}
// remove the original mesh and replace it with these new meshes
PullMeshGroupDataFromAsynchLists();
SelectedMeshGroupIndex = 0;
buttonRightPanel.Visible = true;
UnlockEditControls();
viewControls3D.ActiveButton = ViewControls3DButtons.PartSelect;
Invalidate();
if (DoAddFileAfterCreatingEditData)
{
FileDialog.OpenFileDialog(
new OpenFileDialogParams(ApplicationSettings.OpenDesignFileParams, multiSelect: true),
(openParams) =>
{
LoadAndAddPartsToPlate(openParams.FileNames);
});
DoAddFileAfterCreatingEditData = false;
}
else if (pendingPartsToLoad.Count > 0)
{
LoadAndAddPartsToPlate(pendingPartsToLoad.ToArray());
pendingPartsToLoad.Clear();
}
else
{
if (!PartsAreInPrintVolume())
{
UiThread.RunOnIdle(() =>
{
StyledMessageBox.ShowMessageBox((doCentering) =>
{
if (doCentering)
{
AutoArrangePartsInBackground();
}
}, PartsNotPrintableMessage, PartsNotPrintableTitle, StyledMessageBox.MessageType.YES_NO, "Center on Bed".Localize(), "Cancel".Localize());
});
}
}
}
}
}
}

View file

@ -179,9 +179,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public UndoBuffer UndoBuffer { get; private set; } = new UndoBuffer();
public readonly int EditButtonHeight = 44;
private static string PartsNotPrintableMessage = "Parts are not on the bed or outside the print area.\n\nWould you like to center them on the bed?".Localize();
private static string PartsNotPrintableTitle = "Parts not in print area".Localize();
private bool editorThatRequestedSave = false;
private ExportPrintItemWindow exportingWindow = null;
private ObservableCollection<GuiWidget> extruderButtons = new ObservableCollection<GuiWidget>();

View file

@ -1280,9 +1280,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
case SliceSettingData.DataEditTypes.COM_PORT:
{
#if __ANDROID__
addControl = false;
#endif
// TODO: Conditionally opt out on Android
EventHandler localUnregisterEvents = null;

@ -1 +1 @@
Subproject commit ea2da9ad610b757d64499686f617c5d1bb1555da
Subproject commit 9fed1dfbc62ed687a752c665a34e887fc9b2e7a2

View file

@ -122,7 +122,7 @@ namespace MatterHackers.MatterControl.FieldValidation
{
public delegate ValidationStatus ValidationHandler(string valueToValidate);
private MHTextEditWidget FieldEditWidget { get; set; }
public MHTextEditWidget FieldEditWidget { get; set; }
public TextWidget FieldErrorMessageWidget { get; set; }