示例#1
0
        private void toolStripButtonDeleteTag_Click(object sender, EventArgs e)
        {
            AnonymizeScript selectedScript = listViewAnonymizeScripts.GetSelectedScript();

            if (selectedScript == null)
            {
                return;
            }

            Anonymizer currentAnonymizer = selectedScript.Anonymizer;

            if (currentAnonymizer == null)
            {
                return;
            }

            List <DicomTagNode> nodes = (from n in treeGridViewTags.Rows.Cast <DataGridViewRow>()
                                         where n.Selected
                                         select n as DicomTagNode).ToList();

            foreach (DicomTagNode node in nodes)
            {
                // treeGridViewTags.Nodes.Remove(node);
                treeGridViewTags.Rows.Remove(node);
                currentAnonymizer.DeleteMacro(node.DicomTag.Code);
            }

            if (nodes.Count > 0)
            {
                SetDirty();
            }
        }
示例#2
0
        private DicomTagNode AddAnonymizationTag(AnonymizeScript selectedScript, long tag, string name, string macro)
        {
            DicomTag     dicomTag = DicomTagTable.Instance.Find(tag);
            DicomTagNode node     = new DicomTagNode();

            node.CreateCells(treeGridViewTags);
            node.SetValues(string.Format("({0:X4},{1:X4})", tag.GetGroup(), tag.GetElement()), name, macro);
            treeGridViewTags.Rows.Add(node);

            // treeGridViewTags.Rows.Add(node);
            node.DicomTag = dicomTag;
            // node.Image = Resources.Tag_16x16;

            //if (dicomTag != null && dicomTag.VR == DicomVRType.SQ)
            //   node.Image = Resources.Tags_16x16;
            Anonymizer selectedAnonymizer = null;

            if (selectedScript != null)
            {
                selectedAnonymizer = selectedScript.Anonymizer;
            }
            if (selectedAnonymizer != null)
            {
                selectedAnonymizer[tag] = macro;
                node.Tag = selectedAnonymizer.FindTag(tag);
                return(node);
            }
            return(null);
        }
示例#3
0
        public void RenameScript(string oldFriendlyName, string newFriendlyName)
        {
            string exceptionMessage;

            if (ScriptExists(oldFriendlyName))
            {
                exceptionMessage = string.Format("Script does not exist: '{0}'", oldFriendlyName);
                throw new Exception(exceptionMessage);
            }

            if (ScriptExists(newFriendlyName))
            {
                exceptionMessage = string.Format("Script name already used: '{0}'", newFriendlyName);
                throw new Exception(exceptionMessage);
            }

            AnonymizeScript s = _scripts.Find(x => x.FriendlyName.Equals(oldFriendlyName, StringComparison.OrdinalIgnoreCase));

            if (s != null)
            {
                s.FriendlyName = newFriendlyName;
                if (string.Equals(_activeScriptName, oldFriendlyName, StringComparison.InvariantCultureIgnoreCase))
                {
                    _activeScriptName = s.FriendlyName;
                }
            }
        }
示例#4
0
        private void InitializeMacroCombo(AnonymizeScript selectedScript)
        {
            DataGridViewComboBoxColumn column = (DataGridViewComboBoxColumn)treeGridViewTags.Columns[TAGS_VALUE_COLUMN];

            column.Items.Clear();
            if (selectedScript == null)
            {
                return;
            }

            column.DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton;
            Anonymizer selectedAnonymizer = selectedScript.Anonymizer;

            if (selectedAnonymizer != null)
            {
                foreach (string key in selectedAnonymizer.MacroProcessor.Macros.Keys)
                {
                    column.Items.Add(string.Format("${{{0}}}", key));
                }

                column.Items.Add("${random_string(5)}");
                column.Items.Add("${add_days(7)}");
                column.Items.Add("${add_days(5)}");
                column.Items.Add("${random_time(05:00:00)}");
                column.Items.Add("${replace}");
            }
        }
