Пример #1
0
        AutomationRequestOutput FindProject(AutomationRequest Request)
        {
            BinaryReader Reader      = new BinaryReader(new MemoryStream(Request.Input.Data));
            string       StreamName  = Reader.ReadString();
            string       ProjectPath = Reader.ReadString();

            for (int ExistingTabIdx = 0; ExistingTabIdx < TabControl.GetTabCount(); ExistingTabIdx++)
            {
                WorkspaceControl ExistingWorkspace = TabControl.GetTabData(ExistingTabIdx) as WorkspaceControl;
                if (ExistingWorkspace != null && String.Compare(ExistingWorkspace.StreamName, StreamName, StringComparison.OrdinalIgnoreCase) == 0 && ExistingWorkspace.SelectedProject != null)
                {
                    string ClientPath = ExistingWorkspace.SelectedProject.ClientPath;
                    if (ClientPath != null && ClientPath.StartsWith("//"))
                    {
                        int SlashIdx = ClientPath.IndexOf('/', 2);
                        if (SlashIdx != -1)
                        {
                            string ExistingProjectPath = ClientPath.Substring(SlashIdx);
                            if (String.Compare(ExistingProjectPath, ProjectPath, StringComparison.OrdinalIgnoreCase) == 0)
                            {
                                return(new AutomationRequestOutput(AutomationRequestResult.Ok, Encoding.UTF8.GetBytes(ExistingWorkspace.SelectedFileName)));
                            }
                        }
                    }
                }
            }

            return(new AutomationRequestOutput(AutomationRequestResult.NotFound));
        }
Пример #2
0
        private void OkButton_Click(object sender, EventArgs e)
        {
            string[] NewGlobalView    = GlobalControl.GetView();
            string[] NewWorkspaceView = WorkspaceControl.GetView();

            if (NewGlobalView.Any(x => x.Contains("//")) || NewWorkspaceView.Any(x => x.Contains("//")))
            {
                if (MessageBox.Show(this, "Custom views should be relative to the stream root (eg. -/Engine/...).\r\n\r\nFull depot paths (eg. //depot/...) will not match any files.\r\n\r\nAre you sure you want to continue?", "Invalid view", MessageBoxButtons.OKCancel) != System.Windows.Forms.DialogResult.OK)
                {
                    return;
                }
            }

            GlobalView             = NewGlobalView;
            bGlobalSyncAllProjects = GlobalControl.SyncAllProjects.Checked;
            bGlobalIncludeAllProjectsInSolution = GlobalControl.IncludeAllProjectsInSolution.Checked;

            WorkspaceView             = NewWorkspaceView;
            bWorkspaceSyncAllProjects = (WorkspaceControl.SyncAllProjects.Checked == bGlobalSyncAllProjects)? (bool?)null : WorkspaceControl.SyncAllProjects.Checked;
            bWorkspaceIncludeAllProjectsInSolution = (WorkspaceControl.IncludeAllProjectsInSolution.Checked == bGlobalIncludeAllProjectsInSolution)? (bool?)null : WorkspaceControl.IncludeAllProjectsInSolution.Checked;

            GetExcludedCategories(out GlobalSyncCategories, out WorkspaceSyncCategories);

            DialogResult = DialogResult.OK;
        }
Пример #3
0
        private void MainWindow_FormClosing(object Sender, FormClosingEventArgs EventArgs)
        {
            if (!bAllowClose && Settings.bKeepInTray)
            {
                Hide();
                EventArgs.Cancel = true;
            }
            else
            {
                for (int Idx = 0; Idx < TabControl.GetTabCount(); Idx++)
                {
                    WorkspaceControl Workspace = (WorkspaceControl)TabControl.GetTabData(Idx);
                    if (!Workspace.CanClose())
                    {
                        EventArgs.Cancel = true;
                        return;
                    }
                }

                ActivationListener.OnActivate -= OnActivationListenerAsyncCallback;
                ActivationListener.Stop();

                UpdateMonitor.OnUpdateAvailable -= OnUpdateAvailable;
                UpdateMonitor.Close();                 // prevent race condition

                StopScheduleTimer();

                Rectangle SaveBounds = (WindowState == FormWindowState.Normal)? Bounds : RestoreBounds;
                Settings.WindowRectangle = SaveBounds;
                Settings.bWindowVisible  = Visible;

                Settings.Save();
            }
        }
