Exemple #1
0
        public PlateTypeManager_old()
        {
            InitializeComponent();


            // Initialize data in the XamDataGrid - NOTE: A blank record is added FIRST, this is key to this approach for the XamDataGrid
            wgDB = new WaveguideDB();

            bool success = wgDB.GetAllPlateTypes();

            if (success)
            {
                PlateTypeContainer blank = new PlateTypeContainer();
                source.Add(blank);  // this is needed to hold the item to be added to the list, This is the "AddRecord"
                blank.Rows        = 16;
                blank.Cols        = 24;
                blank.Description = "";
                blank.PlateTypeID = 0;
                blank.IsDefault   = false;

                for (int i = 0; i < wgDB.m_plateTypeList.Count(); i++)
                {
                    source.Add(wgDB.m_plateTypeList[i]);
                }
            }

            xamDataGrid.DataSource = source;
        }
Exemple #2
0
        private void DeleteProjectPB_Click(object sender, RoutedEventArgs e)
        {
            DataRecord record = (DataRecord)projectXamDataGrid.ActiveRecord;

            if (record == null)
            {
                return;
            }


            if (record != null)
            {
                ProjectSimple project = (ProjectSimple)record.DataItem;

                string MsgStr = "Are you sure that you want to DELETE Project: " + project.Description + "?";

                MessageBoxResult result =
                    MessageBox.Show(MsgStr, "Delete Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
                if (result == MessageBoxResult.Yes)
                {
                    WaveguideDB wgDB    = new WaveguideDB();
                    bool        success = wgDB.RemoveProjectFromUserProjectTable(project.ProjectID);
                    if (success)
                    {
                        success = wgDB.DeleteProject(project.ProjectID);
                        if (success)
                        {
                            ProjectVM.Refresh();
                        }
                    }
                }
            }
        }
Exemple #3
0
            public void LoadFilters()
            {
                EmissionsFilterList  = new ObservableCollection <FilterContainer>();
                ExcitationFilterList = new ObservableCollection <FilterContainer>();

                WaveguideDB wgDB = new WaveguideDB();

                bool success = wgDB.GetAllFilters();

                if (success)
                {
                    foreach (FilterContainer filter in wgDB.m_filterList)
                    {
                        if (filter.FilterChanger == (int)FilterChangerEnum.Emission)
                        {
                            EmissionsFilterList.Add(filter);
                        }
                        else if (filter.FilterChanger == (int)FilterChangerEnum.Excitation)
                        {
                            ExcitationFilterList.Add(filter);
                        }
                    }
                }

                LoadSignalTypes();
            }
Exemple #4
0
        private void DeletePB_Click(object sender, RoutedEventArgs e)
        {
            DataRecord record = (DataRecord)filterXamDataGrid.ActiveRecord;

            if (record == null)
            {
                return;
            }

            if (record != null)
            {
                FilterContainer filter = (FilterContainer)record.DataItem;

                string MsgStr = "Are you sure that you want to DELETE Filter: " + ((FilterChangerEnum)filter.FilterChanger).ToString() + ":"
                                + ((FilterPositionEnum)filter.PositionNumber).ToString() + " "
                                + filter.Description + "?";

                MessageBoxResult result =
                    MessageBox.Show(MsgStr, "Delete Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
                if (result == MessageBoxResult.Yes)
                {
                    WaveguideDB wgDB    = new WaveguideDB();
                    bool        success = wgDB.DeleteFilter(filter.FilterID);

                    if (success)
                    {
                        FilterVM.Refresh();
                    }
                }
            }
        }
Exemple #5
0
            public EditProjectVM(int projectID)
            {
                ProjectID = projectID;

                WaveguideDB wgDB = new WaveguideDB();
                bool        success;

                ProjectContainer pc;

                if (projectID != 0)
                {
                    success = wgDB.GetProject(ProjectID, out pc);
                }
                else
                {
                    pc             = new ProjectContainer();
                    pc.Description = "";
                    pc.ProjectID   = 0;
                    pc.Archived    = false;
                    pc.TimeStamp   = DateTime.Now;
                    success        = true;
                }

                if (success)
                {
                    ProjectDescription = pc.Description;
                    Archived           = pc.Archived;
                    TimeStamp          = pc.TimeStamp;
                    ProjectID          = pc.ProjectID;
                }

                Users = new BindingList <UserItem>();
            }
Exemple #6
0
        public UserViewModel()
        {
            wgDB   = new WaveguideDB();
            _users = new BindingList <UserSimple>();

            Refresh();
        }
Exemple #7
0
            public void Refresh()
            {
                WaveguideDB wgDB = new WaveguideDB();

                bool success = wgDB.GetAllUsers();

                Users.Clear();

                if (success)
                {
                    for (int i = 0; i < wgDB.m_userList.Count(); i++)
                    {
                        UserItem uitem = new UserItem();
                        uitem.UserID            = wgDB.m_userList[i].UserID;
                        uitem.Fullname          = wgDB.m_userList[i].Lastname + ", " + wgDB.m_userList[i].Firstname;
                        uitem.AssignedToProject = false;

                        bool IsAssigned = new bool();
                        IsAssigned = false;
                        success    = wgDB.IsUserAssignedToProject(wgDB.m_userList[i].UserID, ProjectID, ref IsAssigned);
                        if (success)
                        {
                            uitem.AssignedToProject = IsAssigned;
                        }

                        Users.Add(uitem);
                    }
                }
            }
Exemple #8
0
        public ReportDialog(ProjectContainer project, ExperimentContainer experiment,
                            ObservableCollection <ExperimentIndicatorContainer> expIndicatorList)
        {
            m_project          = project;
            m_experiment       = experiment;
            m_expIndicatorList = expIndicatorList;

            VM     = new ViewModel_ReportDialog();
            m_wgDB = new WaveguideDB();

            m_reportWriter = new ReportWriter(m_project, m_experiment);

            InitializeComponent();

            this.DataContext = VM;

            VM.Directory = GlobalVars.DefaultReportFileDirectory;

            VM.Filename = m_reportWriter.GetDefaultFilename();

            WaveGuideRB.IsChecked = true;
            VM.ReportFormat       = REPORT_FILEFORMAT.WAVEGUIDE;

            SetAnalysisList();


            bool ok = m_reportWriter.SuccessfullyInitialized();

            if (!ok)
            {
                string errMsg = m_reportWriter.GetLastErrorString();
                System.Windows.MessageBox.Show("Error initializing the Report Writer: " +
                                               errMsg, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Exemple #9
0
        private void DeleteUserPB_Click(object sender, RoutedEventArgs e)
        {
            DataRecord record = (DataRecord)userXamDataGrid.ActiveRecord;

            if (record == null)
            {
                return;
            }


            if (record != null)
            {
                UserSimple user = (UserSimple)record.DataItem;

                string MsgStr = "Are you sure that you want to DELETE User: "******" " + user.Lastname + "?";

                MessageBoxResult result =
                    MessageBox.Show(MsgStr, "Delete Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
                if (result == MessageBoxResult.Yes)
                {
                    WaveguideDB wgDB    = new WaveguideDB();
                    bool        success = wgDB.RemoveUserFromUserProjectTable(user.UserID);
                    if (success)
                    {
                        success = wgDB.DeleteUser(user.UserID);
                        if (success)
                        {
                            UserVM.Refresh();
                        }
                    }
                }
            }
        }
Exemple #10
0
        public IndicatorSettingsEditor(ExperimentIndicatorContainer indicator)
        {
            InitializeComponent();

            if (indicator == null)
            {
                return;
            }

            m_indicator = indicator;

            wgDB = new WaveguideDB();


            m_PlotLimits        = new PlotLimit();
            m_PlotLimits.m_xmax = 100;
            m_PlotLimits.m_ymax = 1023;

            m_image = null;

            m_imageHistogram = new ObservableCollection <HistogramBar>();

            Init();

            this.DataContext = m_indicator;

            Test_Image_Load();
        }
Exemple #11
0
        public ColorModelEditor()
        {
            InitializeComponent();

            wgDB = new WaveguideDB();

            m_isDragging = false;

            m_PlotLimits        = new PlotLimit();
            m_PlotLimits.m_xmax = 100;
            m_PlotLimits.m_ymax = 1023;

            m_image = null;

            m_imageHistogram = new ObservableCollection <HistogramBar>();

            ControlChart.MouseLeftButtonDown += ControlChart_MouseLeftButtonDown;
            ControlChart.MouseLeftButtonUp   += ControlChart_MouseLeftButtonUp;
            ControlChart.MouseMove           += ControlChart_MouseMove;
            ControlChart.MouseLeave          += ControlChart_MouseLeave;

            ControlChart_Xaxis.DataContext = m_PlotLimits;
            ControlChart_Yaxis.DataContext = m_PlotLimits;

            InitDefaultColorModel();
        }
Exemple #12
0
        void SetPlateTypeIsDefault(PlateTypeItem pti, bool isDefault)
        {
            bool success;

            if (wgDB == null)
            {
                wgDB = new WaveguideDB();
            }

            if (isDefault)  //  setting isDefault to true, need to set any other PlateTypeItem.PlateType.IsDefault that is true to false, so
                            //  that there's only on of them set to default
            {
                foreach (PlateTypeItem ptItem in VM.PlateTypeList)
                {
                    if (ptItem.PlateType.IsDefault)
                    {
                        ptItem.PlateType.IsDefault = false;

                        success = wgDB.UpdatePlateType(ptItem.PlateType);
                    }
                }
            }

            // setting isDefault to false, do just have to update the PlateType

            pti.PlateType.IsDefault = isDefault;

            success = wgDB.UpdatePlateType(pti.PlateType);

            if (!success)
            {
                MessageBox.Show("Failed to Update PlateType", wgDB.GetLastErrorMsg(), MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Exemple #13
0
        private void OkPB_Click(object sender, RoutedEventArgs e)
        {
            MaskContainer mc = new MaskContainer();

            mc.MaskID           = m_mask.Mask.MaskID;
            mc.Angle            = m_mask.Mask.Angle;
            mc.Cols             = m_mask.Mask.Cols;
            mc.Description      = m_mask.Mask.Description;
            mc.IsDefault        = m_mask.Mask.IsDefault;
            mc.PlateTypeID      = m_mask.Mask.PlateTypeID;
            mc.ReferenceImageID = m_mask.Mask.ReferenceImageID;
            mc.Rows             = m_mask.Mask.Rows;
            mc.Shape            = m_mask.Mask.Shape;
            mc.XOffset          = m_mask.Mask.XOffset;
            mc.XSize            = m_mask.Mask.XSize;
            mc.XStep            = m_mask.Mask.XStep;
            mc.YOffset          = m_mask.Mask.YOffset;
            mc.YSize            = m_mask.Mask.YSize;
            mc.YStep            = m_mask.Mask.YStep;

            if (wgDB == null)
            {
                wgDB = new WaveguideDB();
            }

            bool success = wgDB.UpdateMask(mc);

            if (!success)
            {
                MessageBox.Show(wgDB.GetLastErrorMsg(), "Database Error: Failed to Update Mask", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            Close();
        }
Exemple #14
0
        public ExperimentConfigurator()
        {
            VM = new ExperimentConfiguratorViewModel();

            InitializeComponent();

            wgDB = new WaveguideDB();



            m_imager = null;

            this.DataContext = VM;

            PlateTypeContainer ptc;
            bool success = wgDB.GetDefaultPlateType(out ptc);

            if (success)
            {
                WellSelection.Init(ptc.Rows, ptc.Cols);
                VM.ExpParams.plateType         = ptc;
                PlateTypeComboBox.SelectedItem = ptc;
            }
            else
            {
                WellSelection.Init(16, 24);
                VM.ExpParams.plateType = null;
                VM.ExpParams.mask      = null;
            }

            WellSelection.NewWellSetSelected += WellSelection_NewWellSetSelected;
        }
Exemple #15
0
        public void SetupMaskFromContainer(MaskContainer cont)
        {
            _mask.MaskID           = cont.MaskID;
            _mask.Rows             = cont.Rows;
            _mask.Cols             = cont.Cols;
            _mask.XOffset          = cont.XOffset;
            _mask.YOffset          = cont.YOffset;
            _mask.XSize            = cont.XSize;
            _mask.YSize            = cont.YSize;
            _mask.XStep            = cont.XStep;
            _mask.YStep            = cont.YStep;
            _mask.Angle            = cont.Angle;
            _mask.Shape            = cont.Shape;
            _mask.Description      = cont.Description;
            _mask.PlateTypeID      = cont.PlateTypeID;
            _mask.ReferenceImageID = cont.ReferenceImageID;
            _mask.IsDefault        = cont.IsDefault;

            WaveguideDB        wgDB = new WaveguideDB();
            PlateTypeContainer ptc;
            bool success = wgDB.GetPlateType(Mask.PlateTypeID, out ptc);

            if (success)
            {
                PlateType = ptc;
            }
            else
            {
                PlateType = null;
            }
        }
Exemple #16
0
        void BrowseForBravoMethodFile(MethodItem method)
        {
            // Create OpenFileDialog
            OpenFileDialog dlg = new OpenFileDialog();

            // Set filter for file extension and default file extension
            dlg.DefaultExt       = ".pro";
            dlg.Filter           = "Bravo Protocol Files (*.pro)|*.pro|ANY Files (*.*)|*.*";
            dlg.InitialDirectory = GlobalVars.VWorksProtocolFileDirectory;

            // Display OpenFileDialog by calling ShowDialog method
            Nullable <bool> result = dlg.ShowDialog();

            //
            if (result == true)
            {
                method.BravoMethodFile = dlg.FileName;

                if (wgDB == null)
                {
                    wgDB = new WaveguideDB();
                }

                MethodContainer mc = new MethodContainer();
                mc.Description     = method.Description;
                mc.BravoMethodFile = method.BravoMethodFile;
                mc.IsPublic        = method.IsPublic;
                mc.MethodID        = method.MethodID;
                mc.OwnerID         = method.OwnerID;

                wgDB.UpdateMethod(mc);
            }
        }
Exemple #17
0
        public EditUserDialog(UserContainer user)
        {
            InitializeComponent();

            wgDB = new WaveguideDB();

            m_OK        = false;
            m_addingNew = false;

            if (user == null)  // if null is passed in for user, the intent is to create/insert a new User
            {
                m_addingNew    = true;
                user           = new UserContainer();
                user.Firstname = "";
                user.Lastname  = "";
                user.Username  = "";
                user.Password  = "";
                user.Role      = GlobalVars.USER_ROLE_ENUM.USER;
                user.UserID    = 0;
            }


            UserVM = new EditUserVM(user);
            MyPasswordBox.Password = user.Password;
            UserVM.Refresh();

            this.DataContext            = UserVM.User;
            RoleComboBox.DataContext    = UserVM;
            ProjectsListBox.DataContext = UserVM;
        }
Exemple #18
0
            public void Refresh()
            {
                WaveguideDB wgDB = new WaveguideDB();

                bool success = wgDB.GetAllProjects(ShowArchivedProjects);

                if (success)
                {
                    Projects.Clear();

                    for (int i = 0; i < wgDB.m_projectList.Count(); i++)
                    {
                        ProjectItem pitem = new ProjectItem();
                        pitem.ProjectName = wgDB.m_projectList[i].Description;
                        pitem.ProjectID   = wgDB.m_projectList[i].ProjectID;
                        pitem.Archived    = wgDB.m_projectList[i].Archived;
                        pitem.TimeStamp   = wgDB.m_projectList[i].TimeStamp;

                        bool IsAssigned = new bool();
                        IsAssigned = false;
                        success    = wgDB.IsUserAssignedToProject(User.UserID, pitem.ProjectID, ref IsAssigned);
                        if (success)
                        {
                            pitem.AssignedToProject = IsAssigned;
                        }

                        Projects.Add(pitem);
                    }
                }
            }
Exemple #19
0
        public ManageDatabaseDialog(WaveguideDB db)
        {
            InitializeComponent();
            m_db = db;

            m_vm        = new ManageDatabase_ViewModel();
            DataContext = m_vm;
        }
Exemple #20
0
            public FilterViewModel()
            {
                wgDB = new WaveguideDB();

                Filters = new BindingList <FilterContainer>();

                Refresh();
            }
Exemple #21
0
        public ObservableCollection <Camera.HSSpeed> hsspeeds; // this is set to either hsspeeds_EM or hsspeeds_Conv, depending whether EM Amp is used


        public CameraSettingsManager_ViewModel(Imager imager, WaveguideDB wgDB)
        {
            _imager = imager;
            _camera = _imager.m_camera;
            _wgDB   = wgDB;
            _camera.GetCameraCapabilities();

            _wgDB.GetAllCameraSettings();
            CameraSettingsList = _wgDB.m_cameraSettingsList;
            if (CameraSettingsList.Count > 0)
            {
                CurrentCameraSettings = CameraSettingsList.ElementAt(0);
            }
            else
            {
                CurrentCameraSettings = new CameraSettingsContainer();

                CurrentCameraSettings.CameraSettingID   = 0;
                CurrentCameraSettings.VSSIndex          = 0;
                CurrentCameraSettings.HSSIndex          = 0;
                CurrentCameraSettings.VertClockAmpIndex = 0;
                CurrentCameraSettings.UseEMAmp          = true;
                CurrentCameraSettings.UseFrameTransfer  = true;
                CurrentCameraSettings.Description       = "";
                CurrentCameraSettings.IsDefault         = true;

                CurrentCameraSettings.StartingExposure                   = 2;
                CurrentCameraSettings.ExposureLimit                      = 1000;
                CurrentCameraSettings.HighPixelThresholdPercent          = 80;
                CurrentCameraSettings.LowPixelThresholdPercent           = 10; // 60 if !IncreasingSignal (i.e. a decreasing signal)
                CurrentCameraSettings.MinPercentPixelsAboveLowThreshold  = 50;
                CurrentCameraSettings.MaxPercentPixelsAboveHighThreshold = 10;
                CurrentCameraSettings.IncreasingSignal                   = true;
                CurrentCameraSettings.StartingBinning                    = 1;
                CurrentCameraSettings.EMGainLimit = 300;
            }

            // set camera capabilities
            vsspeeds = _camera.VSSpeeds;
            vertClockVoltageAmplitudes = _camera.VertClockVoltageAmplitudes;
            hsspeeds_EM   = _camera.HSSpeeds_EM;
            hsspeeds_Conv = _camera.HSSpeeds_Conv;
            if (_currentCameraSettings.UseEMAmp)
            {
                hsspeeds = hsspeeds_EM;
            }
            else
            {
                hsspeeds = hsspeeds_Conv;
            }
            preAmpGains      = _camera.PreAmpGains;
            readModes        = _camera.ReadModes;
            acquisitionModes = _camera.AcquisitionModes;
            triggerModes     = _camera.TriggerModes;
            eMGainModes      = _camera.EMGainModes;
            adChannelOptions = _camera.ADChannelOptions;
            binningOptions   = _camera.BinningOptions;
        }
Exemple #22
0
        private void SavePB_Click(object sender, RoutedEventArgs e)
        {
            WaveguideDB wgDB = new WaveguideDB();

            bool success = wgDB.GetAllFilters();

            if (success)
            {
                bool   goodData = true;
                string errStr   = "No Error";

                // check to make sure that the FilterChanger/FilterPosition combination is not already occupied
                for (int i = 0; i < wgDB.m_filterList.Count(); i++)
                {
                    if (FilterVM.Filter.FilterChanger == wgDB.m_filterList[i].FilterChanger && FilterVM.Filter.PositionNumber == wgDB.m_filterList[i].PositionNumber)
                    {
                        goodData = false;
                        errStr   = ((FilterPositionEnum)FilterVM.Filter.PositionNumber).ToString() +
                                   " already taken in " + ((FilterChangerEnum)FilterVM.Filter.FilterChanger).ToString() +
                                   " Filter Changer";
                    }
                }

                if (goodData)
                {
                    if (m_addingNew)
                    {
                        // adding new filter, so call insert
                        FilterContainer fc = FilterVM.Filter;
                        success = wgDB.InsertFilter(ref fc);
                    }
                    else
                    {
                        // updating existing filter, so call update
                        FilterContainer fc = FilterVM.Filter;
                        success = wgDB.UpdateFilter(fc);
                    }

                    if (success)
                    {
                        m_OK = true;
                        Close();
                    }
                    else
                    {
                        errStr = wgDB.GetLastErrorMsg();
                        MessageBox.Show(errStr, "Database Error",
                                        MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }

                if (!goodData)
                {
                    MessageBox.Show(errStr, "Error in Filter Data", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }
Exemple #23
0
        public ProjectViewModel()
        {
            wgDB      = new WaveguideDB();
            _projects = new BindingList <ProjectSimple>();

            ShowArchivedProjects = false;

            Refresh();
        }
Exemple #24
0
        public RunExperiment(Imager imager, TaskScheduler uiTask)
        {
            //if(vworks == null)
            //{
            //    MessageBox.Show("VWorks not running!", "VWorks Error", MessageBoxButton.OK, MessageBoxImage.Error);
            //    return;
            //}

            m_vworks = new VWorks();

            InitializeComponent();

            m_wgDB = new WaveguideDB();

            VM = new RunExperiment_ViewModel();

            m_uiTask = uiTask;

            m_dispatcher = this.Dispatcher;

            this.DataContext = VM;

            m_timer          = new DispatcherTimer();
            m_timer.Tick    += m_timer_Tick;
            m_timer.Interval = TimeSpan.FromMilliseconds(1000);


            VM.RunState = RunExperiment_ViewModel.RUN_STATE.WAITING_TO_RUN;


            m_imager = imager;

            if (m_imager == null)
            {
                m_imager = new Imager();
                m_imager.Initialize();
            }

            m_imager.m_cameraEvent      += m_imager_cameraEvent;
            m_imager.m_temperatureEvent += m_imager_temperatureEvent;


            m_vworks.PostVWorksCommandEvent += m_vworks_PostVWorksCommandEvent;


            m_simulationRunning = false;
            m_indicatorIndex    = 0;
            m_imageIndex        = 0;

            LoadDefaultColorModel();


            // catch close event caused by clicking X button
            this.Closing += new System.ComponentModel.CancelEventHandler(Window_Closing);
        }
Exemple #25
0
        public CameraSetup()
        {
            this.InitializeComponent();
            m_ID = -1;
            m_lowerSliderValue = 0;
            m_upperSliderValue = (UInt16)GlobalVars.Instance.MaxPixelValue;

            m_wgDB = new WaveguideDB();

            m_enableRangerSliderUpdate = false;
        }
Exemple #26
0
        public CameraSettingsManager(Imager _imager, WaveguideDB _wgDB)
        {
            m_imager = _imager;
            m_wgDB   = _wgDB;



            vm = new CameraSettingsManager_ViewModel(m_imager, m_wgDB);

            this.DataContext = vm;

            InitializeComponent();
        }
Exemple #27
0
        public PlateExplorer()
        {
            InitializeComponent();

            // Initialize data in the XamDataGrid - NOTE: A blank record is added FIRST, this is key to this approach for the XamDataGrid
            m_wgDB = new WaveguideDB();


            VM = new PlateExplorer_ViewModel();

            DataContext = VM;

            VM.IncludeArchivedProjects = false;
        }
Exemple #28
0
        private void RefreshDBPB_Click(object sender, RoutedEventArgs e)
        {
            if (m_wgDB == null)
            {
                m_wgDB = new WaveguideDB();
            }

            List <DatabaseTableInfo> tableSizes;
            bool success = m_wgDB.GetDatabaseInfo(out tableSizes);

            if (success)
            {
                DatabaseDataGrid.ItemsSource = tableSizes;
            }
        }
Exemple #29
0
            public void Refresh()
            {
                WaveguideDB wgDB = new WaveguideDB();

                bool success = wgDB.GetAllFilters();

                if (success)
                {
                    Filters.Clear();

                    for (int i = 0; i < wgDB.m_filterList.Count(); i++)
                    {
                        Filters.Add(wgDB.m_filterList[i]);
                    }
                }
            }
Exemple #30
0
        void EditMask(MaskContainer mask)
        {
            //MessageBox.Show("not yet implemented","Edit Mask: " + mask.Description, MessageBoxButton.OK, MessageBoxImage.Error);

            MaskManager mm = new MaskManager();

            mm.Owner = Window.GetWindow(this);

            mm.m_mask.SetupMaskFromContainer(mask);

            if (mask.ReferenceImageID != 0)
            {
                mm.LoadReferenceImage(mask.ReferenceImageID);
            }

            mm.DrawMask();

            mm.ShowDialog();


            if (wgDB == null)
            {
                wgDB = new WaveguideDB();
            }

            MaskContainer mc;
            bool          success = wgDB.GetMask(mask.MaskID, out mc);

            if (success)
            {
                mask.Angle            = mc.Angle;
                mask.Cols             = mc.Cols;
                mask.Description      = mc.Description;
                mask.IsDefault        = mc.IsDefault;
                mask.MaskID           = mc.MaskID;
                mask.PlateTypeID      = mc.PlateTypeID;
                mask.ReferenceImageID = mc.ReferenceImageID;
                mask.Rows             = mc.Rows;
                mask.Shape            = mc.Shape;
                mask.XOffset          = mc.XOffset;
                mask.XSize            = mc.XSize;
                mask.XStep            = mc.XStep;
                mask.YOffset          = mc.YOffset;
                mask.YSize            = mc.YSize;
                mask.YStep            = mc.YStep;
            }
        }