示例#5
0
        // Modifying Script
        private void toolStripButtonInsertTag_Click(object sender, EventArgs e)
        {
            List <long> tags = GetTags();

            using (InsertElementDlg dlgInsert = new InsertElementDlg(tags))
            {
                if (dlgInsert.ShowDialog(this) == DialogResult.OK)
                {
                    AnonymizeScript selectedScript = listViewAnonymizeScripts.GetSelectedScript();
                    DicomTagNode    node           = null;

                    foreach (long tag in dlgInsert.Tags)
                    {
                        DicomTag     dicomTag = DicomTagTable.Instance.Find(tag);
                        DicomTagNode tagNode  = AddAnonymizationTag(selectedScript, tag, dicomTag != null ? dicomTag.Name : string.Empty, GetDefaultMacro(dicomTag));
                        if (node == null)
                        {
                            node = tagNode;
                        }
                    }
                    if (dlgInsert.Tags.Count > 0)
                    {
                        SetDirty();
                    }
                    if (node != null)
                    {
                        treeGridViewTags.ClearSelection();

                        Console.WriteLine("Need to SelectRow");
                        //treeGridViewTags.SelectRow(node.Index);
                        treeGridViewTags.FirstDisplayedScrollingRowIndex = node.Index;
                    }
                }
            }
        }
示例#6
0
        public string GetNewScriptName(ScriptNameEnum scriptType)
        {
            string rootName = "Script";

            switch (scriptType)
            {
            case ScriptNameEnum.New:
                rootName = "New";
                break;

            case ScriptNameEnum.Default:
                rootName = "Default";
                break;

            case ScriptNameEnum.Copy:
                rootName = "Copy";
                break;
            }

            string suffix = GetNextScriptSuffix();

            string          friendlyName = string.Format("{0}{1}", rootName, suffix);
            AnonymizeScript script       = _scripts.Find(x => x.FriendlyName.Equals(friendlyName, StringComparison.OrdinalIgnoreCase));

            if (script == null)
            {
                return(friendlyName);
            }

            return(string.Empty);
        }
示例#7
0
        private void ActivateScript()
        {
            AnonymizeScript selectedScript = listViewAnonymizeScripts.GetSelectedScript();

            _scripts.SetActive(selectedScript);
            UpdateUI();
            SetDirty();
        }
示例#8
0
 public void Add(AnonymizeScript script)
 {
     _scripts.Add(script);
     if (string.IsNullOrEmpty(_activeScriptName))
     {
         _activeScriptName = script.FriendlyName;
     }
 }
示例#9
0
        public void Delete(string deleteScriptName)
        {
            AnonymizeScript s = _scripts.Find(x => x.FriendlyName.Equals(deleteScriptName, StringComparison.OrdinalIgnoreCase));

            if (s != null)
            {
                Delete(s);
            }
        }
示例#10
0
 public AnonymizeScript(string friendlyName, AnonymizeScript previousScript)
 {
     Anonymizer   = new Anonymizer(false);
     FriendlyName = friendlyName;
     foreach (TagMacro tagMacro in previousScript.Anonymizer.TagMacros)
     {
         Anonymizer.TagMacros.Add(tagMacro);
     }
 }
示例#11
0
 public AnonymizeScripts(bool defaultScript)
 {
     _scripts = new List <AnonymizeScript>();
     if (defaultScript)
     {
         AnonymizeScript scriptDefault = new AnonymizeScript("Default Script", true);
         _scripts.Add(scriptDefault);
         SetActive(scriptDefault);
     }
 }
示例#12
0
        public Anonymizer ActiveAnonymizer()
        {
            AnonymizeScript activeScript = ActiveScript();

            if (activeScript != null)
            {
                return(activeScript.Anonymizer);
            }
            return(null);
        }
示例#13
0
        private void toolStripButtonAddDefault_Click(object sender, EventArgs e)
        {
            string          newScriptName = _scripts.GetNewScriptName(AnonymizeScripts.ScriptNameEnum.Default);
            AnonymizeScript newScript     = new AnonymizeScript(newScriptName, true);

            _scripts.Add(newScript);
            ListViewItem lvi = listViewAnonymizeScripts.Items.Add(newScriptName);

            lvi.Tag = newScript;
            EnterChangeNameMode(lvi);
            SetDirty();
        }