Пример #4
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            GUILayout.Label("Deathblow Control Asset");

            GUILayout.Label($"Database loaded: {WorkspaceControl.Database != null}");

            var property = serializedObject.FindProperty("_currentWorkspace");

            var objectReference = property.objectReferenceValue;

            EditorGUILayout.PropertyField(property);

            serializedObject.ApplyModifiedProperties();

            if (objectReference != property.objectReferenceValue || GUILayout.Button("Reload workspace") || property.objectReferenceValue != null && WorkspaceControl.Database == null && !WorkspaceControl.LoadingDatabase)
            {
                WorkspaceControl.UpdateWorkspace((WorkspaceConfiguration)property.objectReferenceValue);
            }

            if (WorkspaceControl.Ok)
            {
                if (WorkspaceControl.SavingDatabase)
                {
                    GUILayout.Label("Saving database...");
                }
                else if (GUILayout.Button("Save workspace"))
                {
                    WorkspaceControl.SaveWorkspace(WorkspaceControl.CurrentWorkspace);
                }
            }
        }
        public void OnClosed(object sender, EventArgs e)
        {
            MainMenu.Dispose();
            WorkspaceControl.Dispose();

            Dispose();
        }
Пример #6
0
        public SyncFilter(Dictionary <Guid, WorkspaceSyncCategory> InUniqueIdToCategory, string[] InGlobalView, Dictionary <Guid, bool> InGlobalSyncCategories, bool bInGlobalProjectOnly, bool bInGlobalIncludeAllProjectsInSolution, string[] InWorkspaceView, Dictionary <Guid, bool> InWorkspaceSyncCategories, bool?bInWorkspaceProjectOnly, bool?bInWorkspaceIncludeAllProjectsInSolution)
        {
            InitializeComponent();

            UniqueIdToCategory     = InUniqueIdToCategory;
            GlobalSyncCategories   = InGlobalSyncCategories;
            GlobalView             = InGlobalView;
            bGlobalSyncAllProjects = bInGlobalProjectOnly;
            bGlobalIncludeAllProjectsInSolution = bInGlobalIncludeAllProjectsInSolution;
            WorkspaceSyncCategories             = InWorkspaceSyncCategories;
            WorkspaceView             = InWorkspaceView;
            bWorkspaceSyncAllProjects = bInWorkspaceProjectOnly;
            bWorkspaceIncludeAllProjectsInSolution = bInWorkspaceIncludeAllProjectsInSolution;

            Dictionary <Guid, bool> SyncCategories = WorkspaceSyncCategory.GetDefault(UniqueIdToCategory.Values);

            WorkspaceSyncCategory.ApplyDelta(SyncCategories, InGlobalSyncCategories);
            GlobalControl.SetView(GlobalView);
            SetExcludedCategories(GlobalControl.CategoriesCheckList, UniqueIdToCategory, SyncCategories);
            GlobalControl.SyncAllProjects.Checked = bGlobalSyncAllProjects;
            GlobalControl.IncludeAllProjectsInSolution.Checked = bGlobalIncludeAllProjectsInSolution;

            WorkspaceSyncCategory.ApplyDelta(SyncCategories, InWorkspaceSyncCategories);
            WorkspaceControl.SetView(WorkspaceView);
            SetExcludedCategories(WorkspaceControl.CategoriesCheckList, UniqueIdToCategory, SyncCategories);
            WorkspaceControl.SyncAllProjects.Checked = bWorkspaceSyncAllProjects ?? bGlobalSyncAllProjects;
            WorkspaceControl.IncludeAllProjectsInSolution.Checked = bWorkspaceIncludeAllProjectsInSolution ?? bGlobalIncludeAllProjectsInSolution;

            GlobalControl.CategoriesCheckList.ItemCheck     += GlobalControl_CategoriesCheckList_ItemCheck;
            GlobalControl.SyncAllProjects.CheckStateChanged += GlobalControl_SyncAllProjects_CheckStateChanged;
            GlobalControl.IncludeAllProjectsInSolution.CheckStateChanged += GlobalControl_IncludeAllProjectsInSolution_CheckStateChanged;
        }
