示例#1
0
        /// <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;
                }
            });
        }