示例#1
0
        public string AddReference <T>(EventData message) where T : Reference, new()
        {
            // Need to call in order to not mess up stack
            var dummy = ArrayStuff.ExtractArrayFromIntPtr(message.SelectionRects, 1);

            var volume = m_DBService.SelectById <Volume>(LastHistory.VolumeId); // Current volume

            var form = new Form_AddReference($"Add {new T().GetType().Name} title", message.Text);

            if (form.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
            {
                return(null);
            }

            T reference = new T
            {
                Id           = Id.NewId(),
                Title        = form.Value,
                VolumeId     = volume.Id,
                PhysicalPage = message.StartPage,
                Glyph        = message.StartGlyph,
            };

            m_DBService.InsertOrUpdate(reference);

            return(reference.Title);
        }
示例#2
0
        /// <summary>
        /// The odd one out, belongs to volume, not ref. But here we go...
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        internal string EditVolumeTitle(EventData message)
        {
            // Need to call in order to not mess up stack
            var dummy = ArrayStuff.ExtractArrayFromIntPtr(message.SelectionRects, 1);

            var volume = m_DBService.SelectById <Volume>(LastHistory.VolumeId);

            // If no volume, warn and exit
            if (volume == null)
            {
                m_MessageBoxService.Show($"No volume found for {message.FilePath}.", "Volume not found");
                return(null);
            }

            string title = message.Text.RemoveCRLF().RemoveDoubleSpace();

            if (string.IsNullOrWhiteSpace(title.Trim()))
            {
                title = volume.Title;
            }

            var form = new Form_AddReference($"Volume title", title);

            if (form.ShowDialog() == System.Windows.Forms.DialogResult.Cancel ||
                string.IsNullOrWhiteSpace(form.Value))
            {
                return(null);
            }

            string newTitle = form.Value;

            volume.Title = newTitle;
            m_DBService.InsertOrUpdate(volume);
            return(newTitle);
        }
示例#3
0
        public Page AddPage(EventData message)
        {
            // Need to call in order to not mess up stack
            var _ = ArrayStuff.ExtractArrayFromIntPtr(message.SelectionRects, 1);

            int decodedPage = message.StartPage;

            if (!string.IsNullOrEmpty(message.Text))
            {
                try
                {
                    string allowed = "0123456789";
                    string clean   = "";
                    foreach (char c in message.Text)
                    {
                        if (allowed.Contains(c.ToString()))
                        {
                            clean += c;
                        }
                    }
                    decodedPage = int.Parse(clean);
                }
                catch { }
            }

            bool   valid     = true;
            string formValue = decodedPage.ToString();

            do
            {
                var form = new Form_AddReference($"{(valid? "" : "[Invalid] ")}Set page number", formValue);
                if (form.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
                {
                    return(null);
                }

                try
                {
                    decodedPage = int.Parse(form.Value.Trim());
                    valid       = true;
                }
                catch {
                    valid     = false;
                    formValue = form.Value;
                }
            } while (!valid);

            m_DBService.Delete <Page>($"`PhysicalPage`={message.StartPage}");// There can be only one (per page)
            Page page = new Page
            {
                Id              = Id.NewId(),
                VolumeId        = LastHistory.VolumeId,
                PhysicalPage    = message.StartPage,
                Glyph           = -1,
                Title           = message.Text,
                PaginationStart = decodedPage
            };

            m_DBService.InsertOrUpdate(page);

            return(page);
        }