Пример #7
0
 public void StreamChanged(WorkspaceControl Workspace)
 {
     MainThreadSynchronizationContext.Post((o) => { if (!IsDisposed)
                                                    {
                                                        StreamChangedCallback(Workspace);
                                                    }
                                           }, null);
 }
Пример #8
0
        public void BrowseForProject(WorkspaceControl Workspace)
        {
            int TabIdx = TabControl.FindTabIndex(Workspace);

            if (TabIdx != -1)
            {
                BrowseForProject(TabIdx);
            }
        }
Пример #9
0
        public void RequestProjectChange(WorkspaceControl Workspace, string ProjectFileName)
        {
            int TabIdx = TabControl.FindTabIndex(Workspace);

            if (TabIdx != -1)
            {
                TryOpenProject(ProjectFileName, TabIdx);
            }
        }
Пример #10
0
        public void EditSelectedProject(WorkspaceControl Workspace)
        {
            int TabIdx = TabControl.FindTabIndex(Workspace);

            if (TabIdx != -1)
            {
                EditSelectedProject(TabIdx, Workspace.SelectedProject);
            }
        }
Пример #11
0
        public void RequestProjectChange(WorkspaceControl Workspace, UserSelectedProjectSettings Project)
        {
            int TabIdx = TabControl.FindTabIndex(Workspace);

            if (TabIdx != -1)
            {
                TryOpenProject(Project, TabIdx);
            }
        }
Пример #12
0
 private void ScheduleTimerElapsed()
 {
     for (int Idx = 0; Idx < TabControl.GetTabCount(); Idx++)
     {
         WorkspaceControl Workspace = TabControl.GetTabData(Idx) as WorkspaceControl;
         if (Workspace != null)
         {
             Workspace.ScheduleTimerElapsed();
         }
     }
 }
Пример #13
0
 private void StartAutomatedSyncAfterStartup(WorkspaceControl Workspace, bool bCancel, AutomationRequest Request)
 {
     if (bCancel)
     {
         Request.SetOutput(new AutomationRequestOutput(AutomationRequestResult.Canceled));
     }
     else
     {
         Workspace.SyncLatestChange(Result => CompleteAutomatedSync(Result, Workspace.SelectedFileName, Request));
     }
 }
 private void ScheduleSettledTimerElapsed()
 {
     for (int Idx = 0; Idx < TabControl.GetTabCount(); Idx++)
     {
         WorkspaceControl Workspace = TabControl.GetTabData(Idx) as WorkspaceControl;
         if (Workspace != null && (Settings.ScheduleAnyOpenProject || Settings.ScheduleProjects.Contains(Workspace.SelectedProject)))
         {
             Workspace.ScheduleTimerElapsed();
         }
     }
 }
Пример #15
0
        void TabControl_OnTabClosed(object Data)
        {
            WorkspaceControl Workspace = (WorkspaceControl)Data;

            if (CurrentWorkspace == Workspace)
            {
                CurrentWorkspace = null;
            }
            Workspace.Dispose();

            SaveTabSettings();
        }
