/// <summary> /// Starts the execution of the application product. /// </summary> public static void Start() { Application.Current.MainWindow.Cursor = Cursors.Wait; AppExec.LoadConfigurationFrom(); WorkspaceDirector = new WorkspaceManager(ShellHost); DocumentVisualizerControl = new WidgetDocumentVisualizer(); IdeaPaletteControl = new WidgetItemsPaletteGroup(); MarkerPaletteControl = new WidgetItemsPaletteGroup(); ComplementPaletteControl = new WidgetItemsPaletteGroup(); CompositionDirector = new CompositionsManager("Composition Manager", "CompositionManager", "Manager for the Composition work-sphere.", Display.GetAppImage("page_white_edit.png"), WorkspaceDirector, DocumentVisualizerControl, IdeaPaletteControl, MarkerPaletteControl, ComplementPaletteControl); DomainDirector = new DomainsManager("Domain Manager", "DomainManager", "Manager for the Domain work-sphere.", Display.GetAppImage("book_edit.png"), WorkspaceDirector, DocumentVisualizerControl, IdeaPaletteControl); WorkSphereManagers.Add(CompositionDirector); WorkSphereManagers.Add(DomainDirector); CompositionDirector.ExposeCommands(); DomainDirector.ExposeCommands(); InitializeUserInterface(); ProcessCommandLineArguments(); Application.Current.MainWindow.PostCall( wnd => { // IMPORTANT: This prevents to get some static constructors called when INSIDE A COMMAND, which can roll-back // important fields (set to null/default) when user clicks a Cancel button on an editing form. AppExec.InvokeAllStaticConstructors(); ValidateLicense(); Console.WriteLine(ProductDirector.APPLICATION_NAME + " " + ProductDirector.APPLICATION_VERSION + " Copyright (C) " + ProductDirector.APPLICATION_COPYRIGHT_YEARS + " " + Company.NAME_LEGAL); Console.WriteLine("License: " + AppExec.LicenseType.Name + ". Edition: " + AppExec.LicenseEdition.Name + ". Mode: " + AppExec.LicenseMode.Name + ". Expiration: " + (AppExec.LicenseExpiration == General.EMPTY_DATE ? "NEVER" : AppExec.LicenseExpiration.ToShortDateString()) + "."); // Console.WriteLine("Started."); ProductUpdateDaylyDetection(); Application.Current.MainWindow.Cursor = Cursors.Arrow; }); }
public static void MergeCompositions() { // if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_PROFESSIONAL, "Generate Files", false, new DateTime(2013, 6, 22))) // return; var Target = ProductDirector.WorkspaceDirector.ActiveDocument as Composition; if (Target == null) { return; } Composition SelectedSource = null; var AvailableCompos = ProductDirector.WorkspaceDirector.Documents.CastAs <Composition, ISphereModel>() .Except(Target.IntoEnumerable()).ToList <IRecognizableElement>(); if (AvailableCompos.Any()) { var OpenCode = Guid.NewGuid().ToString(); AvailableCompos.Insert(0, new SimplePresentationElement("<OPEN>", OpenCode, "Open an external Composition/Domain file.", Display.GetAppImage("folder_page_white.png"))); var SourceSelection = Display.DialogMultiOption("Select source...", "Please select the Source Composition/Domain from which to extract", null, null, true, OpenCode, AvailableCompos.ToArray()); if (SourceSelection == null) { return; } SelectedSource = AvailableCompos.FirstOrDefault(com => com.TechName == SourceSelection) as Composition; } System.Windows.Input.Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait; System.Windows.Application.Current.MainWindow.PostCall( wnd => { // Evaluated apart because no Compos were available, or because the "<OPEN>" option was choosen. if (SelectedSource == null) { SelectedSource = CompositionsManager.OpenComposition(); // Must re-activate target/previous-current Composition if (ProductDirector.WorkspaceDirector.ActiveDocument != Target) { ProductDirector.WorkspaceDirector.ActivateDocument(Target); } } wnd.PostCall(wd => System.Windows.Input.Mouse.OverrideCursor = null, true); if (SelectedSource == null) { return; } if (!MergingManager.PrepareAndMergeCompositions(SelectedSource, Target.OwnerComposition)) { return; } }); }