private void AssignUserTags()
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                foreach (Chemistry chemistryItem in ChemistryItems)
                {
                    chemistryItem.Initializing = true;
                    var specificTags = from UserTag ut in UserTagItems
                                       join ChemistryByTag cbt in ChemistryByTagItems
                                       on ut.ID equals cbt.tagID
                                       where cbt.GalleryID == chemistryItem.ID
                                       select ut;
                    foreach (UserTag ut2 in specificTags)
                    {
                        chemistryItem.Tags.Add(ut2);
                    }
                    chemistryItem.Initializing = false;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #2
0
        private void ImportErrors_Load(object sender, EventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                if (TopLeft.X != 0 && TopLeft.Y != 0)
                {
                    Left = (int)TopLeft.X;
                    Top  = (int)TopLeft.Y;
                }

                display1.Chemistry = Model;
                Errors.Text        = String.Join(Environment.NewLine, Model.AllErrors);
                Warnings.Text      = String.Join(Environment.NewLine, Model.AllWarnings);
                if (Model.AllErrors.Count > 0)
                {
                    Continue.Enabled = false;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
        private void LoadOtherNames(Chemistry mol)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                XName nameNodeName = CMLNamespaces.cml + "name";

                var names = (from element in mol.CmlDoc.Descendants(nameNodeName)
                             where element.Name == nameNodeName
                             select element.Value).Distinct();

                foreach (string name in names)
                {
                    mol.HasOtherNames = true;
                    mol.OtherNames.Add(name);
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
        public LibraryViewModel(string filter = "")
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();

                ChemistryItems = new ObservableCollection <Chemistry>();
                ChemistryItems.CollectionChanged += ChemistryItems_CollectionChanged;

                LoadChemistryItems(filter);

                ChemistryByTagItems = new ObservableCollection <ChemistryByTag>();
                LoadChemistryByTagItems();

                UserTagItems = new ObservableCollection <UserTag>();
                LoadUserTagItems();
                AssignUserTags();

                LibraryItems = new ObservableCollection <LibraryItem>();

                sw.Stop();
                Debug.WriteLine($"LibraryViewModel() took {sw.ElapsedMilliseconds}ms");
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
        public ObservableCollection <UserTag> LoadUserTagItems(int ChemistryID)
        {
            var    results = new ObservableCollection <UserTag>();
            string module  = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                var lib = new Database.Library();
                List <UserTagDTO> allTags = lib.GetAllUserTags(ChemistryID);

                foreach (var dto in allTags)
                {
                    var tag = new UserTag();
                    tag.ID   = dto.Id;
                    tag.Text = dto.Text;
                    results.Add(tag);
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
            return(results);
        }
        public void LoadChemistryByTagItems()
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                ChemistryByTagItems.Clear();
                var lib = new Database.Library();

                List <ChemistryTagDTO> dto = lib.GetChemistryByTags();
                foreach (var obj in dto)
                {
                    var tag = new ChemistryByTag();

                    tag.ID        = obj.Id;
                    tag.GalleryID = obj.GalleryId;
                    tag.tagID     = obj.TagId;

                    ChemistryByTagItems.Add(tag);
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
        public void LoadUserTagItems()
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                UserTagItems.Clear();

                var lib = new Database.Library();
                List <UserTagDTO> allTags = lib.GetAllUserTags();
                foreach (var obj in allTags)
                {
                    var tag = new UserTag();
                    tag.ID   = obj.Id;
                    tag.Text = obj.Text;
                    UserTagItems.Add(tag);
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
        private void ChemistryItems_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                switch (e.Action)
                {
                case NotifyCollectionChangedAction.Add:
                    if (!_initializing)
                    {
                        AddNewChemistry(e.NewItems);
                    }
                    break;

                case NotifyCollectionChangedAction.Remove:
                    if (!_initializing)
                    {
                        DeleteChemistry(e.OldItems);
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #9
0
        private void SystemInfo_Load(object sender, EventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                if (TopLeft.X != 0 && TopLeft.Y != 0)
                {
                    Left = (int)TopLeft.X;
                    Top  = (int)TopLeft.Y;
                }

                StringBuilder sb = new StringBuilder();

                #region Add In Version

                Assembly        assembly = Assembly.GetExecutingAssembly();
                FileVersionInfo fvi      = FileVersionInfo.GetVersionInfo(assembly.Location);
                UpdateHelper.ReadThisVersion(assembly);
                string version = string.Empty;
                if (Globals.Chem4WordV3.ThisVersion != null)
                {
                    string[] parts = Globals.Chem4WordV3.ThisVersion.Root.Element("Number").Value.Split(' ');
                    string   temp  = Globals.Chem4WordV3.ThisVersion.Root.Element("Number").Value;
                    int      idx   = temp.IndexOf(" ");
                    version = $"Chem4Word 2020 {temp.Substring(idx + 1)} [{fvi.FileVersion}]";
                }
                else
                {
                    version = $"Chem4Word Version: V{fvi.FileVersion}";
                }

                sb.AppendLine(version);

                #endregion Add In Version

                sb.AppendLine("");
                sb.AppendLine($"MachineId: {Globals.Chem4WordV3.Helper.MachineId}");
                sb.AppendLine($"Operating System: {Globals.Chem4WordV3.Helper.SystemOs}");
                sb.AppendLine($"Word Product: {Globals.Chem4WordV3.Helper.WordProduct}");
                sb.AppendLine($"Internet Explorer Version: {Globals.Chem4WordV3.Helper.BrowserVersion}");
                sb.AppendLine($".Net Framework Runtime: {Globals.Chem4WordV3.Helper.DotNetVersion}");

                sb.AppendLine("");
                sb.AppendLine($"Settings Folder: {Globals.Chem4WordV3.AddInInfo.ProductAppDataPath}");
                sb.AppendLine($"Library Folder: {Globals.Chem4WordV3.AddInInfo.ProgramDataPath}");

                //sb.AppendLine("");

                Information.Text           = sb.ToString();
                Information.SelectionStart = Information.Text.Length;
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
        private void InsertCopyButton_OnClick(object sender, RoutedEventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            Globals.Chem4WordV3.Telemetry.Write(module, "Action", "Triggered");

            try
            {
                if (Globals.Chem4WordV3.EventsEnabled)
                {
                    Globals.Chem4WordV3.EventsEnabled = false;
                    if (Globals.Chem4WordV3.Application.Documents.Count > 0)
                    {
                        if (ActiveDocument?.ActiveWindow?.Selection != null)
                        {
                            TaskPaneHelper.InsertChemistry(true, ActiveDocument.Application, Display, false);
                        }
                    }
                    Globals.Chem4WordV3.EventsEnabled = true;
                }
            }
            catch (Exception ex)
            {
                Globals.Chem4WordV3.EventsEnabled = true;
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #11
0
        private void SwitchToMulti_CheckedChanged(object sender, EventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                if (_eventsEnabled && SwitchToMulti.Checked)
                {
                    Telemetry.Write(module, "Action", "Triggered");
                    _eventsEnabled = false;

                    _sw.Reset();
                    _sw.Start();

                    _tempJson        = (string)ExecuteJavaScript("GetJSON");
                    IsSingleMolecule = false;
                    SwitchChemDoodleMode();
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Telemetry, TopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
        private void SearchBox_OnTextChanged(object sender, TextChangedEventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                if (!string.IsNullOrWhiteSpace(SearchBox.Text))
                {
                    SearchButton.IsEnabled = true;
                    ClearButton.IsEnabled  = false;
                }
                else
                {
                    SearchButton.IsEnabled = false;
                    ClearButton.IsEnabled  = true;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #13
0
        private void EditLabelsHost_Load(object sender, EventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                MinimumSize = new Size(900, 600);

                Left = (int)TopLeft.X;
                Top  = (int)TopLeft.Y;

                // Fix bottom panel
                int margin = Buttons.Height - Save.Bottom;
                splitContainer1.SplitterDistance = splitContainer1.Height - Save.Height - margin * 2;
                splitContainer1.FixedPanel       = FixedPanel.Panel2;
                splitContainer1.IsSplitterFixed  = true;

                var editor = new LabelsEditor(_options);
                editor.InitializeComponent();
                elementHost1.Child = editor;

                editor.TopLeft = TopLeft;
                editor.Used1D  = Used1D;
                editor.PopulateTreeView(Cml);

                Warning.Text = Message;
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, TopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #14
0
        public override void Refresh()
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                Word.Application app = Globals.Chem4WordV3.Application;
                using (new UI.WaitCursor())
                {
                    if (_libraryViewModel == null)
                    {
                        _libraryViewModel = new LibraryViewModel();
                    }
                    libraryView1.MainGrid.DataContext = _libraryViewModel;
                }
                app.System.Cursor = Word.WdCursorType.wdCursorNormal;
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #15
0
        private SQLiteDataReader GetChemicalNames(SQLiteConnection conn, int id)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("SELECT ChemicalNameID, Name, Namespace, Tag");
                sb.AppendLine("FROM ChemicalNames");
                sb.AppendLine("WHERE ChemistryID = @id");
                sb.AppendLine("ORDER BY Name");

                SQLiteCommand command = new SQLiteCommand(sb.ToString(), conn);
                command.Parameters.Add("@id", DbType.Int64).Value = id;
                return(command.ExecuteReader());
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
                return(null);
            }
        }
Example #16
0
        public override void Refresh()
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                _editorOptions = new AcmeOptions(Globals.Chem4WordV3.AddInInfo.ProductAppDataPath);
                libraryView1.SetOptions(_editorOptions);

                using (new WaitCursor())
                {
                    if (_libraryViewModel == null)
                    {
                        _libraryViewModel = new LibraryViewModel();
                    }
                    libraryView1.MainGrid.DataContext = _libraryViewModel;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #17
0
        private void FormChemDoodleEditor_FormClosing(object sender, FormClosingEventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                if (DialogResult == DialogResult.OK)
                {
                    if (_saveSettings)
                    {
                        SaveSettings();
                    }
                }
                else
                {
                    DialogResult = DialogResult.Cancel;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Telemetry, TopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #18
0
        private SQLiteDataReader GetAllUserTags(SQLiteConnection conn, int chemistryId)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("SELECT Id, UserTag, Lock");
                sb.AppendLine("FROM UserTags");
                sb.AppendLine("WHERE ID IN");
                sb.AppendLine(" (SELECT TagID");
                sb.AppendLine("  FROM ChemistryByTags");
                sb.AppendLine("  WHERE GalleryID = @id)");

                SQLiteCommand command = new SQLiteCommand(sb.ToString(), conn);
                command.Parameters.Add("@id", DbType.Int64).Value = chemistryId;
                return(command.ExecuteReader());
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
                return(null);
            }
        }
Example #19
0
        private void DeleteAllChemistry(SQLiteConnection conn)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                SQLiteCommand command  = new SQLiteCommand("DELETE FROM ChemistryByTags", conn);
                SQLiteCommand command2 = new SQLiteCommand("DELETE FROM Gallery", conn);
                SQLiteCommand command3 = new SQLiteCommand("DELETE FROM ChemicalNames", conn);
                SQLiteCommand command4 = new SQLiteCommand("UPDATE SQLITE_SEQUENCE SET SEQ=0 WHERE NAME='Gallery'", conn);
                SQLiteCommand command5 = new SQLiteCommand("VACUUM", conn);

                using (SQLiteTransaction tr = conn.BeginTransaction())
                {
                    command.ExecuteNonQuery();
                    command2.ExecuteNonQuery();
                    command3.ExecuteNonQuery();
#if DEBUG
                    command4.ExecuteNonQuery();
#endif
                    tr.Commit();
                    command5.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #20
0
        private SQLiteDataReader GetAllNames(SQLiteConnection conn)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("SELECT DISTINCT Name, ChemistryId");
                sb.AppendLine("FROM ChemicalNames");
                sb.AppendLine(" UNION");
                sb.AppendLine("SELECT DISTINCT Name, Id");
                sb.AppendLine("FROM Gallery");

                SQLiteCommand command = new SQLiteCommand(sb.ToString(), conn);
                return(command.ExecuteReader());
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
                return(null);
            }
        }
Example #21
0
        private void UpdateChemistry(SQLiteConnection conn, long id, string name, string xml, string formula)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                Byte[] blob = Encoding.UTF8.GetBytes(xml);

                StringBuilder sb = new StringBuilder();
                sb.AppendLine("UPDATE GALLERY");
                sb.AppendLine("SET Name = @name, Chemistry = @blob, Formula = @formula");
                sb.AppendLine("WHERE ID = @id");

                SQLiteCommand command = new SQLiteCommand(sb.ToString(), conn);
                command.Parameters.Add("@id", DbType.Int64).Value = id;
                command.Parameters.Add("@blob", DbType.Binary, blob.Length).Value             = blob;
                command.Parameters.Add("@name", DbType.String, name?.Length ?? 0).Value       = name ?? "";
                command.Parameters.Add("@formula", DbType.String, formula?.Length ?? 0).Value = formula ?? "";

                using (SQLiteTransaction tr = conn.BeginTransaction())
                {
                    command.ExecuteNonQuery();
                    tr.Commit();
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
        /// <summary>
        /// Handles filtering of the library list
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SearchButton_OnClick(object sender, RoutedEventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                if (!string.IsNullOrWhiteSpace(SearchBox.Text))
                {
                    //get the view from the listbox's source
                    ICollectionView filteredView = CollectionViewSource.GetDefaultView((this.MainGrid.DataContext as LibraryViewModel).ChemistryItems);
                    //then try to match part of either its name or an alternative name to the string typed in
                    filteredView.Filter = ci =>
                    {
                        var itm         = ci as Chemistry;
                        var queryString = SearchBox.Text.ToUpper();
                        return(itm.Name.ToUpper().Contains(queryString) ||
                               itm.OtherNames.Any(n => n.ToUpper().Contains(queryString)));
                    };

                    SearchButton.IsEnabled = false;
                    ClearButton.IsEnabled  = true;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #23
0
        private void AboutHost_Load(object sender, EventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                Left = (int)TopLeft.X;
                Top  = (int)TopLeft.Y;
                aboutControl1.TopLeft   = TopLeft;
                aboutControl1.AutoClose = AutoClose;
                if (AutoClose)
                {
                    ShowInTaskbar = false;
                    aboutControl1.OnPreloadComplete += OnPreloadCompleted;
                }
                else
                {
                    aboutControl1.VersionString = VersionString;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, TopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #24
0
        private void AboutHost_Load(object sender, EventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                using (new WaitCursor())
                {
                    if (!PointHelper.PointIsEmpty(TopLeft))
                    {
                        Left = (int)TopLeft.X;
                        Top  = (int)TopLeft.Y;
                    }

                    aboutControl1.TopLeft       = TopLeft;
                    aboutControl1.VersionString = VersionString;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, TopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #25
0
        private void ToggleShowCarbons_CheckedChanged(object sender, EventArgs e)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                if (_eventsEnabled)
                {
                    //Telemetry.Write(module, "Action", "Triggered");
                    if (chkToggleShowCarbons.Checked)
                    {
                        UserOptions.ShowCarbons = true;
                        ExecuteJavaScript("ShowCarbons", true);
                    }
                    else
                    {
                        UserOptions.ShowCarbons = false;
                        ExecuteJavaScript("ShowCarbons", false);
                    }
                    _saveSettings = true;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Telemetry, TopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #26
0
        public TagEditor()
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                TextChanged    += OnTagTextChanged;
                PreviewKeyDown += TagEditor_PreviewKeyDown;

                TagMatcher = text =>
                {
                    if (text.EndsWith(";") | text.EndsWith(" "))
                    {
                        // Remove the ';'
                        return(text.Substring(0, text.Length - 1).Trim().ToUpper());
                    }

                    return(null);
                };
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
        internal static void ReportError(Exception exceptionObj)
        {
            if (exceptionObj == null)
            {
                return;
            }
            ReportError reportError = new ReportError(exceptionObj);

            reportError.ShowDialog();
        }
Example #28
0
        private static void TagStringChanged(DependencyObject d, DependencyPropertyChangedEventArgs args)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                TagEditor rtb     = (TagEditor)d;
                string    newTags = (string)args.NewValue;

                rtb.TextChanged -= rtb.OnTagTextChanged;

                try
                {
                    rtb.Document.Blocks.Clear();
                    var para = new Paragraph(new Run());
                    rtb.Document.Blocks.Add(para);
                    string[] allTags = newTags.Split(new char[] { ';', ',' });
                    foreach (string tag in allTags)
                    {
                        var tagString = tag.Trim();
                        if (tagString != "")
                        {
                            var presenter = new ContentPresenter()
                            {
                                Content         = tagString,
                                ContentTemplate = rtb.TagTemplate,
                            };
                            para.Inlines.Add(presenter);
                        }
                    }
                }
                catch (Exception ex)
                {
                    using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                    {
                        form.ShowDialog();
                    }
                }
                finally
                {
                    rtb.TextChanged += rtb.OnTagTextChanged;
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }
        }
Example #29
0
        public Dictionary <string, int> GetLibraryNames()
        {
            string module   = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";
            var    allNames = new Dictionary <string, int>();

            Stopwatch sw = new Stopwatch();

            sw.Start();

            try
            {
                using (SQLiteConnection conn = LibraryConnection())
                {
                    using (SQLiteDataReader names = GetAllNames(conn))
                    {
                        while (names.Read())
                        {
                            string name = names["Name"] as string;
                            if (!string.IsNullOrEmpty(name) && name.Length > 3)
                            {
                                // Exclude any purely numeric names
                                long numeric = -1;
                                if (!long.TryParse(name, out numeric))
                                {
                                    int id = int.Parse(names["ChemistryId"].ToString());
                                    if (!allNames.ContainsKey(name))
                                    {
                                        allNames.Add(name, id);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
            }

            sw.Stop();
#if DEBUG
            // Task 810
            Globals.Chem4WordV3.Telemetry.Write(module, "Timing", $"Reading {allNames.Count} Chemical names took {SafeDouble.AsString(sw.ElapsedMilliseconds)}ms");
#endif
            return(allNames);
        }
Example #30
0
        private long AddChemicalName(SQLiteConnection conn, long id, string name, string dictRef)
        {
            string module = $"{_product}.{_class}.{MethodBase.GetCurrentMethod().Name}()";

            try
            {
                long lastID;
                var  refs = dictRef.Split(':');

                StringBuilder sb = new StringBuilder();
                sb.AppendLine("DELETE FROM ChemicalNames");
                sb.AppendLine("WHERE ChemistryID = @chemID");
                sb.AppendLine(" AND Namespace = @namespace");
                sb.AppendLine(" AND Tag = @tag");

                SQLiteCommand delcommand = new SQLiteCommand(sb.ToString(), conn);
                delcommand.Parameters.Add("@namespace", DbType.String, refs[0].Length).Value = refs[0];
                delcommand.Parameters.Add("@tag", DbType.String, refs[1].Length).Value       = refs[1];
                delcommand.Parameters.Add("@chemID", DbType.Int32).Value = id;

                sb = new StringBuilder();
                sb.AppendLine("INSERT INTO ChemicalNames");
                sb.AppendLine(" (ChemistryID, Name, Namespace, tag)");
                sb.AppendLine("VALUES");
                sb.AppendLine("(@chemID, @name, @namespace, @tag)");

                SQLiteCommand insertCommand = new SQLiteCommand(sb.ToString(), conn);
                insertCommand.Parameters.Add("@name", DbType.String, name.Length).Value         = name;
                insertCommand.Parameters.Add("@namespace", DbType.String, refs[0].Length).Value = refs[0];
                insertCommand.Parameters.Add("@tag", DbType.String, refs[1].Length).Value       = refs[1];
                insertCommand.Parameters.Add("@chemID", DbType.Int32).Value = id;

                delcommand.ExecuteNonQuery();
                insertCommand.ExecuteNonQuery();
                string        sql = "SELECT last_insert_rowid()";
                SQLiteCommand cmd = new SQLiteCommand(sql, conn);
                lastID = (Int64)cmd.ExecuteScalar();

                return(lastID);
            }
            catch (Exception ex)
            {
                using (var form = new ReportError(Globals.Chem4WordV3.Telemetry, Globals.Chem4WordV3.WordTopLeft, module, ex))
                {
                    form.ShowDialog();
                }
                return(-1);
            }
        }
 internal static void ReportError(Exception exceptionObj) {
     if (exceptionObj == null) return;
     ReportError reportError = new ReportError(exceptionObj);
     reportError.ShowDialog();
 }