Пример #16
0
        void SaveTabSettings()
        {
            List <string> OpenProjectFileNames = new List <string>();

            for (int TabIdx = 0; TabIdx < TabControl.GetTabCount(); TabIdx++)
            {
                WorkspaceControl Workspace = (WorkspaceControl)TabControl.GetTabData(TabIdx);
                OpenProjectFileNames.Add(Workspace.SelectedFileName);
            }
            Settings.OpenProjectFileNames = OpenProjectFileNames.ToArray();
            Settings.Save();
        }
Пример #17
0
        public void SetTabNames(TabLabels NewTabNames)
        {
            if (Settings.TabLabels != NewTabNames)
            {
                Settings.TabLabels = NewTabNames;
                Settings.Save();

                for (int Idx = 0; Idx < TabControl.GetTabCount(); Idx++)
                {
                    WorkspaceControl Workspace = (WorkspaceControl)TabControl.GetTabData(Idx);
                    TabControl.SetTabName(Idx, GetTabName(Workspace));
                }
            }
        }
Пример #18
0
        static void Main()
        {
            try
            {
                System.Windows.Forms.Application.EnableVisualStyles();
                System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
                Application.ActiveApplication = new Application();

                //Application.ActiveApplication.

                //To do your work.
                //
                Application.ActiveApplication.PluginManager.PluginLoaded += new SuperMap.Desktop.PluginLoadedEventHandler(PluginManager_PluginLoaded);
                // += new SuperMap.Desktop.PluginLoadedEventHandler(PluginManager_PluginLoaded); ;

                Application.ActiveApplication.SplashForm.Show();
                Application.ActiveApplication.Initialize();
                Application.ActiveApplication.SplashForm.Hide();
                WorkspaceControl workspaceControl = SuperMap.Desktop.Application.ActiveApplication.MainForm.DockBarManager[typeof(WorkspaceControlManager)].Control as WorkspaceControl;
                if (workspaceControl != null)
                {
                    //string path = @"D:\Program Files (x86)\SuperMap\SuperMap iDesktop 7C\Bin\Default.smwu";
                    //    //@"\Default.smwu";
                    //string mm = @"\Default.smwu";
                    //WorkspaceConnectionInfo conInfo1 = new WorkspaceConnectionInfo(path);
                    //bool dd = workspaceControl.WorkspaceTree.Workspace.Open(conInfo1);
                    DatasourceConnectionInfo dataSourceConnectionInfo = new DatasourceConnectionInfo();
                    dataSourceConnectionInfo.Server = @"..\Default.udd";
                    dataSourceConnectionInfo.Alias  = "dafault";
                    Datasource targetDatasource;
                    bool       isExist = File.Exists(dataSourceConnectionInfo.Server);
                    if (isExist)
                    {
                        targetDatasource = workspaceControl.WorkspaceTree.Workspace.Datasources.Open(dataSourceConnectionInfo);

                        //targetDatasource = workspaceControl.WorkspaceTree.Workspace.Datasources[dataSourceConnectionInfo.Alias];
                    }
                    else
                    {
                        targetDatasource = workspaceControl.WorkspaceTree.Workspace.Datasources.Create(dataSourceConnectionInfo);
                    }
                }
                Application.ActiveApplication.Run();
                Application.ActiveApplication.Exit();
            }
            catch (Exception ex)
            {
            }
        }
Пример #19
0
        public SyncFilter(Dictionary <Guid, WorkspaceSyncCategory> InUniqueIdToCategory, string[] InGlobalView, Guid[] InGlobalExcludedCategories, string[] InWorkspaceView, Guid[] InWorkspaceExcludedCategories)
        {
            InitializeComponent();

            UniqueIdToCategory       = InUniqueIdToCategory;
            GlobalExcludedCategories = InGlobalExcludedCategories;
            GlobalView = InGlobalView;
            WorkspaceExcludedCategories = InWorkspaceExcludedCategories;
            WorkspaceView = InWorkspaceView;

            GlobalControl.SetView(GlobalView);
            SetExcludedCategories(GlobalControl.CategoriesCheckList, UniqueIdToCategory, GlobalExcludedCategories);
            WorkspaceControl.SetView(WorkspaceView);
            SetExcludedCategories(WorkspaceControl.CategoriesCheckList, UniqueIdToCategory, WorkspaceExcludedCategories);
        }