示例#14
0
        public void Delete(AnonymizeScript script)
        {
            string removedScriptName = script.FriendlyName;

            _scripts.Remove(script);
            if (string.Equals(removedScriptName, _activeScriptName, StringComparison.OrdinalIgnoreCase))
            {
                _activeScriptName = string.Empty;
                if (_scripts.Count > 0)
                {
                    _activeScriptName = _scripts[0].FriendlyName;
                }
            }
        }
示例#15
0
        private void listViewAnonymizeScripts_AfterLabelEdit(object sender, LabelEditEventArgs e)
        {
            _changeNameMode = false;
            if (e.Label == null)
            {
                return;
            }
            string labelTrimmed = e.Label.Trim();

            e.CancelEdit = true;

            //do something with variable trimmed
            ListViewItem lvi = listViewAnonymizeScripts.Items[e.Item];

            if (lvi != null)
            {
                AnonymizeScript script = lvi.Tag as AnonymizeScript;
                if (script != null)
                {
                    if (_scripts.ScriptExists(labelTrimmed))
                    {
                        // Check to see if name is just a case change (i.e.  'Script 1' --> 'SCRIPT 1')
                        if (string.Equals(script.FriendlyName, e.Label, StringComparison.OrdinalIgnoreCase))
                        {
                            listViewAnonymizeScripts.SelectedItems[0].Text = labelTrimmed;
                            script.FriendlyName = labelTrimmed;
                            if (string.Equals(_scripts.ActiveScriptName, labelTrimmed, StringComparison.Ordinal))
                            {
                                _scripts.ActiveScriptName = labelTrimmed;
                            }
                            SetDirty();
                        }

                        // Otherwise cancel edit if label already exists
                        e.CancelEdit = true;
                    }
                    else
                    {
                        // Still cancel the edit, but replace with trimmed text
                        listViewAnonymizeScripts.SelectedItems[0].Text = labelTrimmed;
                        script.FriendlyName = labelTrimmed;
                        if (string.Equals(_scripts.ActiveScriptName, labelTrimmed, StringComparison.Ordinal))
                        {
                            _scripts.ActiveScriptName = labelTrimmed;
                        }
                        SetDirty();
                    }
                }
            }
        }
示例#16
0
        public AnonymizeScript SetActive(string friendlyName)
        {
            AnonymizeScript script = _scripts.Find(x => x.FriendlyName.Equals(friendlyName, StringComparison.OrdinalIgnoreCase));

            if (script != null)
            {
                _activeScriptName = script.FriendlyName;
            }
            else
            {
                string exceptionMessage = string.Format("Script not found: '{0}'", friendlyName);
                throw new Exception(exceptionMessage);
            }
            return(script);
        }
示例#17
0
        public void Initialize()
        {
            DicomEngine.Startup();

            // LoadScriptList();
            listViewAnonymizeScripts.Items.Clear();

            // Select
            SelectActiveScript();

            AnonymizeScript selectedScript = listViewAnonymizeScripts.GetSelectedScript();

            UpdateScriptDataGrid(selectedScript);

            listViewAnonymizeScripts.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
            listViewAnonymizeScripts.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);

            _isDirty = false;
        }
示例#18
0
        private void CloneScript()
        {
            AnonymizeScript selectedScript = listViewAnonymizeScripts.GetSelectedScript();

            if (selectedScript != null)
            {
                string newScriptName = string.Format("{0} Copy", selectedScript.FriendlyName);
                if (_scripts.ScriptExists(newScriptName))
                {
                    newScriptName = _scripts.GetNewScriptName(AnonymizeScripts.ScriptNameEnum.Copy);
                }
                AnonymizeScript newScript = new AnonymizeScript(newScriptName, selectedScript);
                _scripts.Add(newScript);
                ListViewItem lviNew = listViewAnonymizeScripts.Items.Add(newScriptName);
                lviNew.Tag = newScript;
                EnterChangeNameMode(lviNew);
                SetDirty();
            }
        }
