2016-07-12 13:36:47 -07:00
/ *
Copyright ( c ) 2016 , 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 System ;
using MatterHackers.Agg.PlatformAbstract ;
using MatterHackers.Agg.UI ;
using MatterHackers.Localizations ;
using MatterHackers.MatterControl ;
using MatterHackers.MatterControl.CustomWidgets ;
using MatterHackers.Agg ;
using System.Collections.Generic ;
2016-07-13 17:10:35 -07:00
using MatterHackers.MatterControl.SlicerConfiguration ;
2016-07-12 13:36:47 -07:00
namespace MatterHackers.MatterControl
{
public class CopyGuestProfilesToUser : WizardPage
{
2016-07-14 11:39:19 -07:00
static string importMessage = "It's time to upload your existing printers to your MatterHackers account. Once uploaded, these printers will be available every time you log into MatterControl." . Localize ( ) ;
2016-07-12 13:36:47 -07:00
List < CheckBox > checkBoxes = new List < CheckBox > ( ) ;
2016-07-13 17:10:35 -07:00
public CopyGuestProfilesToUser ( Action afterProfilesImported )
2016-07-21 17:15:47 -07:00
: base ( "Cancel" , "Select Printers to Sync" )
2016-07-12 13:36:47 -07:00
{
var scrollWindow = new ScrollableWidget ( )
{
AutoScroll = true ,
HAnchor = HAnchor . ParentLeftRight ,
VAnchor = VAnchor . ParentBottomTop ,
} ;
scrollWindow . ScrollArea . HAnchor = HAnchor . ParentLeftRight ;
contentRow . AddChild ( scrollWindow ) ;
var container = new FlowLayoutWidget ( FlowDirection . TopToBottom )
{
HAnchor = HAnchor . ParentLeftRight ,
} ;
scrollWindow . AddChild ( container ) ;
2016-07-27 17:17:33 -07:00
container . AddChild ( new WrappedTextWidget ( importMessage , textColor : ActiveTheme . Instance . PrimaryTextColor ) ) ;
2016-07-12 13:36:47 -07:00
2016-07-13 17:10:35 -07:00
var byCheckbox = new Dictionary < CheckBox , PrinterInfo > ( ) ;
2016-07-12 13:36:47 -07:00
2016-07-13 17:10:35 -07:00
var guestProfileManager = ProfileManager . LoadGuestDB ( ) ;
2016-07-14 11:34:05 -07:00
if ( guestProfileManager ? . Profiles . Count > 0 )
2016-07-12 13:36:47 -07:00
{
2016-07-21 17:15:47 -07:00
container . AddChild ( new TextWidget ( "Printers to Sync:" . Localize ( ) )
2016-07-12 13:36:47 -07:00
{
TextColor = ActiveTheme . Instance . PrimaryTextColor ,
Margin = new BorderDouble ( 0 , 3 , 0 , 15 ) ,
} ) ;
2016-07-13 17:10:35 -07:00
foreach ( var printerInfo in guestProfileManager . Profiles )
2016-07-12 13:36:47 -07:00
{
2016-07-13 17:10:35 -07:00
var checkBox = new CheckBox ( printerInfo . Name )
2016-07-12 13:36:47 -07:00
{
TextColor = ActiveTheme . Instance . PrimaryTextColor ,
Margin = new BorderDouble ( 5 , 0 , 0 , 0 ) ,
HAnchor = HAnchor . ParentLeft ,
2016-07-14 11:39:19 -07:00
Checked = true ,
2016-07-12 13:36:47 -07:00
} ;
2016-07-13 17:10:35 -07:00
checkBoxes . Add ( checkBox ) ;
container . AddChild ( checkBox ) ;
byCheckbox [ checkBox ] = printerInfo ;
2016-07-12 13:36:47 -07:00
}
}
2016-07-21 17:15:47 -07:00
var uploadButton = textImageButtonFactory . Generate ( "Sync" . Localize ( ) ) ;
2016-07-14 11:39:19 -07:00
uploadButton . Click + = ( s , e ) = >
2016-07-12 13:36:47 -07:00
{
// do the import
2016-07-13 17:10:35 -07:00
foreach ( var checkBox in checkBoxes )
2016-07-12 13:36:47 -07:00
{
if ( checkBox . Checked )
{
// import the printer
2016-07-13 17:10:35 -07:00
var printerInfo = byCheckbox [ checkBox ] ;
2016-07-12 13:36:47 -07:00
2016-07-13 17:10:35 -07:00
ProfileManager . Instance . Profiles . Add ( printerInfo ) ;
guestProfileManager . Profiles . Remove ( printerInfo ) ;
2016-07-12 13:36:47 -07:00
}
}
2016-07-13 17:10:35 -07:00
guestProfileManager . Save ( ) ;
2016-07-12 13:36:47 -07:00
// close the window
2016-07-13 17:10:35 -07:00
UiThread . RunOnIdle ( ( ) = >
{
WizardWindow . Close ( ) ;
// Call back into the original source
afterProfilesImported ( ) ;
} ) ;
2016-07-12 13:36:47 -07:00
} ;
2016-07-14 11:39:19 -07:00
uploadButton . Visible = true ;
2016-07-12 13:36:47 -07:00
cancelButton . Visible = true ;
cancelButton . Click + = ( s , e ) = > UiThread . RunOnIdle ( WizardWindow . Close ) ;
//Add buttons to buttonContainer
2016-07-14 11:39:19 -07:00
footerRow . AddChild ( uploadButton ) ;
2016-07-12 13:36:47 -07:00
footerRow . AddChild ( new HorizontalSpacer ( ) ) ;
footerRow . AddChild ( cancelButton ) ;
footerRow . Visible = true ;
}
}
}