Пример #20
0
        public void EditSelectedProject(int TabIdx)
        {
            object TabData = TabControl.GetTabData(TabIdx);

            if (TabData is WorkspaceControl)
            {
                WorkspaceControl Workspace = (WorkspaceControl)TabData;
                EditSelectedProject(TabIdx, Workspace.SelectedProject);
            }
            else if (TabData is ErrorPanel)
            {
                ErrorPanel Error = (ErrorPanel)TabData;
                EditSelectedProject(TabIdx, Error.SelectedProject);
            }
        }
Пример #21
0
        public void RequestProjectChange(WorkspaceControl Workspace, UserSelectedProjectSettings Project, bool bModal)
        {
            int TabIdx = TabControl.FindTabIndex(Workspace);

            if (TabIdx != -1 && !Workspace.IsBusy() && CanFocus)
            {
                if (bModal)
                {
                    TryOpenProject(Project, TabIdx);
                }
                else
                {
                    TryOpenProject(Project, TabIdx, OpenProjectOptions.Quiet);
                }
            }
        }
Пример #22
0
        private void OnUpdateAvailable()
        {
            if (!ContainsFocus && Form.ActiveForm != this)
            {
                for (int TabIdx = 0; TabIdx < TabControl.GetTabCount(); TabIdx++)
                {
                    WorkspaceControl Workspace = (WorkspaceControl)TabControl.GetTabData(TabIdx);
                    if (Workspace.IsBusy())
                    {
                        return;
                    }
                }

                bAllowClose = true;
                Close();
            }
        }
Пример #23
0
 private void ScheduleSettledTimerElapsed()
 {
     Log.WriteLine("Schedule: Starting Sync");
     for (int Idx = 0; Idx < TabControl.GetTabCount(); Idx++)
     {
         WorkspaceControl Workspace = TabControl.GetTabData(Idx) as WorkspaceControl;
         if (Workspace != null)
         {
             Log.WriteLine("Schedule: Considering {0}", Workspace.SelectedFileName);
             if (Settings.ScheduleAnyOpenProject || Settings.ScheduleProjects.Contains(Workspace.SelectedProject))
             {
                 Log.WriteLine("Schedule: Starting Sync");
                 Workspace.ScheduleTimerElapsed();
             }
         }
     }
 }
Пример #24
0
        string GetTabName(WorkspaceControl Workspace)
        {
            switch (Settings.TabLabels)
            {
            case TabLabels.Stream:
                return(Workspace.StreamName);

            case TabLabels.ProjectFile:
                return(Workspace.SelectedFileName);

            case TabLabels.WorkspaceName:
                return(Workspace.ClientName);

            case TabLabels.WorkspaceRoot:
            default:
                return(Workspace.BranchDirectoryName);
            }
        }
Пример #25
0
        public void UpdateProgress()
        {
            TaskbarState State    = TaskbarState.NoProgress;
            float        Progress = -1.0f;

            for (int Idx = 0; Idx < TabControl.GetTabCount(); Idx++)
            {
                WorkspaceControl Workspace = (WorkspaceControl)TabControl.GetTabData(Idx);

                Tuple <TaskbarState, float> DesiredTaskbarState = Workspace.DesiredTaskbarState;
                if (DesiredTaskbarState.Item1 == TaskbarState.Error)
                {
                    State = TaskbarState.Error;
                    TabControl.SetHighlight(Idx, Tuple.Create(Color.FromArgb(204, 64, 64), 1.0f));
                }
                else if (DesiredTaskbarState.Item1 == TaskbarState.Paused && State != TaskbarState.Error)
                {
                    State = TaskbarState.Paused;
                    TabControl.SetHighlight(Idx, Tuple.Create(Color.FromArgb(255, 242, 0), 1.0f));
                }
                else if (DesiredTaskbarState.Item1 == TaskbarState.Normal && State != TaskbarState.Error && State != TaskbarState.Paused)
                {
                    State    = TaskbarState.Normal;
                    Progress = Math.Max(Progress, DesiredTaskbarState.Item2);
                    TabControl.SetHighlight(Idx, Tuple.Create(Color.FromArgb(28, 180, 64), DesiredTaskbarState.Item2));
                }
                else
                {
                    TabControl.SetHighlight(Idx, null);
                }
            }

            if (State == TaskbarState.Normal)
            {
                Taskbar.SetState(Handle, TaskbarState.Normal);
                Taskbar.SetProgress(Handle, (ulong)(Progress * 1000.0f), 1000);
            }
            else
            {
                Taskbar.SetState(Handle, State);
            }
        }