示例#19
0
        private void UpdateUI()
        {
            bool itemsSelected = listViewAnonymizeScripts.SelectedItems.Count > 0;

            toolStripButtonSave.Enabled = _isDirty;

            toolStripButtonClone.Enabled    = itemsSelected;
            toolStripButtonDelete.Enabled   = itemsSelected;
            toolStripButtonActivate.Enabled = itemsSelected;

            // Script Definition Toolstrip buttons
            toolStripButtonInsertTag.Enabled = itemsSelected;
            toolStripButtonDeleteTag.Enabled = itemsSelected;

            //
            foreach (ListViewItem lvi in listViewAnonymizeScripts.Items)
            {
                if (lvi == null)
                {
                    break;
                }

                if (lvi.Tag == null)
                {
                    break;
                }

                AnonymizeScript script = lvi.Tag as AnonymizeScript;
                if (script != null)
                {
                    if (string.Equals(_scripts.ActiveScriptName, script.FriendlyName, StringComparison.OrdinalIgnoreCase))
                    {
                        lvi.ImageIndex = 0;
                    }
                    else
                    {
                        lvi.ImageIndex = -1;
                    }
                }
            }
        }
示例#20
0
        private void LoadMacros(AnonymizeScript selectedScript)
        {
            treeGridViewTags.Rows.Clear();

            ObservableCollection <TagMacro> macros = new ObservableCollection <TagMacro>();

            if (selectedScript != null)
            {
                macros = selectedScript.Anonymizer.TagMacros;
            }

            foreach (TagMacro macro in macros)
            {
                DicomTag     dicomTag = DicomTagTable.Instance.Find(macro.Tag);
                string       name     = dicomTag != null ? dicomTag.Name : string.Empty;
                DicomTagNode node     = new DicomTagNode();

                string sValue = string.Format("{0:X4},{1:X4}", macro.Tag.GetGroup(), macro.Tag.GetElement());
                // bool bRet = node.SetValues(sValue, name, macro.Macro);

                // DataGridViewRow row = new DataGridViewRow();
                node.CreateCells(treeGridViewTags);
                node.SetValues(sValue, name, macro.Macro);
                treeGridViewTags.Rows.Add(node);

                node.DicomTag = dicomTag;
                node.Tag      = macro;
                AddToList(macro.Macro);

                //if (dicomTag != null)
                //{
                //   if (dicomTag.VR == DicomVRType.SQ)
                //      node.Image = Resources.Tags_16x16;
                //   else
                //      node.Image = Resources.Tag_16x16;
                //}
            }
            // treeGridViewTags.Refresh();
        }
示例#21
0
        public AnonymizeScript ActiveScript()
        {
            AnonymizeScript script = _scripts.Find(x => x.FriendlyName.Equals(_activeScriptName, StringComparison.OrdinalIgnoreCase));

            return(script);
        }
示例#22
0
 public void SetActive(AnonymizeScript s)
 {
     SetActive(s.FriendlyName);
 }
示例#23
0
        //public void LoadScriptList()
        //{
        //   try
        //   {
        //      _scripts = Extensions.DeserializeFromXml<AnonymizeScripts>(_filename);
        //   }
        //   catch (Exception)
        //   {
        //   }

        //   if (_scripts == null)
        //   {
        //      _scripts = new AnonymizeScripts(true);
        //   }
        //}

        private void UpdateScriptDataGrid(AnonymizeScript selectedScript)
        {
            InitializeMacroCombo(selectedScript);
            LoadMacros(selectedScript);
        }
示例#24
0
 public void RenameScript(AnonymizeScript script, string newFriendlyName)
 {
     RenameScript(script.FriendlyName, newFriendlyName);
 }
示例#25
0
        public bool ScriptExists(string newScriptName)
        {
            AnonymizeScript s = _scripts.Find(x => x.FriendlyName.Equals(newScriptName, StringComparison.OrdinalIgnoreCase));

            return(s != null);
        }
示例#26
0
        private void listViewAnonymizeScripts_SelectedIndexChanged(object sender, EventArgs e)
        {
            AnonymizeScript selectedScript = listViewAnonymizeScripts.GetSelectedScript();

            UpdateScriptDataGrid(selectedScript);
        }