Пример #26
0
        private void OkButton_Click(object sender, EventArgs e)
        {
            string[] NewGlobalView    = GlobalControl.GetView();
            string[] NewWorkspaceView = WorkspaceControl.GetView();

            if (NewGlobalView.Any(x => x.Contains("//")) || NewWorkspaceView.Any(x => x.Contains("//")))
            {
                if (MessageBox.Show(this, "Custom views should be relative to the stream root (eg. -/Engine/...).\r\n\r\nFull depot paths (eg. //depot/...) will not match any files.\r\n\r\nAre you sure you want to continue?", "Invalid view", MessageBoxButtons.OKCancel) != System.Windows.Forms.DialogResult.OK)
                {
                    return;
                }
            }

            GlobalView = NewGlobalView;
            GlobalExcludedCategories    = GetExcludedCategories(GlobalControl.CategoriesCheckList, GlobalExcludedCategories);
            WorkspaceView               = NewWorkspaceView;
            WorkspaceExcludedCategories = GetExcludedCategories(WorkspaceControl.CategoriesCheckList, WorkspaceExcludedCategories);

            DialogResult = DialogResult.OK;
        }
Пример #27
0
        public SampleRun(WorkspaceControl workspaceControl,
                         LayersControl layersControl,
                         MapControl mapControl,
                         MapControl mapControl2,
                         MapLayoutControl mapLayoutControl1,
                         ToolStripStatusLabel toolStripStatusLabel2,
                         TextBox textBoxResult,
                         ToolStripStatusLabel toolStripStatusLabel3,
                         SceneControl scenecontrol
                         )
        {
            workspaceControl1    = workspaceControl;
            workspace1           = workspaceControl1.WorkspaceTree.Workspace;
            layersControl1       = layersControl;
            mapControl1          = mapControl;
            m_mapControlEagleEye = mapControl2;
            m_mapLayoutControl   = mapLayoutControl1;
            m_toolStrip          = toolStripStatusLabel2;
            m_textBoxResult      = textBoxResult;
            scontrol             = scenecontrol;
            label1        = toolStripStatusLabel3;
            m_datasource  = workspace1.Datasources[0];
            m_point3Ds    = new Point3Ds();
            m_pointName   = "Point";
            m_geoLine3D   = new GeoLine3D();
            m_point3DsAll = new Point3Ds();

            m_flyManager = scontrol.Scene.FlyManager;
            m_flyManager.Routes.Clear();
            m_flyManager.Scene = scontrol.Scene;

            m_mapControlEagleEye.MouseMove            += new MouseEventHandler(EagleEyeMapMouseMoveHandler);
            m_mapControlEagleEye.MouseDown            += new MouseEventHandler(EagleEyeMapMouseDownHandler);
            m_mapControlEagleEye.MouseUp              += new MouseEventHandler(EagleEyeMapMouseUpHandler);
            m_mapControlEagleEye.ActionCursorChanging += new ActionCursorChangingEventHandler(EagleEyeMapCursorChangedHandler);
            mapControl1.Map.Drawn += new MapDrawnEventHandler(MainMapDrawnHandler);
            scontrol.MouseDown    += new System.Windows.Forms.MouseEventHandler(m_sceneControl_MouseDown);
            scontrol.MouseMove    += new System.Windows.Forms.MouseEventHandler(m_sceneControl_MouseMove);
            Initialize();
        }
Пример #28
0
        public void StreamChangedCallback(WorkspaceControl Workspace)
        {
            if (ChangingWorkspacesRefCount == 0)
            {
                ChangingWorkspacesRefCount++;

                for (int Idx = 0; Idx < TabControl.GetTabCount(); Idx++)
                {
                    if (TabControl.GetTabData(Idx) == Workspace)
                    {
                        string ProjectFileName = Workspace.SelectedFileName;
                        if (TryOpenProject(ProjectFileName, Idx) == -1)
                        {
                            TabControl.RemoveTab(Idx);
                        }
                        break;
                    }
                }

                ChangingWorkspacesRefCount--;
            }
        }
Пример #29
0
        void TabControl_OnTabChanged(object NewTabData)
        {
            SendMessage(Handle, WM_SETREDRAW, 0, 0);
            SuspendLayout();

            if (CurrentWorkspace != null)
            {
                CurrentWorkspace.Deactivate();
                CurrentWorkspace.Hide();
            }

            if (NewTabData == null)
            {
                CurrentWorkspace             = null;
                Settings.LastProjectFileName = null;
                DefaultControl.Show();
            }
            else
            {
                CurrentWorkspace             = (WorkspaceControl)NewTabData;
                Settings.LastProjectFileName = CurrentWorkspace.SelectedFileName;
                DefaultControl.Hide();
            }

            Settings.Save();

            if (CurrentWorkspace != null)
            {
                CurrentWorkspace.Activate();
                CurrentWorkspace.Show();
            }

            ResumeLayout();

            SendMessage(Handle, WM_SETREDRAW, 1, 0);
            Refresh();
        }
Пример #30
0
        public SyncFilter(Dictionary <Guid, WorkspaceSyncCategory> InUniqueIdToCategory, string[] InGlobalView, Guid[] InGlobalExcludedCategories, bool bInGlobalProjectOnly, string[] InWorkspaceView, Guid[] InWorkspaceIncludedCategories, Guid[] InWorkspaceExcludedCategories, bool?bInWorkspaceProjectOnly)
        {
            InitializeComponent();

            UniqueIdToCategory       = InUniqueIdToCategory;
            GlobalExcludedCategories = InGlobalExcludedCategories;
            GlobalView                  = InGlobalView;
            bGlobalSyncAllProjects      = bInGlobalProjectOnly;
            WorkspaceIncludedCategories = InWorkspaceIncludedCategories;
            WorkspaceExcludedCategories = InWorkspaceExcludedCategories;
            WorkspaceView               = InWorkspaceView;
            bWorkspaceSyncAllProjects   = bInWorkspaceProjectOnly ?? bGlobalSyncAllProjects;

            GlobalControl.SetView(GlobalView);
            SetExcludedCategories(GlobalControl.CategoriesCheckList, UniqueIdToCategory, GlobalExcludedCategories);
            GlobalControl.SyncAllProjects.Checked = bGlobalSyncAllProjects;

            WorkspaceControl.SetView(WorkspaceView);
            SetExcludedCategories(WorkspaceControl.CategoriesCheckList, UniqueIdToCategory, UserSettings.GetEffectiveExcludedCategories(GlobalExcludedCategories, WorkspaceIncludedCategories, WorkspaceExcludedCategories));
            WorkspaceControl.SyncAllProjects.Checked = bWorkspaceSyncAllProjects ?? bGlobalSyncAllProjects;

            GlobalControl.CategoriesCheckList.ItemCheck     += GlobalControl_CategoriesCheckList_ItemCheck;
            GlobalControl.SyncAllProjects.CheckStateChanged += GlobalControl_SyncAllProjects_CheckStateChanged;
        }