From 7c95b06064c5f49889f073953af9c4d75d31727a Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 30 Jul 2017 12:59:34 +0100 Subject: [PATCH] 0.2.0.082 beta (12/01/2017) --- .gitignore | 6 + BookmarkEditForm.Designer.cs | 224 +++++ BookmarkEditForm.cs | 192 ++++ BookmarkEditForm.resx | 148 +++ BookmarkItem.cs | 386 ++++++++ BookmarkTreeView.Designer.cs | 36 + BookmarkTreeView.cs | 125 +++ FindForm.Designer.cs | 118 +++ FindForm.cs | 102 +++ FindForm.resx | 145 +++ IconDatabase.cs | 134 +++ LICENSE | 674 ++++++++++++++ MainForm.Designer.cs | 786 ++++++++++++++++ MainForm.cs | 840 ++++++++++++++++++ MainForm.resx | 544 ++++++++++++ NewSessionForm.Designer.cs | 101 +++ NewSessionForm.cs | 55 ++ NewSessionForm.resx | 145 +++ OptionsForm.Designer.cs | 151 ++++ OptionsForm.cs | 44 + OptionsForm.resx | 148 +++ PasswordForm.Designer.cs | 102 +++ PasswordForm.cs | 53 ++ PasswordForm.resx | 145 +++ Program.cs | 19 + Properties/AssemblyInfo.cs | 36 + Properties/Resources.Designer.cs | 230 +++++ Properties/Resources.resx | 172 ++++ Properties/Settings.Designer.cs | 26 + Properties/Settings.settings | 7 + README.md | 4 + References/SQLiteWrapper.dll | Bin 0 -> 20480 bytes References/sqlite3.dll | Bin 0 -> 558133 bytes Resources/aniZomq2x32.gif | Bin 0 -> 15715 bytes Resources/bullet_key.ico | Bin 0 -> 1150 bytes Resources/cog.ico | Bin 0 -> 1150 bytes Resources/cog.png | Bin 0 -> 512 bytes Resources/comment.png | Bin 0 -> 413 bytes Resources/disk.png | Bin 0 -> 620 bytes Resources/folder.png | Bin 0 -> 537 bytes Resources/folder_explore.png | Bin 0 -> 689 bytes Resources/folder_page.png | Bin 0 -> 688 bytes Resources/help.png | Bin 0 -> 786 bytes Resources/magnifier.ico | Bin 0 -> 1150 bytes Resources/magnifier.png | Bin 0 -> 615 bytes Resources/package_green.ico | Bin 0 -> 1150 bytes Resources/page_white_disk.png | Bin 0 -> 715 bytes Resources/page_white_gray_green.png | Bin 0 -> 638 bytes Resources/page_white_star.ico | Bin 0 -> 1150 bytes Resources/page_white_star.png | Bin 0 -> 565 bytes Resources/page_white_world_bw.png | Bin 0 -> 660 bytes Resources/transmit_blue.png | Bin 0 -> 674 bytes RyzStudio/Data/SQLite/SQLiteDatabase.cs | 444 +++++++++ RyzStudio/Data/SQLite/SQLiteDatabase2.cs | 447 ++++++++++ RyzStudio/Drawing/Rectangoid.cs | 84 ++ RyzStudio/IO/FileType.cs | 56 ++ RyzStudio/IO/SessionFileFormatBase.cs | 285 ++++++ RyzStudio/IO/SharpZipLib.cs | 76 ++ RyzStudio/String.cs | 36 + RyzStudio/Windows/Forms/BigButton.Designer.cs | 64 ++ RyzStudio/Windows/Forms/BigButton.cs | 91 ++ RyzStudio/Windows/Forms/BigButton.resx | 120 +++ .../Windows/Forms/BigUserControl.Designer.cs | 37 + RyzStudio/Windows/Forms/BigUserControl.cs | 52 ++ RyzStudio/Windows/Forms/MovableTreeView.cs | 726 +++++++++++++++ SessionFileFormat.cs | 93 ++ UpdateIconForm.Designer.cs | 144 +++ UpdateIconForm.cs | 121 +++ UpdateIconForm.resx | 148 +++ bomg-2.ico | Bin 0 -> 17542 bytes bomg-4.ico | Bin 0 -> 15086 bytes bomg.csproj | 276 ++++++ packages.config | 6 + 73 files changed, 9204 insertions(+) create mode 100644 .gitignore create mode 100644 BookmarkEditForm.Designer.cs create mode 100644 BookmarkEditForm.cs create mode 100644 BookmarkEditForm.resx create mode 100644 BookmarkItem.cs create mode 100644 BookmarkTreeView.Designer.cs create mode 100644 BookmarkTreeView.cs create mode 100644 FindForm.Designer.cs create mode 100644 FindForm.cs create mode 100644 FindForm.resx create mode 100644 IconDatabase.cs create mode 100644 LICENSE create mode 100644 MainForm.Designer.cs create mode 100644 MainForm.cs create mode 100644 MainForm.resx create mode 100644 NewSessionForm.Designer.cs create mode 100644 NewSessionForm.cs create mode 100644 NewSessionForm.resx create mode 100644 OptionsForm.Designer.cs create mode 100644 OptionsForm.cs create mode 100644 OptionsForm.resx create mode 100644 PasswordForm.Designer.cs create mode 100644 PasswordForm.cs create mode 100644 PasswordForm.resx create mode 100644 Program.cs create mode 100644 Properties/AssemblyInfo.cs create mode 100644 Properties/Resources.Designer.cs create mode 100644 Properties/Resources.resx create mode 100644 Properties/Settings.Designer.cs create mode 100644 Properties/Settings.settings create mode 100644 README.md create mode 100644 References/SQLiteWrapper.dll create mode 100644 References/sqlite3.dll create mode 100644 Resources/aniZomq2x32.gif create mode 100644 Resources/bullet_key.ico create mode 100644 Resources/cog.ico create mode 100644 Resources/cog.png create mode 100644 Resources/comment.png create mode 100644 Resources/disk.png create mode 100644 Resources/folder.png create mode 100644 Resources/folder_explore.png create mode 100644 Resources/folder_page.png create mode 100644 Resources/help.png create mode 100644 Resources/magnifier.ico create mode 100644 Resources/magnifier.png create mode 100644 Resources/package_green.ico create mode 100644 Resources/page_white_disk.png create mode 100644 Resources/page_white_gray_green.png create mode 100644 Resources/page_white_star.ico create mode 100644 Resources/page_white_star.png create mode 100644 Resources/page_white_world_bw.png create mode 100644 Resources/transmit_blue.png create mode 100644 RyzStudio/Data/SQLite/SQLiteDatabase.cs create mode 100644 RyzStudio/Data/SQLite/SQLiteDatabase2.cs create mode 100644 RyzStudio/Drawing/Rectangoid.cs create mode 100644 RyzStudio/IO/FileType.cs create mode 100644 RyzStudio/IO/SessionFileFormatBase.cs create mode 100644 RyzStudio/IO/SharpZipLib.cs create mode 100644 RyzStudio/String.cs create mode 100644 RyzStudio/Windows/Forms/BigButton.Designer.cs create mode 100644 RyzStudio/Windows/Forms/BigButton.cs create mode 100644 RyzStudio/Windows/Forms/BigButton.resx create mode 100644 RyzStudio/Windows/Forms/BigUserControl.Designer.cs create mode 100644 RyzStudio/Windows/Forms/BigUserControl.cs create mode 100644 RyzStudio/Windows/Forms/MovableTreeView.cs create mode 100644 SessionFileFormat.cs create mode 100644 UpdateIconForm.Designer.cs create mode 100644 UpdateIconForm.cs create mode 100644 UpdateIconForm.resx create mode 100644 bomg-2.ico create mode 100644 bomg-4.ico create mode 100644 bomg.csproj create mode 100644 packages.config diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be8a03f --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/skye.sln +/bomg.csproj.user +/bin +/obj +/packages +/.vs/skye/v14/*.suo diff --git a/BookmarkEditForm.Designer.cs b/BookmarkEditForm.Designer.cs new file mode 100644 index 0000000..fe91676 --- /dev/null +++ b/BookmarkEditForm.Designer.cs @@ -0,0 +1,224 @@ +namespace bzit.bomg +{ + partial class BookmarkEditForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BookmarkEditForm)); + this.label1 = new System.Windows.Forms.Label(); + this.tbxAddress = new System.Windows.Forms.TextBox(); + this.tbxName = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.tbxDescription = new System.Windows.Forms.TextBox(); + this.oToolTip = new System.Windows.Forms.ToolTip(this.components); + this.label3 = new System.Windows.Forms.Label(); + this.pbxIcon = new System.Windows.Forms.PictureBox(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.button1 = new RyzStudio.Windows.Forms.BigButton(); + this.btnSave = new RyzStudio.Windows.Forms.BigButton(); + ((System.ComponentModel.ISupportInitialize)(this.pbxIcon)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 12); + this.label1.Margin = new System.Windows.Forms.Padding(3); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(39, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Name:"; + // + // tbxAddress + // + this.tbxAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tbxAddress.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.tbxAddress.Location = new System.Drawing.Point(12, 78); + this.tbxAddress.MaxLength = 4096; + this.tbxAddress.Name = "tbxAddress"; + this.tbxAddress.Size = new System.Drawing.Size(240, 22); + this.tbxAddress.TabIndex = 0; + this.tbxAddress.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.textBox_PreviewKeyDown); + // + // tbxName + // + this.tbxName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tbxName.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.tbxName.Location = new System.Drawing.Point(12, 31); + this.tbxName.MaxLength = 4096; + this.tbxName.Name = "tbxName"; + this.tbxName.Size = new System.Drawing.Size(212, 22); + this.tbxName.TabIndex = 1; + this.tbxName.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.textBox_PreviewKeyDown); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 59); + this.label2.Margin = new System.Windows.Forms.Padding(3); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(51, 13); + this.label2.TabIndex = 4; + this.label2.Text = "Address:"; + // + // tbxDescription + // + this.tbxDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tbxDescription.BackColor = System.Drawing.SystemColors.Window; + this.tbxDescription.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.tbxDescription.Location = new System.Drawing.Point(12, 125); + this.tbxDescription.MaxLength = 4096; + this.tbxDescription.Multiline = true; + this.tbxDescription.Name = "tbxDescription"; + this.tbxDescription.Size = new System.Drawing.Size(240, 84); + this.tbxDescription.TabIndex = 2; + this.tbxDescription.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.textBox_PreviewKeyDown); + // + // oToolTip + // + this.oToolTip.Active = false; + this.oToolTip.BackColor = System.Drawing.Color.IndianRed; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 106); + this.label3.Margin = new System.Windows.Forms.Padding(3); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(69, 13); + this.label3.TabIndex = 55; + this.label3.Text = "Description:"; + // + // pbxIcon + // + this.pbxIcon.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.pbxIcon.BackColor = System.Drawing.SystemColors.Window; + this.pbxIcon.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.pbxIcon.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pbxIcon.ErrorImage = null; + this.pbxIcon.InitialImage = null; + this.pbxIcon.Location = new System.Drawing.Point(230, 31); + this.pbxIcon.Name = "pbxIcon"; + this.pbxIcon.Size = new System.Drawing.Size(22, 22); + this.pbxIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.pbxIcon.TabIndex = 57; + this.pbxIcon.TabStop = false; + // + // pictureBox1 + // + this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.pictureBox1.BackColor = System.Drawing.Color.Transparent; + this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.pictureBox1.ErrorImage = null; + this.pictureBox1.InitialImage = null; + this.pictureBox1.Location = new System.Drawing.Point(12, 227); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(32, 32); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.pictureBox1.TabIndex = 60; + this.pictureBox1.TabStop = false; + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.button1.BackColor = System.Drawing.Color.WhiteSmoke; + this.button1.Location = new System.Drawing.Point(118, 227); + this.button1.MaximumSize = new System.Drawing.Size(120, 32); + this.button1.MinimumSize = new System.Drawing.Size(32, 32); + this.button1.Name = "button1"; + this.button1.Padding = new System.Windows.Forms.Padding(4); + this.button1.Size = new System.Drawing.Size(32, 32); + this.button1.TabIndex = 4; + this.button1.Value = ""; + this.button1.Click += new System.EventHandler(this.btnRetrievePage_Click); + // + // btnSave + // + this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnSave.BackColor = System.Drawing.Color.WhiteSmoke; + this.btnSave.Location = new System.Drawing.Point(156, 227); + this.btnSave.MaximumSize = new System.Drawing.Size(120, 32); + this.btnSave.MinimumSize = new System.Drawing.Size(32, 32); + this.btnSave.Name = "btnSave"; + this.btnSave.Padding = new System.Windows.Forms.Padding(4); + this.btnSave.Size = new System.Drawing.Size(96, 32); + this.btnSave.TabIndex = 3; + this.btnSave.Value = "&OK"; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // BookmarkEditForm + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(264, 271); + this.Controls.Add(this.button1); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.pbxIcon); + this.Controls.Add(this.tbxDescription); + this.Controls.Add(this.label3); + this.Controls.Add(this.tbxName); + this.Controls.Add(this.label1); + this.Controls.Add(this.tbxAddress); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.label2); + this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "BookmarkEditForm"; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Edit Bookmark"; + ((System.ComponentModel.ISupportInitialize)(this.pbxIcon)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox tbxAddress; + private System.Windows.Forms.TextBox tbxName; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tbxDescription; + private System.Windows.Forms.ToolTip oToolTip; + private RyzStudio.Windows.Forms.BigButton btnSave; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.PictureBox pbxIcon; + private System.Windows.Forms.PictureBox pictureBox1; + private RyzStudio.Windows.Forms.BigButton button1; + } +} \ No newline at end of file diff --git a/BookmarkEditForm.cs b/BookmarkEditForm.cs new file mode 100644 index 0000000..25f3c02 --- /dev/null +++ b/BookmarkEditForm.cs @@ -0,0 +1,192 @@ +using System; +using System.ComponentModel; +using System.Windows.Forms; + +namespace bzit.bomg +{ + public partial class BookmarkEditForm : Form + { + private TreeNode parentNode = null; + private BookmarkItem bookmarkItem; + private bool isWorking = false; + + public BookmarkEditForm(ref TreeNode node) + { + InitializeComponent(); + + parentNode = node; + + this.StartPosition = FormStartPosition.WindowsDefaultLocation; + } + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + + button1.Button.Image = Properties.Resources.magnifier; + } + + protected override void OnShown(EventArgs e) + { + base.OnShown(e); + + if (parentNode.Tag != null) + { + if (parentNode.Tag is BookmarkItem) + { + bookmarkItem = (BookmarkItem)parentNode.Tag; + tbxName.Text = bookmarkItem.GetName(); + tbxAddress.Text = bookmarkItem.Address; + tbxDescription.Text = bookmarkItem.Description; + + if (parentNode.TreeView.ImageList != null) + { + if (parentNode.ImageIndex >= 0) + { + pbxIcon.Image = parentNode.TreeView.ImageList.Images[parentNode.ImageIndex]; + } + else + { + pbxIcon.Image = parentNode.TreeView.ImageList.Images[parentNode.ImageKey]; + } + } + } + } + } + + protected override void OnClosing(CancelEventArgs e) + { + base.OnClosing(e); + + if (this.IsWorking) + { + e.Cancel = true; + } + } + + public bool IsWorking + { + get { return isWorking; } + set + { + isWorking = value; + + tbxName.Enabled = tbxAddress.Enabled = tbxDescription.Enabled = !value; + btnSave.Enabled = !value; + button1.Enabled = !value; + + pictureBox1.Image = (value) ? Properties.Resources.aniZomq2x32 : null; + } + } + + private void textBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) + { + if (this.IsWorking) + { + return; + } + + if (e.KeyCode == Keys.Escape) + { + this.Close(); + } + } + + private void btnRetrievePage_Click(object sender, EventArgs e) + { + if (this.IsWorking) + { + return; + } + + if (string.IsNullOrWhiteSpace(tbxAddress.Text)) + { + return; + } + + this.IsWorking = true; + oToolTip.SetToolTip(pictureBox1, ""); + + BookmarkItem bi = new BookmarkItem(); + bi.OnRetrieveCompleted += bookmarkItem_OnRetrieveCompleted; + bi.RetrieveAsync(tbxAddress.Text.Trim()); + } + + private void btnSave_Click(object sender, EventArgs e) + { + if (this.IsWorking) + { + return; + } + + if (bookmarkItem == null) + { + bookmarkItem = new BookmarkItem(); + } + + bookmarkItem.ChangeName(tbxName.Text.Trim()); + bookmarkItem.Address = tbxAddress.Text.Trim(); + bookmarkItem.Description = tbxDescription.Text.Trim(); + + parentNode.Text = tbxName.Text.Trim(); +//// parentNode.ImageIndex = parentNode.SelectedImageIndex = 3; + parentNode.ToolTipText = string.Concat(bookmarkItem.Address, Environment.NewLine, bookmarkItem.Description).Trim(); + parentNode.Tag = bookmarkItem; + + BookmarkTreeView bookmarkTreeView = (BookmarkTreeView)parentNode.TreeView; + if (bookmarkTreeView != null) + { + parentNode.ImageIndex = parentNode.SelectedImageIndex = bookmarkTreeView.AddToIconList(bookmarkItem); + } + + this.Close(); + } + + protected void bookmarkItem_OnRetrieveCompleted(BookmarkItem sender, bool hasError, string message) + { + if (string.IsNullOrEmpty(sender.TempName)) + { + if (MessageBox.Show("The page could not be retrieved or the title is blank. Do you want to keep your original title?", "Keep original?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) + { + bookmarkItem.TempName = sender.TempName; + + tbxName.Text = bookmarkItem.TempName; + + // don't replace with blank + if (!string.IsNullOrEmpty(sender.Description)) + { + bookmarkItem.Description = sender.Description; + } + } + } + else + { + bookmarkItem.TempName = sender.TempName; + + tbxName.Text = bookmarkItem.TempName; + + // don't replace with blank + if (!string.IsNullOrEmpty(sender.Description)) + { + bookmarkItem.Description = sender.Description; + } + } + + // don't replace with blank + if (sender.IconData != null) + { + bookmarkItem.IconData = sender.IconData; + } + + tbxDescription.Text = bookmarkItem.Description; + pbxIcon.Image = (bookmarkItem.Icon == null) ? parentNode.TreeView.ImageList.Images[3] : bookmarkItem.Icon; + + if (hasError) + { + oToolTip.SetToolTip(pictureBox1, message); + } + + this.IsWorking = false; + } + } +} \ No newline at end of file diff --git a/BookmarkEditForm.resx b/BookmarkEditForm.resx new file mode 100644 index 0000000..3b96111 --- /dev/null +++ b/BookmarkEditForm.resx @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAHQAAADQAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAAMwAA + AB0AAAAAAAAAAAAAADT5+fn1/Pz8/fz8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8/fn5 + +fMAAAAzAAAAAAAAAAEAAAA2/Pz8/vz8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8 + /P/8/Pz9AAAANgAAAAAAAAABAAAANvz8/P/8/Pz/F0JZ/ypgiP9Lib3/bqfL/+Dp8f/7+/v/+/v7//v7 + +//7+/v//Pz8/wAAADYAAAABAAAAAQAAADb8/Pz//Pz8/y1mhP+Tx/n/kMn5/0CEyf8laq3/1OLu//r6 + +v/6+vr/+vr6//z8/P8AAAA2AAAAAQAAAAEAAAA2/Pz8//z8/P9CiKn/4PL//1OZ2P8Zeb3/SJfE/0eN + x//Y5vP/+Pj4//j4+P/8/Pz/AAAANgAAAAEAAAABAAAANvz8/P/8/Pz/pMLX/3m11f+PttH/VMnk/1rf + 9f930O3/UJzd/9/r9f/4+Pj//Pz8/wAAADYAAAABAAAAAQAAADb8/Pz//Pz8//z8/P+x1eX/dbnX/8H2 + /f9i3/f/XOL4/3jT8P9Il9z/3uny//z8/P8AAAA2AAAAAQAAAAEAAAA2/Pz8//z8/P/8/Pz//Pz8/67U + 5f92y+f/x/f9/13c9f9Z4ff/etTx/0qZ3f/U5fX/AAAANgAAAAEAAAABAAAANvz8/P/8/Pz//Pz8//z8 + /P/8/Pz/vOXy/3jT7v/H9/3/Xtz1/1ri9/951vL/UKHi/yJJalwAAAABAAAAAQAAADb8/Pz/+/v7//z8 + /P/8/Pz/+/v7//j4+P+54/D/fNTu/8P2/f9r3fb/bMrt/2Ki1/9bmM/wTo3DJwAAAAEAAAA2/Pz8//n5 + +f/5+fn/+fn5//f39//29vb/8vLy/6fZ6P+A1u7/seP5/4q/5/+t0/b/w+D8/2We0/cAAAABAAAANvz8 + /P/39/f/+fn5//f39//39/f/8/Pz//Dw8P/q6ur/ruTz/3a95/+z0vD/5fP//6vS7/9Hi8foAAAAAAAA + ADb7+/v99PT0//X19f/19fX/9fX1//Hx8f/v7+//6enp//z8/P+r1eT/V6TY/4Sw2/9FnND/KpTRXgAA + AAAAAAAz+Pj48Pv7+/38/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/4+Pj/k5OTkQAAACAAAAACAAAAAAAA + AAAAAAAAAAAAHAAAADMAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAACAAAAACAAAAAAAA + AAAAAAAAgAGsQYABrEEAAaxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQYAA + rEGAA6xBgAesQQ== + + + \ No newline at end of file diff --git a/BookmarkItem.cs b/BookmarkItem.cs new file mode 100644 index 0000000..444cb2b --- /dev/null +++ b/BookmarkItem.cs @@ -0,0 +1,386 @@ +using System; +using System.ComponentModel; +using System.Drawing; +using System.IO; +using System.Net; +using System.Windows.Forms; + +namespace bzit.bomg +{ + public class BookmarkItem + { + public delegate void RetrieveCompleted(BookmarkItem sender, bool hasError, string message); + + protected const char pathSeparator = '|'; + + protected TreeNode treeNode = null; + protected BackgroundWorker mainThread = null; + + protected bool hasRetrieveError = false; + protected string retrieveErrorMessage = null; + + public BookmarkItem() + { + this.Clear(); + } + + public new string ToString() + { + string rv = ""; + rv += "Name=" + this.Fullpath + Environment.NewLine; + rv += "Address=" + this.Address + Environment.NewLine; + rv += "Description=" + this.Description + Environment.NewLine; + rv += "Created=" + this.Created?.Trim(); + + return rv; + } + + #region public properties + + public TreeNode TreeViewNode + { + get + { + return this.treeNode; + } + + set + { + this.treeNode = value; + } + } + + public Bitmap Icon + { + get + { + if (this.IconData == null) + { + return null; + } + + try + { + Image img = Image.FromStream(new MemoryStream(this.IconData)); + return new Bitmap(img, 16, 16); + } + catch + { + return null; + } + } + } + + [DefaultValue(null)] + public byte[] IconData { get; set; } + + public string Created { get; set; } + + public string TempName { get; set; } + + public string Fullpath { get; set; } + + public string IconAddress { get; set; } + + public string Address { get; set; } + + public string Description { get; set; } + + #endregion + + #region public methods + + public void Clear() + { + this.Fullpath = string.Empty; + this.Address = string.Empty; + this.Description = string.Empty; + this.Created = string.Empty; + + if (this.mainThread == null) + { + this.mainThread = new BackgroundWorker(); + this.mainThread.WorkerReportsProgress = this.mainThread.WorkerSupportsCancellation = true; + this.mainThread.DoWork += retrieveWorker_DoWork; + this.mainThread.RunWorkerCompleted += retrieveWorker_RunWorkerCompleted; + } + } + + public string GetName() + { + if (this.Fullpath.Contains(pathSeparator.ToString())) + { + return PathDecode(this.Fullpath.Substring(this.Fullpath.LastIndexOf(pathSeparator) + 1)).Trim(); + } + + return PathDecode(this.Fullpath).Trim(); + } + + public void ChangeName(string newName) + { + string prefix = (this.Fullpath.Contains(pathSeparator.ToString()) ? this.Fullpath.Substring(0, this.Fullpath.IndexOf(pathSeparator)).Trim() : string.Empty); + + this.Fullpath = string.Concat(prefix, pathSeparator, PathEncode(newName.Trim())); + } + + public void GetFaviconAddress() + { + hasRetrieveError = false; + retrieveErrorMessage = string.Empty; + + this.IconData = null; + + WebClient webClient = new WebClient(); + webClient.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore); + + string sourceCode = string.Empty; + + try + { + sourceCode = webClient.DownloadString(this.Address); + } + catch (Exception exc) + { + hasRetrieveError = true; + retrieveErrorMessage = exc.Message; + return; + } + + HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); + document.LoadHtml(sourceCode); + + // parse icon + HtmlAgilityPack.HtmlNodeCollection hnc = document.DocumentNode.SelectNodes("//link"); + if (hnc != null) + { + foreach (HtmlAgilityPack.HtmlNode node in hnc) + { + if (node.Attributes["rel"] == null) + { + continue; + } + + string nodeAttr = node.Attributes["rel"].Value.Trim(); + if (nodeAttr.ToLower().Contains("icon")) + { + if (!string.IsNullOrEmpty(this.IconAddress)) + { + continue; + } + + if (node.Attributes["href"] != null) + { + Uri iconPath; + bool rv = Uri.TryCreate(new Uri(this.Address), WebUtility.HtmlDecode(node.Attributes["href"].Value).Trim(), out iconPath); + if (rv) + { + this.IconAddress = iconPath.ToString(); + } + + break; + } + } + } + } + + // default favicon + if (string.IsNullOrEmpty(this.IconAddress)) + { + Uri iconPath; + if (Uri.TryCreate(new Uri(this.Address), "/favicon.ico", out iconPath)) + { + this.IconAddress = iconPath.ToString(); + } + } + + // load icon image + if (!string.IsNullOrEmpty(this.IconAddress)) + { + try + { + this.IconData = webClient.DownloadData(this.IconAddress); + + if (!RyzStudio.IO.FileType.IsImage(this.IconData)) + { + this.IconData = null; + } + } + catch + { + // do nothing + } + } + } + + public void RetrieveAsync() + { + if (this.mainThread.IsBusy) + { + return; + } + + this.mainThread.RunWorkerAsync(); + } + + public void RetrieveAsync(string address) + { + if (this.mainThread.IsBusy) + { + return; + } + + this.Address = address; + this.mainThread.RunWorkerAsync(); + } + + #endregion + + #region events & delegate + + public RetrieveCompleted OnRetrieveCompleted = null; + + #endregion + + protected void retrieveWorker_DoWork(object sender, DoWorkEventArgs e) + { + hasRetrieveError = false; + retrieveErrorMessage = string.Empty; + + this.IconData = null; + this.Fullpath = string.Empty; + this.Description = string.Empty; + this.IconAddress = string.Empty; + + WebClient webClient = new WebClient(); + webClient.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore); + + string sourceCode = string.Empty; + + try + { + sourceCode = webClient.DownloadString(this.Address); + } + catch (Exception exc) + { + hasRetrieveError = true; + retrieveErrorMessage = exc.Message; + return; + } + + HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); + document.LoadHtml(sourceCode); + + // parse title + HtmlAgilityPack.HtmlNodeCollection hnc = document.DocumentNode.SelectNodes("//title"); + if (hnc != null) + { + if (hnc.Count > 0) + { + this.TempName = WebUtility.HtmlDecode(hnc[0].InnerHtml).Trim(); + } + } + + // parse description + hnc = document.DocumentNode.SelectNodes("//meta"); + if (hnc != null) + { + foreach (HtmlAgilityPack.HtmlNode node in hnc) + { + if (node.Attributes["name"] == null) + { + continue; + } + + string nodeAttr = node.Attributes["name"].Value.Trim(); + if (nodeAttr.Equals("description", StringComparison.CurrentCultureIgnoreCase)) + { + if (!string.IsNullOrEmpty(this.Description)) + { + continue; + } + + if (node.Attributes["content"] != null) + { + this.Description = WebUtility.HtmlDecode(node.Attributes["content"].Value).Trim(); + break; + } + } + } + } + + // parse icon + hnc = document.DocumentNode.SelectNodes("//link"); + if (hnc != null) + { + foreach (HtmlAgilityPack.HtmlNode node in hnc) + { + if (node.Attributes["rel"] == null) + { + continue; + } + + string nodeAttr = node.Attributes["rel"].Value.Trim(); + if (nodeAttr.ToLower().Contains("icon")) + { + if (!string.IsNullOrEmpty(this.IconAddress)) + { + continue; + } + + if (node.Attributes["href"] != null) + { + Uri iconPath; + bool rv = Uri.TryCreate(new Uri(this.Address), WebUtility.HtmlDecode(node.Attributes["href"].Value).Trim(), out iconPath); + if (rv) + { + this.IconAddress = iconPath.ToString(); + } + + break; + } + } + } + } + + // default favicon + if (string.IsNullOrEmpty(this.IconAddress)) + { + Uri iconPath; + if (Uri.TryCreate(new Uri(this.Address), "/favicon.ico", out iconPath)) + { + this.IconAddress = iconPath.ToString(); + } + } + + // load icon image + if (!string.IsNullOrEmpty(this.IconAddress)) + { + try + { + this.IconData = webClient.DownloadData(this.IconAddress); + + if (!RyzStudio.IO.FileType.IsImage(this.IconData)) + { + this.IconData = null; + } + } + catch + { + // do nothing + } + } + } + + protected void retrieveWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + this.OnRetrieveCompleted?.Invoke(this, hasRetrieveError, retrieveErrorMessage); + } + +// protected string CustomDecode(string text) { return WebUtility.HtmlDecode(text); } + + ////protected string PathEncode(string text) { return RyzStudio.String.EncodeTo64(text); } + ////protected string PathDecode(string text) { return RyzStudio.String.DecodeFrom64(text); } + protected string PathEncode(string text) { return System.Web.HttpUtility.UrlEncodeUnicode(text); } + protected string PathDecode(string text) { return System.Web.HttpUtility.UrlDecode(text); } + } +} \ No newline at end of file diff --git a/BookmarkTreeView.Designer.cs b/BookmarkTreeView.Designer.cs new file mode 100644 index 0000000..a085fe3 --- /dev/null +++ b/BookmarkTreeView.Designer.cs @@ -0,0 +1,36 @@ +namespace bzit.bomg +{ + partial class BookmarkTreeView + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/BookmarkTreeView.cs b/BookmarkTreeView.cs new file mode 100644 index 0000000..9b4c5d3 --- /dev/null +++ b/BookmarkTreeView.cs @@ -0,0 +1,125 @@ +using System; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +namespace bzit.bomg +{ + public partial class BookmarkTreeView : RyzStudio.Windows.Forms.MovableTreeView + { + protected ImageList iconList = null; + + public BookmarkTreeView() + { + InitializeComponent(); + + this.iconList = new ImageList(); + this.iconList.ColorDepth = ColorDepth.Depth16Bit; + this.iconList.ImageSize = new Size(16, 16); + this.iconList.TransparentColor = Color.Transparent; + + this.iconList.Images.Clear(); + this.iconList.Images.Add(Properties.Resources.transmit_blue); + this.iconList.Images.Add(Properties.Resources.folder); + this.iconList.Images.Add(Properties.Resources.folder_explore); +//// this.iconList.Images.Add(Properties.Resources.page_white_gray_green); + this.iconList.Images.Add(Properties.Resources.page_white_world_bw); + + this.ImageList = this.iconList; + } + + #region encapsulation + + [Browsable(false)] + public new ImageList ImageList + { + get { return base.ImageList; } + set { base.ImageList = value; } + } + + #endregion + + #region public properties + + [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), DefaultValue(null)] + public IconDatabase IconDatabase { get; set; } + + #endregion + + #region integrated behaviour + + protected override void OnAddItemNode(TreeNode node) + { + base.OnAddItemNode(node); + + BookmarkItem bi = new BookmarkItem(); + node.Tag = bi; + } + + #endregion + + public void AddBookmarkItem(string name, BookmarkItem tag) + { + if (this.Nodes.Count <= 0) + { + return; + } + + TreeNode tn = AddBookmarkPageFullPath(name.Trim(), 3); + tn.Tag = tag; + tn.ToolTipText = tag.Address + Environment.NewLine + tag.Description; + + // load icon + if (this.IconDatabase.HasIcon(tag.Address)) + { + try + { + Image icon = this.IconDatabase.GetIcon(tag.Address); + if (icon != null) + { + tn.TreeView.ImageList.Images.Add(tag.Address, icon); + tn.ImageKey = tn.SelectedImageKey = tag.Address; + } + } + catch + { + // do nothing + } + } + } + + public int AddToIconList(BookmarkItem sender) + { + Image rs = null; + if (this.IconDatabase.HasIcon(sender.Address)) + { + rs = this.IconDatabase.GetIcon(sender.Address); + } + else + { + if (this.IconDatabase.AddIcon(sender.Address, sender.IconData)) + { + rs = sender.Icon; + } + } + + if (rs != null) + { + this.ImageList.Images.Add(sender.Address, rs); + return this.ImageList.Images.IndexOfKey(sender.Address); + } + + return 3; + } + + public void AddIcon(BookmarkItem sender) + { + if (this.IconDatabase.HasIcon(sender.Address)) + { + return; + } + + this.IconDatabase.AddIcon(sender.Address, sender.IconData); + } + } +} \ No newline at end of file diff --git a/FindForm.Designer.cs b/FindForm.Designer.cs new file mode 100644 index 0000000..e22a971 --- /dev/null +++ b/FindForm.Designer.cs @@ -0,0 +1,118 @@ +namespace bzit.bomg +{ + partial class FindForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FindForm)); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.btnSave = new RyzStudio.Windows.Forms.BigButton(); + this.button3 = new RyzStudio.Windows.Forms.BigButton(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 12); + this.label1.Margin = new System.Windows.Forms.Padding(3); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(96, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Find a search term"; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Location = new System.Drawing.Point(12, 31); + this.textBox1.MaxLength = 128; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(280, 21); + this.textBox1.TabIndex = 0; + this.textBox1.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.textBox1_PreviewKeyDown); + // + // btnSave + // + this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnSave.BackColor = System.Drawing.Color.WhiteSmoke; + this.btnSave.Location = new System.Drawing.Point(196, 67); + this.btnSave.MaximumSize = new System.Drawing.Size(120, 32); + this.btnSave.MinimumSize = new System.Drawing.Size(32, 32); + this.btnSave.Name = "btnSave"; + this.btnSave.Padding = new System.Windows.Forms.Padding(4); + this.btnSave.Size = new System.Drawing.Size(96, 32); + this.btnSave.TabIndex = 22; + this.btnSave.Value = "&Next"; + this.btnSave.Click += new System.EventHandler(this.button1_Click); + // + // button3 + // + this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.button3.BackColor = System.Drawing.Color.WhiteSmoke; + this.button3.Location = new System.Drawing.Point(94, 67); + this.button3.MaximumSize = new System.Drawing.Size(120, 32); + this.button3.MinimumSize = new System.Drawing.Size(32, 32); + this.button3.Name = "button3"; + this.button3.Padding = new System.Windows.Forms.Padding(4); + this.button3.Size = new System.Drawing.Size(96, 32); + this.button3.TabIndex = 23; + this.button3.Value = "&Find"; + this.button3.Click += new System.EventHandler(this.button2_Click); + // + // FindForm + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(304, 111); + this.Controls.Add(this.button3); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.Font = new System.Drawing.Font("Tahoma", 8.25F); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FindForm"; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Find"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private RyzStudio.Windows.Forms.BigButton btnSave; + private RyzStudio.Windows.Forms.BigButton button3; + } +} \ No newline at end of file diff --git a/FindForm.cs b/FindForm.cs new file mode 100644 index 0000000..896c607 --- /dev/null +++ b/FindForm.cs @@ -0,0 +1,102 @@ +using System; +using System.Windows.Forms; + +namespace bzit.bomg +{ + public partial class FindForm : Form + { + private MainForm parentForm = null; + private bool findNextNew = false; + + public FindForm(MainForm form) + { + InitializeComponent(); + + parentForm = form; + } + + private void button2_Click(object sender, EventArgs e) + { + if (parentForm == null) + { + return; + } + + if (string.IsNullOrEmpty(textBox1.Text)) + { + return; + } + + if (parentForm.treeView1.Nodes.Count <= 0) + { + return; + } + + findNextNew = false; + parentForm.treeView1.FindTextNode(parentForm.treeView1.Nodes[0], textBox1.Text.Trim()); + } + + private void button1_Click(object sender, EventArgs e) + { + if (parentForm == null) + { + return; + } + + if (string.IsNullOrEmpty(textBox1.Text)) + { + return; + } + + if (parentForm.treeView1.Nodes.Count <= 0) + { + return; + } + + if (parentForm.treeView1.SelectedNode == null) + { + parentForm.treeView1.SelectedNode = parentForm.treeView1.Nodes[0]; + } + + findNextNew = false; + + bool rv = parentForm.treeView1.FindTextNode(parentForm.treeView1.SelectedNode, textBox1.Text.Trim()); + if (!rv) + { + findNextNew = true; + } + } + +#region behaviour + + private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) + { + switch (e.KeyCode) + { + case Keys.Enter: + if (string.IsNullOrEmpty(textBox1.Text)) + { + return; + } + + if (findNextNew) + { + button2_Click(sender, null); + } + else + { + button1_Click(sender, null); + } + + break; + case Keys.Escape: + this.Close(); + break; + default: break; + } + } + +#endregion + + } +} \ No newline at end of file diff --git a/FindForm.resx b/FindForm.resx new file mode 100644 index 0000000..dbc6f20 --- /dev/null +++ b/FindForm.resx @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATXJQDEFmRGgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhZZ0GGmGZrSFm + nP8RWpKHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxcakGKmykrVSM + u/+ItN3/F16W/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDfrYGO3iwrWOW + xP+cwOT/ZZjH/x5knOsAAAAAAAAAAAAAAAAAAAAA3bGOAtmtiZfWqITj06R+/dCfev3Nm3XkoZKJ3nSh + zP+qy+j/daPO/y9vp+snaqInAAAAAAAAAAAAAAAA5LyaAuG3lcDoya3/9eHN//fl0//35dH/893I/9+5 + m//Hp5D/ha3V/0B8tOs4dq4nAAAAAAAAAAAAAAAAAAAAAOjCoZft0Lb/+OjZ//XeyP/z2Lz/89a6//Tb + wf/35NL/37qc/5yTkfdKg7snAAAAAAAAAAAAAAAAAAAAAAAAAADsyKfj9+fX//bhzP/028H/9Nq///PY + vP/z17r/9NvB//Peyf/NnnrnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8M6t/fns3//138j/9d3F//Tc + wv/02sD/89m9//PXvP/45tP/06R+/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPTTs/357eH/9uHM//Xf + yf/13sf/9NzD//Tbwf/02r//+OfW/9ephf0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD317jj+eve//fn + 1v/24cz/9eDK//XeyP/13cT/9uHL//Xi0P/br4vjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+tu8l/ji + zP/67uP/9+fW//bizv/24cv/9uPQ//nq3f/sz7T/37WSlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPze + vwL6273A+eLN//rs3v/57uL/+e3i//jp2v/w1bz/57+ewOO7mQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA/N7AAvrcvpf52brj9ta3/fTTs/3xz67j7suql+vFpQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA//+sQf/nrEH/w6xB/4OsQf8DrEHAA6xBgAesQYAPrEGAH6xBgB+sQYAfrEGAH6xBgB+sQYAf + rEHAP6xB//+sQQ== + + + \ No newline at end of file diff --git a/IconDatabase.cs b/IconDatabase.cs new file mode 100644 index 0000000..44327d4 --- /dev/null +++ b/IconDatabase.cs @@ -0,0 +1,134 @@ +using System; +using System.Drawing; +using System.IO; +using RyzStudio.Data.SQLite; + +namespace bzit.bomg +{ + public class IconDatabase : SQLiteDatabase2 + { + public IconDatabase() + { + this.requiredTableList = new string[] { "bzt_app_bomg_icons" }; + } + + protected override bool Prepare() + { + if (dbConnection == null) + { + return false; + } + + return this.DoNonQuery(@" + CREATE TABLE bzt_app_bomg_icons + ( + ico_id INTEGER PRIMARY KEY, + ico_key TEXT, + ico_hash TEXT, + ico_content BLOB + ) + ") >= 0; + } + +#region public methods + + public bool HasIcon(string url) + { + return this.DoQueryExist("SELECT 1 FROM bzt_app_bomg_icons WHERE ico_key='" + SQLiteDatabase2.EscapeValue(url) + "'"); + } + +/* public bool AddIcon(string url, Image image) + { + if (string.IsNullOrWhiteSpace(url)) + { + return false; + } + + if (image == null) + { + return false; + } + + if (this.HasIcon(url)) + { + return this.DoNonQuery("UPDATE bzt_app_bomg_icons SET='" + imageToSQLString(image) + "' WHERE ico_key='" + SQLiteDatabase2.escapeValue(url) + "';") >= 0; + } + else + { + return this.DoNonQuery("INSERT INTO bzt_app_bomg_icons (ico_key, ico_content) VALUES ('" + SQLiteDatabase2.escapeValue(url) + "', '" + imageToSQLString(image) + "');") >= 0; + } + }*/ + + public bool AddIcon(string url, byte[] image) + { + if (string.IsNullOrWhiteSpace(url)) + { + return false; + } + + if (image == null) + { + return false; + } + + if (this.HasIcon(url)) + { + return this.DoNonQuery("UPDATE bzt_app_bomg_icons SET='" + bytesToSQLString(image) + "' WHERE ico_key='" + SQLiteDatabase2.EscapeValue(url) + "';") >= 0; + } + else + { + return this.DoNonQuery("INSERT INTO bzt_app_bomg_icons (ico_key, ico_content) VALUES ('" + SQLiteDatabase2.EscapeValue(url) + "', '" + bytesToSQLString(image) + "');") >= 0; + } + } + + public Image GetIcon(string url) + { + if (!this.HasIcon(url)) + { + return null; + } + + string rs = this.DoQuerySingle("SELECT ico_content FROM bzt_app_bomg_icons WHERE ico_key='" + SQLiteDatabase2.EscapeValue(url) + "'"); + return sqlStringToImage(rs); + } + + public void DeleteIcon(string url) + { + if (string.IsNullOrWhiteSpace(url)) + { + return; + } + + this.DoNonQuery("DELETE FROM bzt_app_bomg_icons WHERE ico_key='" + SQLiteDatabase2.EscapeValue(url) + "';"); + } + +#endregion + + protected string imageToSQLString(Image image) + { + MemoryStream stream = new MemoryStream(); + image.Save(stream, new System.Drawing.Imaging.ImageFormat(image.RawFormat.Guid)); + stream.Close(); + + byte[] byteArray = stream.ToArray(); + + return bytesToSQLString(byteArray); + } + + protected string bytesToSQLString(byte[] image) + { + return Convert.ToBase64String(image); + } + + protected Image sqlStringToImage(string base64_string) + { + byte[] byteArray2 = Convert.FromBase64String(base64_string); + + MemoryStream stream2 = new MemoryStream(); + stream2.Write(byteArray2, 0, byteArray2.Length); + + Image displayImage = Image.FromStream(stream2); + return displayImage; + } + } +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs new file mode 100644 index 0000000..579f3d9 --- /dev/null +++ b/MainForm.Designer.cs @@ -0,0 +1,786 @@ +namespace bzit.bomg +{ + partial class MainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.treeMenuItem = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem6 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.listViewMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.moveFileToToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.statusBar1 = new System.Windows.Forms.StatusBar(); + this.statusBarPanel1 = new System.Windows.Forms.StatusBarPanel(); + this.statusBarPanel2 = new System.Windows.Forms.StatusBarPanel(); + this.oToolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.imageList1 = new System.Windows.Forms.ImageList(this.components); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton(); + this.newFileMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.openFileMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.closeFileMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.saveFileMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveAsFileMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.exportFileMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.exitFileMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripDropDownButton2 = new System.Windows.Forms.ToolStripDropDownButton(); + this.findEditMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripDropDownButton3 = new System.Windows.Forms.ToolStripDropDownButton(); + this.expandAllViewMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.collapseAllViewMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripDropDownButton4 = new System.Windows.Forms.ToolStripDropDownButton(); + this.updateIconsToolMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); + this.optionsToolMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripDropDownButton5 = new System.Windows.Forms.ToolStripDropDownButton(); + this.viewHelpHelpMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); + this.aboutHelpMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripDropDownButton7 = new System.Windows.Forms.ToolStripDropDownButton(); + this.alwaysOnTopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); + this.treeMenuFolder = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem16 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.sortToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItem12 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem13 = new System.Windows.Forms.ToolStripMenuItem(); + this.saveFileDialog = new System.Windows.Forms.SaveFileDialog(); + this.toolStrip2 = new System.Windows.Forms.ToolStrip(); + this.newMenuBarItem = new System.Windows.Forms.ToolStripButton(); + this.openMenuBarItem = new System.Windows.Forms.ToolStripButton(); + this.saveMenuBarItem = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.treeMenuRoot = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItem17 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem18 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItem20 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItem22 = new System.Windows.Forms.ToolStripMenuItem(); + this.treeView1 = new bzit.bomg.BookmarkTreeView(); + this.treeMenuItem.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel2)).BeginInit(); + this.toolStrip1.SuspendLayout(); + this.treeMenuFolder.SuspendLayout(); + this.toolStrip2.SuspendLayout(); + this.treeMenuRoot.SuspendLayout(); + this.SuspendLayout(); + // + // treeMenuItem + // + this.treeMenuItem.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem4, + this.toolStripSeparator3, + this.toolStripMenuItem8, + this.toolStripMenuItem6, + this.toolStripSeparator2, + this.listViewMenuItem1, + this.moveFileToToolStripMenuItem}); + this.treeMenuItem.Name = "listViewMenu"; + this.treeMenuItem.Size = new System.Drawing.Size(139, 126); + // + // toolStripMenuItem4 + // + this.toolStripMenuItem4.Name = "toolStripMenuItem4"; + this.toolStripMenuItem4.Size = new System.Drawing.Size(138, 22); + this.toolStripMenuItem4.Text = "&Open"; + this.toolStripMenuItem4.Click += new System.EventHandler(this.toolStripMenuItem4_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(135, 6); + // + // toolStripMenuItem8 + // + this.toolStripMenuItem8.Name = "toolStripMenuItem8"; + this.toolStripMenuItem8.Size = new System.Drawing.Size(138, 22); + this.toolStripMenuItem8.Text = "E&dit"; + this.toolStripMenuItem8.Click += new System.EventHandler(this.toolStripMenuItem8_Click); + // + // toolStripMenuItem6 + // + this.toolStripMenuItem6.Name = "toolStripMenuItem6"; + this.toolStripMenuItem6.Size = new System.Drawing.Size(138, 22); + this.toolStripMenuItem6.Text = "D&elete"; + this.toolStripMenuItem6.Click += new System.EventHandler(this.toolStripMenuItem6_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(135, 6); + // + // listViewMenuItem1 + // + this.listViewMenuItem1.Name = "listViewMenuItem1"; + this.listViewMenuItem1.Size = new System.Drawing.Size(138, 22); + this.listViewMenuItem1.Text = "Move &Up"; + this.listViewMenuItem1.Click += new System.EventHandler(this.toolStripMenuItem12_Click); + // + // moveFileToToolStripMenuItem + // + this.moveFileToToolStripMenuItem.Name = "moveFileToToolStripMenuItem"; + this.moveFileToToolStripMenuItem.Size = new System.Drawing.Size(138, 22); + this.moveFileToToolStripMenuItem.Text = "Move &Down"; + this.moveFileToToolStripMenuItem.Click += new System.EventHandler(this.toolStripMenuItem13_Click); + // + // statusBar1 + // + this.statusBar1.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.statusBar1.Location = new System.Drawing.Point(0, 634); + this.statusBar1.Name = "statusBar1"; + this.statusBar1.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] { + this.statusBarPanel1, + this.statusBarPanel2}); + this.statusBar1.ShowPanels = true; + this.statusBar1.Size = new System.Drawing.Size(304, 20); + this.statusBar1.SizingGrip = false; + this.statusBar1.TabIndex = 9; + // + // statusBarPanel1 + // + this.statusBarPanel1.AutoSize = System.Windows.Forms.StatusBarPanelAutoSize.Spring; + this.statusBarPanel1.Name = "statusBarPanel1"; + this.statusBarPanel1.Width = 204; + // + // statusBarPanel2 + // + this.statusBarPanel2.Alignment = System.Windows.Forms.HorizontalAlignment.Center; + this.statusBarPanel2.Name = "statusBarPanel2"; + // + // imageList1 + // + this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); + this.imageList1.TransparentColor = System.Drawing.Color.Transparent; + this.imageList1.Images.SetKeyName(0, "transmit_blue.png"); + this.imageList1.Images.SetKeyName(1, "folder.png"); + this.imageList1.Images.SetKeyName(2, "folder_explore.png"); + this.imageList1.Images.SetKeyName(3, "page_blue.png"); + this.imageList1.Images.SetKeyName(4, "page.png"); + this.imageList1.Images.SetKeyName(5, "page_green.png"); + this.imageList1.Images.SetKeyName(6, "page_red.png"); + // + // toolStrip1 + // + this.toolStrip1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripDropDownButton1, + this.toolStripDropDownButton2, + this.toolStripDropDownButton3, + this.toolStripDropDownButton4, + this.toolStripDropDownButton5, + this.toolStripDropDownButton7}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Padding = new System.Windows.Forms.Padding(5, 0, 1, 0); + this.toolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.toolStrip1.Size = new System.Drawing.Size(304, 25); + this.toolStrip1.TabIndex = 25; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripDropDownButton1 + // + this.toolStripDropDownButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripDropDownButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.newFileMenuItem, + this.openFileMenuItem, + this.toolStripSeparator1, + this.closeFileMenuItem, + this.toolStripSeparator4, + this.saveFileMenuItem, + this.saveAsFileMenuItem, + this.toolStripSeparator8, + this.exportFileMenuItem, + this.toolStripSeparator6, + this.exitFileMenuItem}); + this.toolStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripDropDownButton1.Name = "toolStripDropDownButton1"; + this.toolStripDropDownButton1.ShowDropDownArrow = false; + this.toolStripDropDownButton1.Size = new System.Drawing.Size(29, 22); + this.toolStripDropDownButton1.Text = "&File"; + // + // newFileMenuItem + // + this.newFileMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("newFileMenuItem.Image"))); + this.newFileMenuItem.Name = "newFileMenuItem"; + this.newFileMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); + this.newFileMenuItem.Size = new System.Drawing.Size(186, 22); + this.newFileMenuItem.Text = "&New"; + this.newFileMenuItem.Click += new System.EventHandler(this.newSessionToolStripMenuItem_Click); + // + // openFileMenuItem + // + this.openFileMenuItem.Image = global::bzit.bomg.Properties.Resources.folder_page; + this.openFileMenuItem.Name = "openFileMenuItem"; + this.openFileMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); + this.openFileMenuItem.Size = new System.Drawing.Size(186, 22); + this.openFileMenuItem.Text = "&Open"; + this.openFileMenuItem.Click += new System.EventHandler(this.toolStripMenuItem2_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(183, 6); + // + // closeFileMenuItem + // + this.closeFileMenuItem.Name = "closeFileMenuItem"; + this.closeFileMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W))); + this.closeFileMenuItem.Size = new System.Drawing.Size(186, 22); + this.closeFileMenuItem.Text = "&Close"; + this.closeFileMenuItem.Click += new System.EventHandler(this.toolStripMenuItem3_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(183, 6); + // + // saveFileMenuItem + // + this.saveFileMenuItem.Image = global::bzit.bomg.Properties.Resources.disk; + this.saveFileMenuItem.Name = "saveFileMenuItem"; + this.saveFileMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); + this.saveFileMenuItem.Size = new System.Drawing.Size(186, 22); + this.saveFileMenuItem.Text = "&Save"; + this.saveFileMenuItem.Click += new System.EventHandler(this.importSnapshotToolStripMenuItem_Click); + // + // saveAsFileMenuItem + // + this.saveAsFileMenuItem.Image = global::bzit.bomg.Properties.Resources.page_white_disk; + this.saveAsFileMenuItem.Name = "saveAsFileMenuItem"; + this.saveAsFileMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + | System.Windows.Forms.Keys.S))); + this.saveAsFileMenuItem.Size = new System.Drawing.Size(186, 22); + this.saveAsFileMenuItem.Text = "Save &As"; + this.saveAsFileMenuItem.Click += new System.EventHandler(this.exportSnapshotToolStripMenuItem_Click); + // + // toolStripSeparator8 + // + this.toolStripSeparator8.Name = "toolStripSeparator8"; + this.toolStripSeparator8.Size = new System.Drawing.Size(183, 6); + // + // exportFileMenuItem + // + this.exportFileMenuItem.Enabled = false; + this.exportFileMenuItem.Name = "exportFileMenuItem"; + this.exportFileMenuItem.Size = new System.Drawing.Size(186, 22); + this.exportFileMenuItem.Text = "&Export"; + this.exportFileMenuItem.Click += new System.EventHandler(this.toolStripMenuItem7_Click); + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(183, 6); + // + // exitFileMenuItem + // + this.exitFileMenuItem.Name = "exitFileMenuItem"; + this.exitFileMenuItem.Size = new System.Drawing.Size(186, 22); + this.exitFileMenuItem.Text = "E&xit"; + this.exitFileMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem1_Click); + // + // toolStripDropDownButton2 + // + this.toolStripDropDownButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripDropDownButton2.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.findEditMenuItem}); + this.toolStripDropDownButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripDropDownButton2.Name = "toolStripDropDownButton2"; + this.toolStripDropDownButton2.ShowDropDownArrow = false; + this.toolStripDropDownButton2.Size = new System.Drawing.Size(31, 22); + this.toolStripDropDownButton2.Text = "&Edit"; + // + // findEditMenuItem + // + this.findEditMenuItem.Image = global::bzit.bomg.Properties.Resources.magnifier; + this.findEditMenuItem.Name = "findEditMenuItem"; + this.findEditMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F))); + this.findEditMenuItem.Size = new System.Drawing.Size(137, 22); + this.findEditMenuItem.Text = "&Find"; + this.findEditMenuItem.Click += new System.EventHandler(this.toolStripButton5_Click); + // + // toolStripDropDownButton3 + // + this.toolStripDropDownButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripDropDownButton3.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.expandAllViewMenuItem, + this.collapseAllViewMenuItem}); + this.toolStripDropDownButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripDropDownButton3.Name = "toolStripDropDownButton3"; + this.toolStripDropDownButton3.ShowDropDownArrow = false; + this.toolStripDropDownButton3.Size = new System.Drawing.Size(36, 22); + this.toolStripDropDownButton3.Text = "&View"; + // + // expandAllViewMenuItem + // + this.expandAllViewMenuItem.Enabled = false; + this.expandAllViewMenuItem.Name = "expandAllViewMenuItem"; + this.expandAllViewMenuItem.Size = new System.Drawing.Size(136, 22); + this.expandAllViewMenuItem.Text = "&Expand All"; + this.expandAllViewMenuItem.Click += new System.EventHandler(this.expandAllToolStripMenuItem_Click); + // + // collapseAllViewMenuItem + // + this.collapseAllViewMenuItem.Enabled = false; + this.collapseAllViewMenuItem.Name = "collapseAllViewMenuItem"; + this.collapseAllViewMenuItem.Size = new System.Drawing.Size(136, 22); + this.collapseAllViewMenuItem.Text = "&Collapse All"; + this.collapseAllViewMenuItem.Click += new System.EventHandler(this.collapseAllToolStripMenuItem_Click); + // + // toolStripDropDownButton4 + // + this.toolStripDropDownButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripDropDownButton4.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.updateIconsToolMenuItem, + this.toolStripSeparator14, + this.optionsToolMenuItem}); + this.toolStripDropDownButton4.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripDropDownButton4.Name = "toolStripDropDownButton4"; + this.toolStripDropDownButton4.ShowDropDownArrow = false; + this.toolStripDropDownButton4.Size = new System.Drawing.Size(39, 22); + this.toolStripDropDownButton4.Text = "&Tools"; + // + // updateIconsToolMenuItem + // + this.updateIconsToolMenuItem.Name = "updateIconsToolMenuItem"; + this.updateIconsToolMenuItem.Size = new System.Drawing.Size(143, 22); + this.updateIconsToolMenuItem.Text = "&Update Icons"; + this.updateIconsToolMenuItem.Click += new System.EventHandler(this.toolStripMenuItem1_Click); + // + // toolStripSeparator14 + // + this.toolStripSeparator14.Name = "toolStripSeparator14"; + this.toolStripSeparator14.Size = new System.Drawing.Size(140, 6); + // + // optionsToolMenuItem + // + this.optionsToolMenuItem.Image = global::bzit.bomg.Properties.Resources.cog; + this.optionsToolMenuItem.Name = "optionsToolMenuItem"; + this.optionsToolMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F12; + this.optionsToolMenuItem.Size = new System.Drawing.Size(143, 22); + this.optionsToolMenuItem.Text = "&Options"; + this.optionsToolMenuItem.Click += new System.EventHandler(this.optionsToolStripMenuItem1_Click); + // + // toolStripDropDownButton5 + // + this.toolStripDropDownButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripDropDownButton5.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.viewHelpHelpMenuItem, + this.toolStripSeparator12, + this.aboutHelpMenuItem}); + this.toolStripDropDownButton5.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripDropDownButton5.Name = "toolStripDropDownButton5"; + this.toolStripDropDownButton5.ShowDropDownArrow = false; + this.toolStripDropDownButton5.Size = new System.Drawing.Size(36, 22); + this.toolStripDropDownButton5.Text = "&Help"; + // + // viewHelpHelpMenuItem + // + this.viewHelpHelpMenuItem.Image = global::bzit.bomg.Properties.Resources.help; + this.viewHelpHelpMenuItem.Name = "viewHelpHelpMenuItem"; + this.viewHelpHelpMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F1; + this.viewHelpHelpMenuItem.Size = new System.Drawing.Size(146, 22); + this.viewHelpHelpMenuItem.Text = "View &Help"; + this.viewHelpHelpMenuItem.Click += new System.EventHandler(this.documentationToolStripMenuItem_Click); + // + // toolStripSeparator12 + // + this.toolStripSeparator12.Name = "toolStripSeparator12"; + this.toolStripSeparator12.Size = new System.Drawing.Size(143, 6); + // + // aboutHelpMenuItem + // + this.aboutHelpMenuItem.Image = global::bzit.bomg.Properties.Resources.comment; + this.aboutHelpMenuItem.Name = "aboutHelpMenuItem"; + this.aboutHelpMenuItem.Size = new System.Drawing.Size(146, 22); + this.aboutHelpMenuItem.Text = "&About"; + this.aboutHelpMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem1_Click); + // + // toolStripDropDownButton7 + // + this.toolStripDropDownButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripDropDownButton7.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.alwaysOnTopToolStripMenuItem}); + this.toolStripDropDownButton7.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripDropDownButton7.Name = "toolStripDropDownButton7"; + this.toolStripDropDownButton7.ShowDropDownArrow = false; + this.toolStripDropDownButton7.Size = new System.Drawing.Size(16, 22); + this.toolStripDropDownButton7.Text = "&?"; + this.toolStripDropDownButton7.Visible = false; + // + // alwaysOnTopToolStripMenuItem + // + this.alwaysOnTopToolStripMenuItem.Name = "alwaysOnTopToolStripMenuItem"; + this.alwaysOnTopToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F11))); + this.alwaysOnTopToolStripMenuItem.Size = new System.Drawing.Size(205, 22); + this.alwaysOnTopToolStripMenuItem.Text = "Always On Top"; + this.alwaysOnTopToolStripMenuItem.Click += new System.EventHandler(this.alwaysOnTopToolStripMenuItem_Click); + // + // openFileDialog + // + this.openFileDialog.DefaultExt = "ryz"; + this.openFileDialog.Filter = "Bookmarks files|*.ryz"; + this.openFileDialog.Title = "Open bookmarks file"; + // + // treeMenuFolder + // + this.treeMenuFolder.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem15, + this.toolStripMenuItem16, + this.toolStripSeparator5, + this.toolStripMenuItem14, + this.toolStripMenuItem9, + this.toolStripMenuItem11, + this.toolStripSeparator7, + this.sortToolStripMenuItem, + this.toolStripSeparator11, + this.toolStripMenuItem12, + this.toolStripMenuItem13}); + this.treeMenuFolder.Name = "listViewMenu"; + this.treeMenuFolder.Size = new System.Drawing.Size(139, 198); + // + // toolStripMenuItem15 + // + this.toolStripMenuItem15.Name = "toolStripMenuItem15"; + this.toolStripMenuItem15.Size = new System.Drawing.Size(138, 22); + this.toolStripMenuItem15.Text = "Add &Page"; + this.toolStripMenuItem15.Click += new System.EventHandler(this.toolStripMenuItem15_Click); + // + // toolStripMenuItem16 + // + this.toolStripMenuItem16.Name = "toolStripMenuItem16"; + this.toolStripMenuItem16.Size = new System.Drawing.Size(138, 22); + this.toolStripMenuItem16.Text = "Add &Folder"; + this.toolStripMenuItem16.Click += new System.EventHandler(this.toolStripMenuItem16_Click); + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(135, 6); + // + // toolStripMenuItem14 + // + this.toolStripMenuItem14.Name = "toolStripMenuItem14"; + this.toolStripMenuItem14.Size = new System.Drawing.Size(138, 22); + this.toolStripMenuItem14.Text = "&Open All"; + this.toolStripMenuItem14.Click += new System.EventHandler(this.toolStripMenuItem14_Click); + // + // toolStripMenuItem9 + // + this.toolStripMenuItem9.Name = "toolStripMenuItem9"; + this.toolStripMenuItem9.Size = new System.Drawing.Size(138, 22); + this.toolStripMenuItem9.Text = "Edi&t"; + this.toolStripMenuItem9.Click += new System.EventHandler(this.toolStripMenuItem9_Click); + // + // toolStripMenuItem11 + // + this.toolStripMenuItem11.Name = "toolStripMenuItem11"; + this.toolStripMenuItem11.Size = new System.Drawing.Size(138, 22); + this.toolStripMenuItem11.Text = "D&elete"; + this.toolStripMenuItem11.Click += new System.EventHandler(this.toolStripMenuItem6_Click); + // + // toolStripSeparator7 + // + this.toolStripSeparator7.Name = "toolStripSeparator7"; + this.toolStripSeparator7.Size = new System.Drawing.Size(135, 6); + // + // sortToolStripMenuItem + // + this.sortToolStripMenuItem.Name = "sortToolStripMenuItem"; + this.sortToolStripMenuItem.Size = new System.Drawing.Size(138, 22); + this.sortToolStripMenuItem.Text = "&Sort"; + this.sortToolStripMenuItem.Click += new System.EventHandler(this.sortToolStripMenuItem_Click); + // + // toolStripSeparator11 + // + this.toolStripSeparator11.Name = "toolStripSeparator11"; + this.toolStripSeparator11.Size = new System.Drawing.Size(135, 6); + // + // toolStripMenuItem12 + // + this.toolStripMenuItem12.Name = "toolStripMenuItem12"; + this.toolStripMenuItem12.Size = new System.Drawing.Size(138, 22); + this.toolStripMenuItem12.Text = "Move &Up"; + this.toolStripMenuItem12.Click += new System.EventHandler(this.toolStripMenuItem12_Click); + // + // toolStripMenuItem13 + // + this.toolStripMenuItem13.Name = "toolStripMenuItem13"; + this.toolStripMenuItem13.Size = new System.Drawing.Size(138, 22); + this.toolStripMenuItem13.Text = "Move &Down"; + this.toolStripMenuItem13.Click += new System.EventHandler(this.toolStripMenuItem13_Click); + // + // saveFileDialog + // + this.saveFileDialog.DefaultExt = "ryz"; + this.saveFileDialog.Filter = "Bookmarks file|*.ryz|Bookmarks file (password protected)|*.ryz"; + this.saveFileDialog.Title = "Save bookmarks file"; + // + // toolStrip2 + // + this.toolStrip2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.toolStrip2.CanOverflow = false; + this.toolStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.newMenuBarItem, + this.openMenuBarItem, + this.saveMenuBarItem, + this.toolStripSeparator9}); + this.toolStrip2.Location = new System.Drawing.Point(0, 25); + this.toolStrip2.Name = "toolStrip2"; + this.toolStrip2.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.toolStrip2.Size = new System.Drawing.Size(304, 25); + this.toolStrip2.TabIndex = 26; + this.toolStrip2.Text = "toolStrip2"; + // + // newMenuBarItem + // + this.newMenuBarItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.newMenuBarItem.Image = ((System.Drawing.Image)(resources.GetObject("newMenuBarItem.Image"))); + this.newMenuBarItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.newMenuBarItem.Name = "newMenuBarItem"; + this.newMenuBarItem.Size = new System.Drawing.Size(23, 22); + this.newMenuBarItem.Text = "toolStripButton1"; + this.newMenuBarItem.ToolTipText = "New"; + this.newMenuBarItem.Click += new System.EventHandler(this.newSessionToolStripMenuItem_Click); + // + // openMenuBarItem + // + this.openMenuBarItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.openMenuBarItem.Image = global::bzit.bomg.Properties.Resources.folder_page; + this.openMenuBarItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.openMenuBarItem.Name = "openMenuBarItem"; + this.openMenuBarItem.Size = new System.Drawing.Size(23, 22); + this.openMenuBarItem.Text = "toolStripButton2"; + this.openMenuBarItem.ToolTipText = "Open"; + this.openMenuBarItem.Click += new System.EventHandler(this.toolStripMenuItem2_Click); + // + // saveMenuBarItem + // + this.saveMenuBarItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.saveMenuBarItem.Image = global::bzit.bomg.Properties.Resources.disk; + this.saveMenuBarItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.saveMenuBarItem.Name = "saveMenuBarItem"; + this.saveMenuBarItem.Size = new System.Drawing.Size(23, 22); + this.saveMenuBarItem.Text = "toolStripButton3"; + this.saveMenuBarItem.ToolTipText = "Save"; + this.saveMenuBarItem.Click += new System.EventHandler(this.importSnapshotToolStripMenuItem_Click); + // + // toolStripSeparator9 + // + this.toolStripSeparator9.Name = "toolStripSeparator9"; + this.toolStripSeparator9.Size = new System.Drawing.Size(6, 25); + // + // treeMenuRoot + // + this.treeMenuRoot.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem17, + this.toolStripMenuItem18, + this.toolStripSeparator10, + this.toolStripMenuItem20, + this.toolStripSeparator13, + this.toolStripMenuItem22}); + this.treeMenuRoot.Name = "listViewMenu"; + this.treeMenuRoot.Size = new System.Drawing.Size(133, 104); + // + // toolStripMenuItem17 + // + this.toolStripMenuItem17.Name = "toolStripMenuItem17"; + this.toolStripMenuItem17.Size = new System.Drawing.Size(132, 22); + this.toolStripMenuItem17.Text = "Add &Page"; + this.toolStripMenuItem17.Click += new System.EventHandler(this.toolStripMenuItem15_Click); + // + // toolStripMenuItem18 + // + this.toolStripMenuItem18.Name = "toolStripMenuItem18"; + this.toolStripMenuItem18.Size = new System.Drawing.Size(132, 22); + this.toolStripMenuItem18.Text = "Add &Folder"; + this.toolStripMenuItem18.Click += new System.EventHandler(this.toolStripMenuItem16_Click); + // + // toolStripSeparator10 + // + this.toolStripSeparator10.Name = "toolStripSeparator10"; + this.toolStripSeparator10.Size = new System.Drawing.Size(129, 6); + // + // toolStripMenuItem20 + // + this.toolStripMenuItem20.Name = "toolStripMenuItem20"; + this.toolStripMenuItem20.Size = new System.Drawing.Size(132, 22); + this.toolStripMenuItem20.Text = "Edi&t"; + this.toolStripMenuItem20.Click += new System.EventHandler(this.toolStripMenuItem9_Click); + // + // toolStripSeparator13 + // + this.toolStripSeparator13.Name = "toolStripSeparator13"; + this.toolStripSeparator13.Size = new System.Drawing.Size(129, 6); + // + // toolStripMenuItem22 + // + this.toolStripMenuItem22.Name = "toolStripMenuItem22"; + this.toolStripMenuItem22.Size = new System.Drawing.Size(132, 22); + this.toolStripMenuItem22.Text = "&Sort"; + this.toolStripMenuItem22.Click += new System.EventHandler(this.sortToolStripMenuItem_Click); + // + // treeView1 + // + this.treeView1.AllowDrop = true; + this.treeView1.BackColor = System.Drawing.Color.White; + this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.treeView1.HasChanged = false; + this.treeView1.HideSelection = false; + this.treeView1.HotTracking = true; + this.treeView1.ImageIndex = 0; + this.treeView1.LabelEdit = true; + this.treeView1.Location = new System.Drawing.Point(0, 50); + this.treeView1.Name = "treeView1"; + this.treeView1.SelectedImageIndex = 0; + this.treeView1.ShowNodeToolTips = true; + this.treeView1.Size = new System.Drawing.Size(304, 584); + this.treeView1.TabIndex = 24; + this.treeView1.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick); + this.treeView1.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView2_NodeMouseDoubleClick); + this.treeView1.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.treeView1_PreviewKeyDown); + // + // MainForm + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.SystemColors.Control; + this.ClientSize = new System.Drawing.Size(304, 654); + this.Controls.Add(this.treeView1); + this.Controls.Add(this.toolStrip2); + this.Controls.Add(this.statusBar1); + this.Controls.Add(this.toolStrip1); + this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MinimumSize = new System.Drawing.Size(320, 600); + this.Name = "MainForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "Bookmark Manager"; + this.treeMenuItem.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel2)).EndInit(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.treeMenuFolder.ResumeLayout(false); + this.toolStrip2.ResumeLayout(false); + this.toolStrip2.PerformLayout(); + this.treeMenuRoot.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.StatusBar statusBar1; + private System.Windows.Forms.StatusBarPanel statusBarPanel1; + private System.Windows.Forms.StatusBarPanel statusBarPanel2; + private System.Windows.Forms.ContextMenuStrip treeMenuItem; + private System.Windows.Forms.ToolStripMenuItem listViewMenuItem1; + private System.Windows.Forms.ToolStripMenuItem moveFileToToolStripMenuItem; + private System.Windows.Forms.ToolTip oToolTip1; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem8; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem6; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton1; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton2; + private System.Windows.Forms.ToolStripMenuItem newFileMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveFileMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveAsFileMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripMenuItem exitFileMenuItem; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton3; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton4; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton5; + private System.Windows.Forms.ToolStripMenuItem optionsToolMenuItem; + private System.Windows.Forms.ToolStripMenuItem viewHelpHelpMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator12; + private System.Windows.Forms.ToolStripMenuItem aboutHelpMenuItem; + private System.Windows.Forms.ImageList imageList1; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton7; + private System.Windows.Forms.ToolStripMenuItem alwaysOnTopToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem openFileMenuItem; + private System.Windows.Forms.ToolStripMenuItem closeFileMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + public BookmarkTreeView treeView1; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem4; + private System.Windows.Forms.OpenFileDialog openFileDialog; + private System.Windows.Forms.ContextMenuStrip treeMenuFolder; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem12; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem13; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; + private System.Windows.Forms.ToolStripMenuItem exportFileMenuItem; + private System.Windows.Forms.SaveFileDialog saveFileDialog; + private System.Windows.Forms.ToolStrip toolStrip2; + private System.Windows.Forms.ToolStripButton newMenuBarItem; + private System.Windows.Forms.ToolStripButton openMenuBarItem; + private System.Windows.Forms.ToolStripButton saveMenuBarItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem14; + private System.Windows.Forms.ToolStripMenuItem sortToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem15; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem16; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator11; + private System.Windows.Forms.ContextMenuStrip treeMenuRoot; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem17; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem18; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator10; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem20; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator13; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem22; + private System.Windows.Forms.ToolStripMenuItem expandAllViewMenuItem; + private System.Windows.Forms.ToolStripMenuItem collapseAllViewMenuItem; + private System.Windows.Forms.ToolStripMenuItem findEditMenuItem; + private System.Windows.Forms.ToolStripMenuItem updateIconsToolMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator14; + } +} + diff --git a/MainForm.cs b/MainForm.cs new file mode 100644 index 0000000..63c61a7 --- /dev/null +++ b/MainForm.cs @@ -0,0 +1,840 @@ +using System; +using System.ComponentModel; +using System.IO; +using System.Windows.Forms; + +namespace bzit.bomg +{ + public partial class MainForm : Form + { + public enum AppMode + { + Clear = 0, + Open, + New + } + + protected AppMode appMode = AppMode.Clear; + protected SessionFileFormat sessionFileFormat = null; + protected string sessionFilename = null; + + public MainForm() + { + InitializeComponent(); + } + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + + this.IconDatabase = new IconDatabase(); + + // toolbar + viewHelpHelpMenuItem.Enabled = File.Exists(Path.ChangeExtension(Application.ExecutablePath, ".chm")); + + string iconDBPath = Path.ChangeExtension(Application.ExecutablePath, ".db"); + bool rv = false; + if (File.Exists(iconDBPath)) + { + rv = this.IconDatabase.LoadFile(iconDBPath); + if (!rv) + { + rv = this.IconDatabase.CreateSpecial(iconDBPath, true); + if (!rv) + { + MessageBox.Show("Can not find icon database. [" + this.IconDatabase.LastError + "]"); + this.Close(); + } + } + } + else + { + rv = this.IconDatabase.CreateSpecial(iconDBPath, true); + if (!rv) + { + MessageBox.Show("Can not find icon database. [" + this.IconDatabase.LastError + "]"); + this.Close(); + } + } + + treeView1.IconDatabase = this.IconDatabase; + sessionFileFormat = new SessionFileFormat(this); + this.ApplicationMode = AppMode.Clear; + + treeView1.OnNodeCountUpdate = delegate (ulong v) { + statusBarPanel2.Text = v.ToString(); + }; + treeView1.OnChanged = delegate (object sender, EventArgs ev) { + if (this.ApplicationMode == AppMode.New) + { + saveMenuBarItem.Enabled = saveFileMenuItem.Enabled = false; + } + else + { + saveMenuBarItem.Enabled = saveFileMenuItem.Enabled = treeView1.HasChanged; + } + + }; + } + + protected override void OnShown(EventArgs e) + { + base.OnShown(e); + + this.Height = Screen.PrimaryScreen.WorkingArea.Height; + this.Location = Screen.PrimaryScreen.WorkingArea.Location; + + // command line + string[] szr = Environment.GetCommandLineArgs(); + int i = 0; + while (true) + { + if (i > (szr.Length - 1)) + { + break; + } + + switch (szr[i].Trim().ToLower()) + { + case "-o": + case "-open": + if ((i + 1) > (szr.Length - 1)) + { + break; + } + + sessionFilename = szr[(i + 1)]; + + if (string.IsNullOrEmpty(sessionFilename)) + { + sessionFilename = null; + break; + } + + if (!File.Exists(sessionFilename)) + { + sessionFilename = null; + break; + } + + OpenBookmarkFile(sessionFilename); + + i++; + break; + } + + i++; + } + } + + protected override void OnFormClosing(FormClosingEventArgs e) + { + this.IconDatabase?.Close(); + + if (this.ApplicationMode == AppMode.Clear) + { + Application.Exit(); + return; + } + + if (!treeView1.HasChanged) + { + this.ApplicationMode = AppMode.Clear; + Application.Exit(); + return; + } + + if (this.ApplicationMode == AppMode.Open) + { + if (string.IsNullOrEmpty(sessionFilename)) + { + this.ApplicationMode = AppMode.Clear; + Application.Exit(); + return; + } + + if (MessageBox.Show("Save changes to open bookmarks.", "Save?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) + { + this.ApplicationMode = AppMode.Clear; + Application.Exit(); + return; + } + + while (true) + { + bool rv = sessionFileFormat.saveToRyz(sessionFilename); + if (!rv) + { + switch (MessageBox.Show("There was a problem saving bookmarks. Retry?", "Retry?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)) + { + case DialogResult.Yes: + break; + case DialogResult.No: + this.ApplicationMode = AppMode.Clear; + Application.Exit(); + break; + case DialogResult.Cancel: + e.Cancel = true; + break; + default: break; + } + } + else + { + this.ApplicationMode = AppMode.Clear; + Application.Exit(); + break; + } + } + } + else if (this.ApplicationMode == AppMode.New) + { + if (MessageBox.Show("Save changes to open bookmarks.", "Save?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + bool rt = SaveBookmarkFile(); + if (rt) + { + this.ApplicationMode = AppMode.Clear; + Application.Exit(); + return; + } + } + else + { + this.ApplicationMode = AppMode.Clear; + Application.Exit(); + return; + } + } + } + + #region public properties + + public AppMode ApplicationMode + { + get { return appMode; } + set + { + appMode = value; + switch (value) + { + case AppMode.Clear: + this.Text = Properties.Resources.app_name; + statusBarPanel2.Text = string.Empty; + + treeView1.Clear(); + + sessionFilename = null; + + closeFileMenuItem.Enabled = false; + saveFileMenuItem.Enabled = saveMenuBarItem.Enabled = false; + saveAsFileMenuItem.Enabled = false; + updateIconsToolMenuItem.Enabled = false; + + break; + case AppMode.Open: + closeFileMenuItem.Enabled = true; + saveFileMenuItem.Enabled = saveMenuBarItem.Enabled = false; + saveAsFileMenuItem.Enabled = true; + updateIconsToolMenuItem.Enabled = true; + + break; + case AppMode.New: + this.Text = Properties.Resources.app_name; + statusBarPanel2.Text = string.Empty; + + sessionFilename = null; + + closeFileMenuItem.Enabled = true; + saveFileMenuItem.Enabled = saveMenuBarItem.Enabled = false; + saveAsFileMenuItem.Enabled = true; + updateIconsToolMenuItem.Enabled = true; + + break; + } + } + } + + [DefaultValue(null)] + public IconDatabase IconDatabase { get; set; } + + #endregion + + #region Toolbar #1 + + /** + * File -> New + */ + private void newSessionToolStripMenuItem_Click(object sender, EventArgs e) + { + NewSessionForm oNewSession = new NewSessionForm(this); + oNewSession.ShowDialog(); + } + + /* + * File -> Open + */ + private void toolStripMenuItem2_Click(object sender, EventArgs e) + { + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + sessionFilename = openFileDialog.FileName; + + OpenBookmarkFile(sessionFilename); + } + } + + /** + * File -> Close + */ + private void toolStripMenuItem3_Click(object sender, EventArgs e) + { + if (ApplicationMode == AppMode.Clear) + { + return; + } + + if (!treeView1.HasChanged) + { + ApplicationMode = AppMode.Clear; + return; + } + + if (ApplicationMode == AppMode.Open) + { + if (string.IsNullOrEmpty(sessionFilename)) + { + ApplicationMode = AppMode.Clear; + return; + } + + if (MessageBox.Show("Save changes to open bookmarks.", "Save?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) + { + ApplicationMode = AppMode.Clear; + return; + } + + bool rv = sessionFileFormat.saveToRyz(sessionFilename); + if (!rv) + { + if (MessageBox.Show("There was a problem saving bookmarks. Bookmarks are not saved", "Not Saved", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.Cancel) return; + } + + ApplicationMode = AppMode.Clear; + } + else if (ApplicationMode == AppMode.New) + { + if (MessageBox.Show("Save changes to open bookmarks.", "Save?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) + { + ApplicationMode = AppMode.Clear; + return; + } + + bool rt = SaveBookmarkFile(); + if (rt) + { + ApplicationMode = AppMode.Clear; + } + } + } + + /** + * File -> Save + */ + private void importSnapshotToolStripMenuItem_Click(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(sessionFilename)) + { + return; + } + + bool rv = sessionFileFormat.saveToRyz(sessionFilename); + if (rv) + { + treeView1.HasChanged = false; + } + } + + /** + * File -> Save As + */ + private void exportSnapshotToolStripMenuItem_Click(object sender, EventArgs e) + { + if (SaveBookmarkFile()) + { + ApplicationMode = AppMode.Open; + treeView1.HasChanged = false; + } + } + + /** + * File -> Export + */ + private void toolStripMenuItem7_Click(object sender, EventArgs e) { } + + /** + * File -> Exit + */ + private void exitToolStripMenuItem1_Click(object sender, EventArgs e) { this.Close(); } + + /** + * Find + */ + private void toolStripButton5_Click(object sender, EventArgs e) + { + FindForm frm = new FindForm(this); + frm.Show(); + } + + /** + * View -> Expand All + */ + private void expandAllToolStripMenuItem_Click(object sender, EventArgs e) + { + if (treeView1.SelectedNode == null) + { + treeView1.ExpandAll(); + } + else + { + treeView1.SelectedNode.ExpandAll(); + } + } + + /** + * View -> Collapse All + */ + private void collapseAllToolStripMenuItem_Click(object sender, EventArgs e) + { + if (treeView1.SelectedNode == null) + { + treeView1.CollapseAll(); + } + else + { + treeView1.SelectedNode.Collapse(false); + } + } + + /** + * Tools -> Refresh Icons + */ + private void toolStripMenuItem1_Click(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(sessionFilename)) + { + return; + } + + if (this.ApplicationMode == AppMode.Clear) + { + return; + } + + UpdateIconForm frm = new UpdateIconForm(this); + frm.ShowDialog(); + } + + /** + * Tools -> Options + */ + private void optionsToolStripMenuItem1_Click(object sender, EventArgs e) + { + OptionsForm frm = new OptionsForm(this); + frm.ShowDialog(); + } + + /** + * Help -> Documentation + */ + public void documentationToolStripMenuItem_Click(object sender, EventArgs e) + { + string chm = Path.ChangeExtension(Application.ExecutablePath, ".chm"); + if (!File.Exists(chm)) + { + return; + } + + try + { + System.Diagnostics.Process.Start(chm); + } + catch + { + // do nothing + } + } + + /** + * Help -> About + */ + private void aboutToolStripMenuItem1_Click(object sender, EventArgs e) + { + MessageBox.Show("Name: " + Properties.Resources.app_name + Environment.NewLine + "Version: " + Properties.Resources.app_version + Environment.NewLine + "Author: " + Properties.Resources.app_author, "About", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + + /** + * ? -> Always-On-Top + */ + private void alwaysOnTopToolStripMenuItem_Click(object sender, EventArgs e) + { + this.TopMost = !this.TopMost; + } + + #endregion + + #region TreeView Menu - item + + /** + * Node -> Open + */ + private void toolStripMenuItem4_Click(object sender, EventArgs e) + { + openBookmark(treeView1.SelectedNode); + } + + /** + * Node -> Edit + */ + private void toolStripMenuItem8_Click(object sender, EventArgs e) + { + if (treeView1.SelectedNode == null) + { + return; + } + + treeView1.HasChanged = true; + + TreeNode tn = treeView1.SelectedNode; + BookmarkEditForm oBookmarkEdit = new BookmarkEditForm(ref tn); + oBookmarkEdit.ShowDialog(); + } + + /** + * Node -> Delete + */ + private void toolStripMenuItem6_Click(object sender, EventArgs e) + { + treeView1.DeleteNode(); + } + + #endregion + + #region TreeView Menu - folder + + /** + * Add Page + */ + private void toolStripMenuItem15_Click(object sender, EventArgs e) { treeView1.AddBookmarkPage(); } + + /** + * Add Folder + */ + private void toolStripMenuItem16_Click(object sender, EventArgs e) { treeView1.AddFolder(); } + + /** + * Open All + */ + private void toolStripMenuItem14_Click(object sender, EventArgs e) + { + if (treeView1.SelectedNode == null) + { + return; + } + + foreach (TreeNode tn in treeView1.SelectedNode.Nodes) + { + if (tn.Tag == null) + { + continue; + } + + openBookmark(tn); + } + } + + /** + * Edit + */ + private void toolStripMenuItem9_Click(object sender, EventArgs e) + { + treeView1.HasChanged = true; + treeView1.EditNode(); + } + + /** + * Move Up + */ + private void toolStripMenuItem12_Click(object sender, EventArgs e) { treeView1.MoveNodeUp(); } + + /** + * Move Down + */ + private void toolStripMenuItem13_Click(object sender, EventArgs e) { treeView1.MoveNodeDown(); } + + /** + * Sort + */ + private void sortToolStripMenuItem_Click(object sender, EventArgs e) { treeView1.SortNode(); } + + #endregion + + protected void OpenBookmarkFile(string filename) + { + treeView1.HasChanged = false; + if (RyzStudio.IO.SharpZipLib.IsZipEncrypted(filename)) + { + PasswordForm oPassword = new PasswordForm(this); + sessionFileFormat.passkey = oPassword.ShowDialog(); + + if (sessionFileFormat.passkey.Equals("")) + { + return; + } + } + else + { + sessionFileFormat.passkey = ""; + } + + bool rv = sessionFileFormat.loadFromRyz(filename); + if (rv) + { + this.Text = Path.GetFileNameWithoutExtension(filename) + " - " + Properties.Resources.app_name; + this.ApplicationMode = AppMode.Open; + + treeView1.HasChanged = false; + } + } + + protected bool SaveBookmarkFile() + { + bool rv = false; + + if (saveFileDialog.ShowDialog() == DialogResult.OK) + { + switch (saveFileDialog.FilterIndex) + { + case 1: + sessionFileFormat.passkey = ""; + + rv = sessionFileFormat.saveToRyz(saveFileDialog.FileName); + break; + case 2: + PasswordForm oPassword = new PasswordForm(this); + sessionFileFormat.passkey = oPassword.ShowDialog(); + + rv = sessionFileFormat.saveToRyz(saveFileDialog.FileName); + if (rv) + { + treeView1.HasChanged = false; + } + + break; + default: break; + } + + } + + if (rv) + { + ApplicationMode = AppMode.Open; + sessionFilename = saveFileDialog.FileName; + this.Text = Path.GetFileNameWithoutExtension(saveFileDialog.FileName) + " - " + Properties.Resources.app_name; + } + + return rv; + } + + private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) + { + if (e.Node == null) + { + return; + } + + if (e.Node.Text.Equals("")) + { + return; + } + + // view ui + expandAllViewMenuItem.Enabled = false; + collapseAllViewMenuItem.Enabled = false; + if (e.Node != null) + { + if (e.Node.Tag == null) + { + expandAllViewMenuItem.Enabled = true; + collapseAllViewMenuItem.Enabled = true; + } + } + + if (e.Button == MouseButtons.Right) + { + // folder + if (e.Node.Tag == null) + { + if (e.Node.Equals(e.Node.TreeView.Nodes[0])) + { + treeMenuRoot.Show(Cursor.Position); + } + else + { + treeMenuFolder.Show(Cursor.Position); + } + } + else + { + if (!(e.Node.Tag is BookmarkItem)) + { + return; + } + + BookmarkItem bi = (BookmarkItem)e.Node.Tag; + treeMenuItem.Show(Cursor.Position); + } + } + } + + private void treeView2_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { openBookmark(e.Node); } + + private void treeView1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) + { + TreeNode tn = treeView1.SelectedNode; + if (tn == null) + { + return; + } + + switch (e.KeyCode) + { + case Keys.Apps: + treeView1_NodeMouseClick(sender, new TreeNodeMouseClickEventArgs(tn, MouseButtons.Right, 1, tn.Bounds.X, tn.Bounds.Y)); + return; + case Keys.F2: + if (tn.Tag == null) + { + return; + } + + if (!(tn.Tag is BookmarkItem)) + { + return; + } + + toolStripMenuItem8_Click(sender, null); + + break; + case Keys.F3: + if (tn.Tag == null) + { + return; + } + + if (!(tn.Tag is BookmarkItem)) + { + return; + } + + BookmarkItem bookmarkItem = (BookmarkItem)tn.Tag; + if (bookmarkItem == null) + { + return; + } + + if (string.IsNullOrEmpty(bookmarkItem.Address)) + { + return; + } + + try + { + Clipboard.SetText(bookmarkItem.Address.Trim()); + } + catch + { + // do nothing + } + + break; + case Keys.Enter: + openBookmark(tn); + break; + default: break; + } + } + + protected void openBookmark(TreeNode node) + { + if (node == null) + { + return; + } + + if (node.Tag == null) + { + return; + } + + if (!(node.Tag is BookmarkItem)) + { + return; + } + + BookmarkItem item = (BookmarkItem)node.Tag; + if (item == null) + { + return; + } + + if (string.IsNullOrEmpty(item.Address)) + { + return; + } + + int bookmarkAction; + if (!int.TryParse(this.IconDatabase.GetConfig("core.bookmark.action", string.Empty), out bookmarkAction)) + { + bookmarkAction = 0; + } + + string bookmarkCustom1 = this.IconDatabase.GetConfig("core.bookmark.customcommand1", string.Empty).Trim(); + string bookmarkCustom2 = this.IconDatabase.GetConfig("core.bookmark.customcommand2", string.Empty).Trim(); + + switch (bookmarkAction) + { + case 1: + if (string.IsNullOrEmpty(bookmarkCustom1)) + { + return; + } + + bookmarkCustom1 = bookmarkCustom1.Replace("%1", item.Address); + bookmarkCustom2 = bookmarkCustom2.Replace("%1", item.Address); + + try + { + System.Diagnostics.Process.Start(bookmarkCustom1, bookmarkCustom2); + } + catch + { + // do nothing + } + + break; + default: + try + { + System.Diagnostics.Process.Start(item.Address); + } + catch + { + // do nothing + } + + break; + } + } + } +} \ No newline at end of file diff --git a/MainForm.resx b/MainForm.resx new file mode 100644 index 0000000..5f46a11 --- /dev/null +++ b/MainForm.resx @@ -0,0 +1,544 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 412, 17 + + + 17, 17 + + + 307, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADU + FwAAAk1TRnQBSQFMAgEBBwEAAVwBAgFcAQIBEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABIAMAAQEBAAEQBgABEBQAAZkBSgEYAS4BtwEdAbcBGQG3ARkBtwEZAbcBGQG3ARkBtwEZAbcBGQG3 + ARkBtwEdARcBLgGZAUoEAAGZAUoBGAEuAbcBHQG3ARkBtwEZAbcBGQG3ARkBtwEZAbcBGQG3ARkBtwEZ + AbcBHQEXAS4BmQFKBAABmQFKARgBLgG3AR0BtwEZAbcBGQG3ARkBtwEZAbcBGQG3ARkBtwEZAbcBGQG3 + AR0BFwEuAZkBSiQAAdcBIQHeAXcBvgFvAb4BbwG+AW8BvgFvAb4BbwHfAXcB3wF3Ad8BdwHfAXsB/wF7 + Af8BfwHXASEEAAHXASEB3gF3Ab4BbwG+AW8BvgFvAb4BbwG+AW8B3wF3Ad8BdwHfAXcB3wF7Af8BewH/ + AX8B1wEhBAAB1wEhAd4BdwG+AW8BvgFvAb4BbwG+AW8BvgFvAd8BdwHfAXcB3wF3Ad8BewH/AXsB/wF/ + AdcBISQAAdgBHQG+AW8B1gFaAdYBWgHWAVoB1gFaAdYBWgHWAVoB1gFaAdYBWgHWAVoB1gFaAf8BfwG3 + ARkEAAHYAR0BvgFvAYkBNgGJATYBiQE2AYkBNgGJATYBiQE2AYkBNgGJATYBiQE2AYkBNgH/AX8BtwEZ + BAAB2AEdAb4BbwHOAXkBzgF5Ac4BeQGtAXkBrQF5Aa0BeQGtAXkBrQF5Aa0BeQGtAXkB/wF/AbcBGSQA + AfgBIQG+AXMB9wFeAVoBawFaAWsBOQFnATkBZwE5AWcBOQFnATkBZwE5AWcB1gFaAd8BewG3ARkEAAH4 + ASEBvgFzAYkBNgEMAUcBDAFHAQwBRwEMAUcBDAFHAQwBRwEMAUcBDAFHAYkBNgHfAXsBtwEZBAAB+AEh + Ab4BcwHvAXkBlAF+AXMBfgFzAX4BcwF+AXMBfgFTAX4BUwF+AVIBfgHOAXkB3wF7AbcBGSQAAfgBIQHe + AXMBtQFWAbUBVgG1AVYBtQFWAbUBVgG1AVYBtQFWAbUBVgG1AVYBtQFWAf8BewHYAR0EAAH4ASEB3gFz + AYkBNgGJATYBiQE2AYkBNgGJATYBiQE2AYkBNgGJATYBiQE2AYkBNgH/AXsB2AEdBAAB+AEhAd4BcwGM + AXUBjAF1AYwBdQFrAXUBawF1AWsBdQFrAXUBawF1AWsBdQFrAXUB/wF7AdgBHSQAARgBIgHfAXcBnwFr + AZ8BawGfAWsBnwFrAZ8BawGfAWsBnwFnAZ8BZwGfAWcBnwFnAf8BewH4ASEEAAEYASIB3wF3AZ8BawGf + AWsBnwFrAZ8BawGfAWsBnwFrAZ8BZwGfAWcBnwFnAZ8BZwH/AXsB+AEhBAABGAEiAd8BdwGfAWsBnwFr + AZ8BawGfAWsBnwFrAZ8BawGfAWcBnwFnAZ8BZwGfAWcB/wF7AfgBISQAARgBJgHfAXcBnwFrAZ8BawGf + AWsBnwFrAZ8BawGfAWsBnwFrAZ8BZwGfAWcBnwFnAd8BewH4ASEEAAEYASYB3wF3AZ8BawGfAWsBnwFr + AZ8BawGfAWsBnwFrAZ8BawGfAWcBnwFnAZ8BZwHfAXsB+AEhBAABGAEmAd8BdwGfAWsBnwFrAZ8BawGf + AWsBnwFrAZ8BawGfAWsBnwFnAZ8BZwGfAWcB3wF7AfgBISQAARgBJgHfAXcBvwFrAb8BawGfAWsBnwFr + AZ8BawGfAWsBnwFrAZ8BZwF/AWMBfwFjAd8BdwEYASIEAAEYASYB3wF3Ab8BawG/AWsBnwFrAZ8BawGf + AWsBnwFrAZ8BawGfAWcBfwFjAX8BYwHfAXcBGAEiBAABGAEmAd8BdwG/AWsBvwFrAZ8BawGfAWsBnwFr + AZ8BawGfAWsBnwFnAX8BYwF/AWMB3wF3ARgBIiQAATgBJgHfAXcBvwFvAb8BbwG/AWsBnwFrAZ8BawGf + AWsBnwFnAZ8BYwF/AWMBfwFjAd8BdwEYASYEAAE4ASYB3wF3Ab8BbwG/AW8BvwFrAZ8BawGfAWsBnwFr + AZ8BZwGfAWMBfwFjAX8BYwHfAXcBGAEmBAABOAEmAd8BdwG/AW8BvwFvAb8BawGfAWsBnwFrAZ8BawGf + AWcBnwFjAX8BYwF/AWMB3wF3ARgBJiQAATgBJgHfAXcBnwFrAZ8BawGfAWsBnwFrAZ8BawGfAWcBfwFj + AX8BYwF+AV8BfgFfAd8BdwEYASYEAAE4ASYB3wF3AZ8BawGfAWsBnwFrAZ8BawGfAWsBnwFnAX8BYwF/ + AWMBfgFfAX4BXwHfAXcBGAEmBAABOAEmAd8BdwGfAWsBnwFrAZ8BawGfAWsBnwFrAZ8BZwF/AWMBfwFj + AX4BXwF+AV8B3wF3ARgBJiQAATgBKgHfAXsBnwFrAZ8BawGfAWsBnwFrAZ8BZwGfAWcBfwFjAV4BXwFe + AVsBXgFbAd8BewEYASYEAAE4ASoB3wF7AZ8BawGfAWsBnwFrAZ8BawGfAWcBnwFnAX8BYwFeAV8BXgFb + AV4BWwHfAXsBGAEmBAABOAEqAd8BewGfAWsBnwFrAZ8BawGfAWsBnwFnAZ8BZwF/AWMBXgFfAV4BWwFe + AVsB3wF7ARgBJiQAATgBKgHfAXsBnwFnAZ8BawGfAWcBnwFnAZ8BZwF/AWMBfgFfAb4BbwHeAXcB3wF7 + Ab4BdwH4ASEEAAE4ASoB3wF7AZ8BZwGfAWsBnwFnAZ8BZwGfAWcBfwFjAX4BXwG+AW8B3gF3Ad8BewG+ + AXcB+AEhBAABOAEqAd8BewGfAWcBnwFrAZ8BZwGfAWcBnwFnAX8BYwF+AV8BvgFvAd4BdwHfAXsBvgF3 + AfgBISQAATgBKgHfAXsBnwFnAZ8BZwGfAWcBnwFnAZ8BZwF/AWMBXgFfAf8BfwGfAWcBnwFnAdwBQgF4 + AToEAAE4ASoB3wF7AZ8BZwGfAWcBnwFnAZ8BZwGfAWcBfwFjAV4BXwH/AX8BnwFnAZ8BZwHcAUIBeAE6 + BAABOAEqAd8BewGfAWcBnwFnAZ8BZwGfAWcBnwFnAX8BYwFeAV8B/wF/AZ8BZwGfAWcB3AFCAXgBOiQA + ATgBKgHfAXsBnwFjAZ8BZwGfAWcBnwFnAX8BYwF/AWMBXgFfAf8BfwF+AVsB3AE+AVsBMgFaAWcEAAE4 + ASoB3wF7AZ8BYwGfAWcBnwFnAZ8BZwF/AWMBfwFjAV4BXwH/AX8BfgFbAdwBPgFbATIBWgFnBAABOAEq + Ad8BewGfAWMBnwFnAZ8BZwGfAWcBfwFjAX8BYwFeAV8B/wF/AX4BWwHcAT4BWwEyAVoBZyQAAXkBNgHe + AXcB3gF3Ad8BdwHfAXcB3wF3Ad8BdwHfAXcB3gF3AZ4BawHcAT4BWwE2AVoBZwYAAXkBNgHeAXcB3gF3 + Ad8BdwHfAXcB3wF3Ad8BdwHfAXcB3gF3AZ4BawHcAT4BWwE2AVoBZwYAAXkBNgHeAXcB3gF3Ad8BdwHf + AXcB3wF3Ad8BdwHfAXcB3gF3AZ4BawHcAT4BWwE2AVoBZyYAAdkBTgF5AToBWQEuATkBKgE5ASoBOQEq + AVkBKgE5ASoBOQEqAVkBMgF5AT4BWgFnCAAB2QFOAXkBOgFZAS4BOQEqATkBKgE5ASoBWQEqATkBKgE5 + ASoBWQEyAXkBPgFaAWcIAAHZAU4BeQE6AVkBLgE5ASoBOQEqATkBKgFZASoBOQEqATkBKgFZATIBeQE+ + AVoBZ4AAAdMBYgFtAWYB8gFuAgABmQFKARgBLgG3AR0BtwEZAbcBGQG3ARkBtwEZAbcBGQG3ARkBtwEZ + AbcBGQG3AR0BFwEuAZkBSlIAAVoBZwEbAVsBHAFXARwBVwH7AU4BlgFKAfMBagFsAWYCAAHXASEB3gF3 + Ab4BbwG+AW8BvgFvAb4BbwG+AW8B3wF3Ad8BdwHfAXcB3wF7Af8BewH/AX8B1wEhJAAB0QFqAYwBagEn + AWoBJgFuASYBbgEmAW4BJgFuASYBbgEmAW4BJgFuASYBbgEmAW4BJgFuAY4BagQAAdEBagGMAWoBJwFq + ASYBbgEmAW4BJgFuASYBbgG1AVoBfgFnAZ8BZwGeAWMBnwFnAV4BWwGWAU4B0wFmAgAB2AEdAb4BbwH/ + ATYB/wEyAf8BMgH/ATIB/wEyAf8BMgH/ATIB/wEyAf8BMgH/ATIB/wF/AbcBGQIAAfsBUgH7AVYBWgFn + FgAB+gFWAdoBUgIAAUgBbgG7AXsBdQF7AXMBewFyAXsBcQF7AVABewFPAXsBTwF7AU4BewFNAXsBLQF7 + AbgBfwFHAW4EAAFIAW4BuwF7AXUBewFzAXsBcgF7AXEBewFQAXsBHAFXAZ4BawF+AWMBfgFfAX4BXwGf + AWcB2wFOBAAB+AEhAb4BcwEfATcBfwFTAV8BTwFfAU8BXwFPAV8BSwFfAUsBXwFLAV8BSwH/ATIB3wF7 + AbcBGQIAAbwBQgG8AUIBewE2AVoBawEaAVsMAAEaAV8BWgFrARoBJgEbASYBOgEqAgABRwFuAf0BfwG0 + AX8BkgF/AZABewFuAXsBbAF7AUoBewFIAXsBRwF7ASUBewEkAXsB2QF/AUcBbgQAAUcBbgH9AX8BtAF/ + AZIBfwGQAXsBbgF7AWwBewH8AU4BvwFvAX4BYwF+AWMBfgFfAZ8BZwEcAVMEAAH4ASEB3gFzAd8BKgHe + ASoB3gEqAd8BKgHfASoB3gEqAd4BKgHeASoB3gEmAd4BJgH/AXsB2AEdAgABvAFCAR0BUwGcAToBWgFr + AXsBNgF7ATYBOgFjBAABGQFfATsBLgEaASIBWgFnAfoBHQGcAT4B+gEdAgABZwFuAf4BfwG2AX8BtAF/ + AZIBfwGQAXsBbgF7AWwBewFKAXsBSQF7AUcBewEmAXsB2QF/AWcBbgQAAWcBbgH+AX8BtgF/AbQBfwGS + AX8BkAF7AW4BewEcAVcBngFrAZ4BZwF+AWMBfgFjAZ8BawEcAVcEAAEYASIB3wF3AZ8BawGfAWsBnwFr + AZ8BawGfAWsBnwFrAZ8BZwGfAWcBnwFnAZ8BZwH/AXsB+AEhAgAB3AFGAT0BVwG8AT4BWgFrAZwBOgGc + AToBGgFfATkBZwE5AWcBGgJbAS4BOgEmAVoBawEaASIBvAE+ARoBIgIAAYcBbgH+AX8B2QF/AbcBfwG1 + AX8BswF/AZEBewGPAXsBbQF7AWsBewFJAXsBSAF7AdoBfwGHAW4EAAGHAW4B/gF/AdkBfwG3AX8BtQF/ + AbMBfwGRAXsBVAFrAT0BWwGeAW8BvwFvAX4BZwFdAV8B1AFaBAABGAEmAd8BdwGfAWsBnwFrAZ8BawGf + AWsBnwFrAZ8BawGfAWsBnwFnAZ8BZwGfAWcB3wF7AfgBIQIAAfwBTgE9AVcB3AFGAVoBawHbAU4B3AFG + AdsBSgEaAV8BGgFbAbsBQgGcAToBmwE+AVoBZwE7ASYBnAE+AVoBLgIAAYcBbgH/AX8B/wF/Af4BfwH+ + AX8B/gF/AdsBfwGSAX8BkAF7AW4BewFtAXsBawF7AdoBfwGHAW4EAAGHAW4B/wF/Af8BfwH+AX8B/gF/ + Af4BfwHbAX8BkgF/AVUBawEZAVsB/AFOARwBUwE8AV8BqQFqBAABGAEmAd8BdwG/AWsBvwFrAZ8BawGf + AWsBnwFrAZ8BawGfAWsBnwFnAX8BYwF/AWMB3wF3ARgBIgIAARwBWwEdAVcB/QFOATsBYwE6AWcB3AFG + Ad0BRgG8AT4BnAE+AbwBQgF7AjoBYwEaAlsBLgGcATYBugFCAgABpwFuAd0BfwFSAXcBMQF3AQ4BdwG5 + AXsB/gF/Af4BfwH+AX8B/gF/Af0BfwH9AX8B/wF/AacBbgQAAacBbgHdAX8BUgF3ATEBdwEOAXcBuQF7 + Af4BfwH+AX8B/gF/Af4BfwH9AX8B/QF/Af8BfwGnAW4EAAE4ASYB3wF3Ab8BbwG/AW8BvwFrAZ8BawGf + AWsBnwFrAZ8BZwGfAWMBfwFjAX8BYwHfAXcBGAEmAgABWgFnAf0BTgE9AVsB/AFKAToBZwFaAWcBGwFX + AdwBSgHbAUYB+wFSAVoBZwE6AWMBWwEyAbwBQgE7ASoBGgFfAgABpwFuAf4BfwFyAXsBcgF7AVABewEt + AXcBLQF3AVABdwFQAXcBTwF3AS4BdwEuAXcB3QF/AccBbgQAAacBbgH+AX8BcgF7AXIBewFQAXsBLQF3 + AS0BdwFQAXcBUAF3AU8BdwEuAXcBLgF3Ad0BfwHHAW4EAAE4ASYB3wF3AZ8BawGfAWsBnwFrAZ8BawGf + AWsBnwFnAX8BYwF/AWMBfgFfAX4BXwHfAXcBGAEmBAABPAFbAT0BVwE9AVcB/QFKATsBYwFaAWsEAAFa + AWsBGgFfAZsBOgHcAUIBvAE+AdsBSgQAAccBbgH+AX8BkQF/AXIBewGTAXsBlQF7Af0BfwH+AX8B/gF/ + Af4BfwH9AX8B/QF/Af8BfwHKAW4EAAHHAW4B/gF/AZEBfwFyAXsBkwF7AZUBewH9AX8B/gF/Af4BfwH+ + AX8B/QF/Af0BfwH/AX8BygFuBAABOAEqAd8BewGfAWsBnwFrAZ8BawGfAWsBnwFnAZ8BZwF/AWMBXgFf + AV4BWwFeAVsB3wF7ARgBJgQAAVoBawE8AVsBPQFXAT4BWwEdAVMB/QFKAd0BSgHcAUYBvAFCAdwBRgH9 + AU4B3AFGAbsBRgFaAWsEAAHHAW4B/wF/Af8BfwH/AX8B/wF/Af8BfwHdAX8BDQFzAS0BcwEtAXMBLQFz + AS8BcwEvAXMBMwFrBAABxwFuAf8BfwH/AX8B/wF/Af8BfwH/AX8B3QF/AQ0BcwEtAXMBLQFzAS0BcwEv + AXMBLwFzATMBawQAATgBKgHfAXsBnwFnAZ8BawGfAWcBnwFnAZ8BZwF/AWMBfgFfAb4BbwHeAXcB3wF7 + Ab4BdwH4ASEIAAE7AV8BHQFTAT0BWwFeAV8BXgFfAV4BXwE9AVcBHQFTAbwBQgEbAVcIAAHqAW4BDAFz + AQwBcwEMAXMBDAFzAQwBcwHqAW4BWAFrAVkBawFZAWsBWQFrAVkBawFZAWsBWgFrBAAB6gFuAQwBcwEM + AXMBDAFzAQwBcwEMAXMB6gFuAVgBawFZAWsBWQFrAVkBawFZAWsBWQFrAVoBawQAATgBKgHfAXsBnwFn + AZ8BZwGfAWcBnwFnAZ8BZwF/AWMBXgFfAf8BfwGfAWcBnwFnAdwBQgF4AToKAAFaAWcBPAFfARwBVwH9 + AU4B/QFOARwBUwEbAVcBOgFnSgABOAEqAd8BewGfAWMBnwFnAZ8BZwGfAWcBfwFjAX8BYwFeAV8B/wF/ + AX4BWwHcAT4BWwEyAVoBZ2QAAXkBNgHeAXcB3gF3Ad8BdwHfAXcB3wF3Ad8BdwHfAXcB3gF3AZ4BawHc + AT4BWwE2AVoBZ2YAAdkBTgF5AToBWQEuATkBKgE5ASoBOQEqAVkBKgE5ASoBOQEqAVkBMgF5AT4BWgFn + BgABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/wEAAYABAQGAAQEBgAEBAgABgAEB + AYABAQGAAQECAAGAAQEBgAEBAYABAQIAAYABAQGAAQEBgAEBAgABgAEBAYABAQGAAQECAAGAAQEBgAEB + AYABAQIAAYABAQGAAQEBgAEBAgABgAEBAYABAQGAAQECAAGAAQEBgAEBAYABAQIAAYABAQGAAQEBgAEB + AgABgAEBAYABAQGAAQECAAGAAQEBgAEBAYABAQIAAYABAQGAAQEBgAEBAgABgAEBAYABAQGAAQECAAGA + AQMBgAEDAYABAwIAAYABBwGAAQcBgAEHAgAF/wH4AYABAQX/AQABgAEBAv8BgAEBAYABAAGAAQEBHwH8 + AYABAQGAAQEBgAEBAQcB4AGAAQEBgAEBAYACAQKAAQEBgAEBAYABAQIAAYABAQGAAQEBgAEBAgABgAEB + AYABAQGAAQECAAGAAQEBgAEBAYABAQIAAYABAQGAAQEBgAEBAoEBgAEBAYABAQGAAQEBgAEBAYABAQGA + AQEBgAEBAeABBwGAAQEBgAEBAYABAQHwAQ8E/wGAAQEG/wGAAQMG/wGAAQcL + + + + 109, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAddJREFUOE+Nk7tLHFEUhzVW/g8KdhIIQVzZUoRgEYiFIRYSCGihYOeDFCmVVKaR + ZWHThHSBFAF7GxFRFN1FxRcoYrGbfbmzO49778zoL+fcZMYZd4Me+Jhizu+bc+7MtEWqi0gQyUfoIZ4R + TZUQQhiu6976vo9WSCmRSqVWqLelJMlhy7Jg23ZIvV5HrVZDsVjUkkKhgHQ63SRpJ5LcQFNAKaWvjGma + MAwDpVJJCxzHAT8kk8kEEl1a4NVzkDe7WhBIONBoNFAul2PrMJzRaSotEGdzEMfTYYPneXrvYJVKpaIn + yefz94K769lO8/D90P6vV9/kyRTkwTjk5TLc6iZ814pJeBI+j2q1ei+Qp5Nf1ekM5Pk83KtlqItFiP1R + WBv9EIcfY5PwOnwmLAoFwFiHOHi7Ks8XSPCFBEtwcu/gZCfge0o3MvSG9LmwhAkFXDd7Iy9F7g3U5RLU + 2SdY6y/gGkdhmOEpgsPlaWICa2f4tciOwN7qg7nxnMZPQP1e06EAnoDhcLNge/BD9kfvd19W4BHi5DPk + 9c+mcJSYgCr8kB4SnSIK3+OMTlP9/ZA87+6h4H9Q7y1ndPpfDdBuNt9oFYjCPdRrUob/3rC6iQGCrU+B + wm3dfwBRcqBbhKA6hAAAAABJRU5ErkJggg== + + + + 779, 20 + + + 534, 17 + + + 903, 20 + + + 208, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHaSURBVDhPjZM9SxxRFIY1Vv4HhVRCQIK4smUQQgpBiwRT + SCBgigTSJYpFSsVKG1mWJU1IJ1gI6W1EQsQQd1ZD/ABFLHbdL3d25+PeOzP6es7FGWfcDcmBhy3mvM++ + 9+5sV2z6iBSR/gcPiQdE26Rc1zUNw7gKggCdkFIik8ms0G5HSZrDtm3DcZyIZrOJRqOBcrmsJaVSCdls + tk3STaR5QQgBpZT+ZCzLgmmaqFQqWkAtwV+Sy+VCiR4t8JsG5OVPLQglHGi1WqhWq4njMJzRaRotEEcf + If68ixZ839fnDo9Sq9V0k2KxeCe4Pv/Qa+2/Gt1df/pFHryF3JuCPF2CV/+OwLMTEm7C91Gv1+8E8vDN + Z3X4HvJ4Bt7ZEtTJPMTuc9hbwxD7c4kmfBy+ExZFAuBlj7v34ps8niXBMgkW4BqTcPPTCHylFxnP8/S9 + sISJBDyXvyYeC2Mc6nQB6ugT7M1BeObvKMxwi/ByuU1CYO88GxP5CTg/hmBtPaL6KaiLDR0K4QYMh9sF + 209e51cHvgayBp8QB4uQ52tt4TgJAU30It0n3iIOP+OMTtNoQaFQuL4v+Bu0e8UZnb6dEfp5HH7QKRCH + d+h1tijD/95o+okRgq3/A4W7+m8ApNSdQdLieiIAAAAASUVORK5CYII= + + + + 658, 20 + + + 108 + + + + AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA + AABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDQ0LDMz + M9gzMzO2MzMzajQ0NCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA0NDRGMzMz8DM3OP80OTr/MzMz/zIyMv4zMzPTMzMziTQ0ND8yMjIFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADMzM2QzMzP6QEdJ/1Wzyv9Qz+7/SKa9/z92hP82R0v/MzMz/zMzM/8zMzPtMzMzpzEx + MVwvLy8VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAvLy8CMjIyhzQ0NP5RYGT/d83j/1XW9/9S1vf/Utb3/1LW9/9R1fX/TLnU/0OK + m/86WmL/MzY2/zMzM/8yMjL7MjIyxTExMXo0NDQwPj4+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMQkyMjKpODg4/193fv971+7/bdz4/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/T8rp/0eds/8+bXn/NUBC/zMzM/8zMzP/MzMz4zMzM5k0NDRONDQ0DAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALy8vFTIyMsY+Pj7/aYyV/3zc9P994Pn/XNj3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/UdP0/0uxyv9BgZH/OFFX/zMz + M/8zMzP/MzMz9zMzM7czMzNtMzMzIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTEpMjIy3UVFRf9voK3/fN/4/33g + +f923vj/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/07E4f9Flaj/PGVv/zQ7Pf8zMzP/MzMz/zMzM9YzMzOLMTExQTIyMgYAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMkEzMzPuTVBQ/3Sy + wv994Pn/feD5/33g+f9m2vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1HQ8P9JqMD/QHmH/zdJTv8zMzP/MzMz/zMz + M5sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExYDQ0 + NPlUW13/d8HU/33g+f994Pn/feD5/3zf+P9X1/f/Utb3/02/3P9R1fX/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1HV + 9v9NvNf/NkZK/zMzM9kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZ + GQEzMzOCNTU1/ltpbP95zOH/feD5/33g+f994Pn/feD5/3Pd+P9S1vf/UdT1/zM1Nv88Y2z/T8jm/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/PnB9/zIyMv4uLi4XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAKCgoBzIyMqQ3Nzf/YXd9/3vV7P994Pn/feD5/33g+f994Pn/feD5/2Xa9/9S1vf/UdX2/zMz + M/9BOzv/NkNG/0mqw/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Rper/zMzM/8xMTFUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAxMTETMjIywjk5Of9miJD/fNv0/33g+f994Pn/feD5/33g+f994Pn/fN/5/1fX + 9/9S1vf/Utb3/zM1Nf+PbGz/cFhY/zQ1Nf9Bf47/UdLy/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1HR8f9Ipb3/QX6N/1DP7/9S1vf/Utb3/1LW9/9S1vf/Tb7a/zMzM/8yMjKRAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMSUyMjLaPDw8/2yapv983/j/feD5/33g+f994Pn/feD5/33g + +f994Pn/dt74/1LW9/9S1vf/Utb3/zM3OP+QbGz/sICA/5FsbP9BOzv/OVZd/02/3P9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1DQ8P9IpLv/Pm97/zQ9P/8zMzP/NDk7/1DO7v9S1vf/Utb3/1LW9/9S1vf/UdX2/zZC + Rf8yMjLOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzPTIyMus+QEH/cq28/37g+f994Pn/feD5/33g + +f994Pn/feD5/33g+f994Pn/atv4/1LW9/9S1vf/Utb3/zQ5Ov+Oa2v/sICA/7CAgP+menr/WktL/zQ8 + Pv9HnLL/UdX2/1DP7/9Iorn/Pm15/zQ8Pv87ODj/YU9P/4ppaf9cTEz/PWp2/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/z1pdP8yMjL8MTExDgAAAAAAAAAAAAAAAAAAAAAzMzNaMjIy90BGR/93vc7/f+H5/37g + +f994Pn/feD5/33g+f994Pn/feD5/33g+f994Pn/X9n3/1LW9/9S1vf/Utb3/zQ7Pf+Mamr/sICA/7CA + gP+wgID/r39//3xgYP83Njb/Olhf/zQ7Pf88ODj/Y1BQ/4xpaf+sfX3/sICA/6t9ff85Njb/SKO6/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/0SQo/8zMzP/NDQ0SAAAAAAAAAAAAAAAADMzM3wyMjL+QExP/3vJ + 3f+B4fn/f+H5/37g+f994Pn/feD5/33g+f994Pn/feD5/33g+f983/j/Vdb3/1LW9/9S1vf/Utb3/zU9 + P/+LaWn/sICA/7CAgP+wgID/sICA/7CAgP+ZcnL/a1VV/41qav+tfn7/sICA/7CAgP+wgID/sICA/4Vm + Zv81PT//UdHx/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/0y30f8zMzP/MzMzhQAAAAAAAAAAAAAAADMz + M900Oz3/etHm/4Lh+f+B4Pn/gOD5/37g+f994Pn/feD5/33g+f994Pn/feD5/33g+f923vj/Utb3/1LW + 9/9S1vf/Utb3/zU/Qv+JaGj/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CA + gP+wgID/sICA/1pLS/8+cX7/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1HU9P80PD7/MzMzwgAA + AAAAAAAAAAAAADMzM6AzMzP/e9Lo/4Ph+f+B4fn/gOH5/37g+f994Pn/feD5/33g+f994Pn/feD5/33g + +f9t3Pj/Utb3/1LW9/9S1vf/Utb3/zVBRP+IZ2f/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CA + gP+wgID/sICA/7CAgP+wgID/qHt7/zY1Nf9JqsP/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW + 9/87YWv/MzMz9ysrKwgAAAAAAAAAADMzM2MzMzP/a6u6/4Ph+f+B4fn/gOH5/3/h+f994Pn/feD5/33g + +f994Pn/feD5/33g+f9m2vf/Utb3/1LW9/9S1vf/TcDc/zQ7Pf+GZmb/sICA/7CAgP+wgID/sICA/7CA + gP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/gGJi/zVCRf9R1PT/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9DiJr/MzMz/zIyMj0AAAAAAAAAAC8vLyczMzP/WYON/4Pi+f+B4fn/gOH5/3/h + +f994Pn/feD5/33g+f994Pn/feD5/33g+f9f2ff/Utb3/1HV9v9Flqr/NDs9/1hKSv+ne3v/sICA/7CA + gP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/VEdH/0B5h/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9Kr8n/MzMz/zMzM3oAAAAAAAAAADIyMgEzMzPoR1pe/4Pi + +f+B4fn/gOH5/3/h+f994Pn/feD5/33g+f994Pn/feD5/33g+f9a1/f/T8bk/zxkbv85Nzf/f2Ji/69/ + f/+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+leXn/NDQ0/0qu + x/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9R0fH/NDg5/zMzM7cAAAAAAAAAAAAA + AAAyMjKsNjc3/4Ha8P+B4fn/gOH5/3/h+f9+4Pn/feD5/33g+f994Pn/feD5/33g+f9Lorf/NUBC/1FF + Rf+fdnb/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CA + gP+qfHz/Rj4+/z5ve/9R1fb/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Olpi/zIy + MvAxMTEDAAAAAAAAAAAzMzNvMzMz/3G1xv+C4fn/gOH5/3/h+f9+4Pn/feD5/33g+f994Pn/eNXt/05y + e/82NTX/d11d/65/f/+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CA + gP+wgID/sICA/7CAgP+wgID/mnJy/zg2Nv9Flan/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/QYGR/zMzM/8xMTExAAAAAAAAAAAyMjIyMzMz/16Llv+C4fn/gOH5/3/h+f9+4Pn/feD5/33g + +f9qtMf/O0dK/0tBQf+acnL/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CA + gP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/4JjY/80ODn/S7XQ/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/SajA/zMzM/8xMTFuAAAAAAAAAAAxMTEDMzMz8UphZ/+C4fn/geH5/3/h + +f9+4Pn/feD5/33g+f9Qd4H/MzU1/0M9Pf9qVFT/j2xs/61+fv+wgID/sICA/7CAgP+wgID/sICA/7CA + gP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP9lUVH/N0hN/0/L + 6v9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/UM3s/zM1Nf8yMjKrAAAAAAAAAAAAAAAAMzMztzc6 + O/+B3fT/geD5/3/g+f9+4Pn/feD5/33g+f994Pn/dc7l/1+cq/88ZG7/NDo7/zs4OP9eTU3/hGVl/6d6 + ev+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CA + gP+sfX3/S0JC/zxlb/9R1fX/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/zlTWf8zMzPoLy8vAQAA + AAAAAAAAMTExejMzM/9yu83/geH5/4Dh+f9+4Pn/feD5/33g+f994Pn/feD5/33g+f9T1vf/UM/u/0il + vP8/dIL/NkRI/zU0NP9TRkb/i2lp/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CA + gP+wgID/sICA/7CAgP+wgID/n3V1/zs4OP9Dipz/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/0B6 + iP8zMzP/NDQ0JgAAAAAAAAAAMjIyPTMzM/9ekZ3/geD5/4Dg+f9+4Pn/feD5/33g+f994Pn/feD5/33g + +f9Y1/f/Utb3/1LW9/9S1vf/UdT1/0u0z/8+bXj/RT4+/69/f/+wgID/sICA/7CAgP+wgID/sICA/7CA + gP+XcXH/k25u/5Rvb/+WcHD/l3Fx/5lycv+bc3P/nHR0/3hdXf8zNTb/Sq3G/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/0eht/8zMzP/MzMzYwAAAAAAAAAAKysrCDMzM/hKZm3/geH5/4Dh+f9/4fn/feD5/33g + +f994Pn/feD5/33g+f9e2Pf/Utb3/1LW9/9S1vf/Utb3/1LW9/9Owt//MzMz/5pycv+wgID/sICA/7CA + gP+wgID/sICA/4dmZv8zNDT/NDg5/zM2N/8zNDT/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/O11l/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/0/H5f8zMzP/MTExoAAAAAAAAAAAAAAAADMzM8I3Pj//gN/3/4Dh + +f9/4fn/feD5/33g+f994Pn/feD5/33g+f9m2vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/OVRa/3Ja + Wv+wgID/sICA/7CAgP+wgID/oXZ2/zs4OP9Di53/Utb3/1LW9/9S1vf/UdT1/1HS8/9R0fD/UM/u/1DN + 7P9Qy+r/UdHx/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/0/H5P80Oz3/MjIy3QAAAAAAAAAAAAAAADIy + MoYzMzP/ccDU/4Dh+f9/4fn/fuD5/33g+f994Pn/feD5/33g+f9w3fj/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Q4iZ/0pBQf+wgID/sICA/7CAgP+ufn7/UEVF/ztgaf9R1PX/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/TLvW/zZHTP8yMjL+MjIyfwAA + AAAAAAAAAAAAADExMUkzMzP/XZak/4Dg+f9/4Pn/fuD5/33g+f994Pn/feD5/33g+f973/j/VNb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/TbzX/zMzM/+fdnb/sICA/7CAgP9xWVn/NUFE/0/G5P9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9Jq8P/NT0//zMz + M/gxMTFdAAAAAAAAAAAAAAAAAAAAADMzMw8yMjL8Smx1/4Dg+P9/4Pj/fuD4/3zg+P984Pj/fOD4/3zg + +P984Pj/Ydn3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX2/zdNUv94XV3/r4CA/5Ftbf80NTX/Sae//1HV + 9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/0aX + rP8zNjf/MzMz7DExMT8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjLON0NG/3/g+P9/4Pj/fuD4/33g + +P984Pj/fOD4/3zg+P984Pj/dN34/1LW9/9R1ff/UdX3/1HV9/9R1ff/UdX3/0GBkP9QRUX/p3p6/0E7 + O/9AfIv/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV + 9/9R1fb/QYGR/zMzM/8zMzPbMzMzJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzORMzMz/3HH + 3P9/4Pj/fuD4/33g+P984Pj/fOD4/3zg+P984Pj/fOD4/1/Z9/9R1ff/UdX3/1HV9/9R1ff/UdX3/0u1 + z/80MzP/VEdH/zlUWv9R0vL/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV + 9/9R1ff/UdX3/1HQ8P89a3f/MzMz/zMzM8QzMzMUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAzMzNUMzMz/16drf9/4Pj/fuD4/33g+P984Pj/fOD4/3zg+P984Pj/fOD4/3fe+P9T1vf/UdX3/1HV + 9/9R1ff/UdX3/1HV9v82Rkr/NDs8/02+2v9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV + 9/9R1ff/UdX3/1HV9/9R1ff/T8nn/zpZYP8zMzP/MjIypzMzMwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAzMzMYMjIy/0t0fv+A4Pj/fuD4/33g+P984Pj/fOD4/3zg+P984Pj/fOD4/3zg + +P9r3Pj/Utb3/1HV9/9R1ff/UdX3/1HV9/9Gm7D/SKS7/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV + 9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9Nvdn/N0pP/zMzM/4yMjKFHh4eAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMz2TlHS/9uxdv/fuD4/33g+P984Pj/fOD4/3zg + +P984Pj/fOD4/3zg+P983/j/ZNr3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV + 9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/0qtxv81P0H/MzMz+TExMWEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIynDMzM/8zMzP/PUxQ/1aB + jP9ttsj/fNz0/3zg+P984Pj/fOD4/3zg+P984Pj/fN/4/2PZ9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV + 9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/Rpuw/zM3OP8yMjLvMDAwQgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIyBjAw + MEQxMTGOMjIy2TMzM/8zMzP/OkBB/1BweP9mo7L/edLp/3zg+P984Pj/fOD4/3zf+P9o2/j/Utb3/1HV + 9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9v9ChZX/MzMz/zMz + M94vLy8qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMiUyMjJwMjIyuzIyMvgzMzP/NTU2/0ZaX/9cjZn/cb/S/3ze + 9/984Pj/ct34/1jX9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdHy/z5v + e/8zMzP/MzMzyDMzMxcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMw0yMjJSMzMznTMz + M+UzMzP/MzMz/zxFR/9QdX//Zai4/3fV7f9p2/j/Vdb3/1HV9/9R1ff/UdX3/1HV9/9R1ff/UdX3/1HV + 9/9Pyun/Oltk/zMzM/8zMzOsMzMzCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADQ0NAIwMDAzMjIyfjIyMskyMjL8MzMz/zQ3N/9EXmX/V5Cf/1u/2P9Y1vb/Utb3/1HV + 9/9R1ff/UdX3/02/3P83TFH/MjIy/jExMYozMzMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuLi4YMTExXzExMaoyMjLvMzMz/zMz + M/85SU3/RHmG/0qowP9R0PD/SrHK/zVAQ/8zMzP6MDAwZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAxMTEGNDQ0QDMzM4syMjLWMzMz/zMzM/80Ojz/Mzg5/zMzM/ExMTFHAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzIjIyMm0zMzO3MjIy2DAwMC0AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///////0h0//+D////SHT//wA///9IdP/+AAf//0h0//gAAH//SHT/8AAAD/9IdP/g + AAAB/0h0/8AAAAAfSHT/gAAAAB9IdP8AAAAAH0h0/AAAAAAPSHT4AAAAAA9IdPAAAAAAD0h04AAAAAAP + SHTAAAAAAAdIdIAAAAAAB0h0AAAAAAAHSHQAAAAAAAdIdAAAAAAAA0h0AAAAAAADSHQAAAAAAANIdAAA + AAAAA0h0gAAAAAABSHSAAAAAAAFIdIAAAAAAAUh0gAAAAAABSHTAAAAAAABIdMAAAAAAAEh0wAAAAAAA + SHTAAAAAAABIdOAAAAAAAEh04AAAAAAASHTgAAAAAAFIdOAAAAAAA0h08AAAAAAHSHTwAAAAAA9IdPAA + AAAAH0h08AAAAAA/SHT4AAAAAP9IdPgAAAAB/0h0+AAAAAP/SHT/gAAAB/9IdP/wAAAP/0h0//4AAB// + SHT//+AAf/9IdP///AD//0h0////wf//SHT///////9IdCgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAMzMzRjMzM+EzMzOnMzMzXDQ0NBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADMzM2M4Ozv6SZKk/0KFlf85VFv/MzQ0+zMzM8QzMzN3MTExLCoqKgEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADMzMwEyMjKEQ0tN/3C+0f9T1vf/Utb3/1LW9/9OxuT/Rper/zxncf80Ozz/MjIy3zIy + MpMzMzNINjY2CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAyMjIHMjIypE9cYP95zeL/atv4/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1HR + 8f9JqcH/QHiH/zdITf8zMzPzMzMzsDMzM2QzMzMaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAMTExEjQ0NL9Zb3T/e9Xs/3zf+P9a1/f/Utb3/1LW9/9S1vf/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/UdX2/0y71v9Dipz/Oltj/zM1Nv0zMzPLMjIygDMzMxwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMSE3NzfXYYGJ/3zb8/994Pj/dd74/1LW9/9R0fH/Utb3/1LW + 9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/T8vp/0edsv85Uln/MzMzgwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMTE2OTo66GiUn/983vf/feD5/33g+f9m2vf/UdX2/zQ9 + P/9Gma7/UdX2/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/0WW + qv8yMjK/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTExTzw9PfVtprT/fd/4/33g+P994Pj/feD4/1nX + 9/9S1fb/RD4+/2BPT/8+bnr/UM3t/1LW9/9S1vf/Utb3/1LW9/9S1vf/Utb3/1HS8/9Krsf/UdT1/1LW + 9/9S1vf/TbzY/zIyMvUuLi4HAAAAAAAAAAAAAAAAAAAAADExMW4+QkP8crbH/33g+f994Pn/feD5/33g + +f933vj/Utb3/1LW9/9HQkP/r39//4FjY/89TlP/S7XQ/1LW9/9S1vf/UdLz/0mowP8/cn//QUZJ/zU8 + Pv9R0fH/Utb3/1LW9/9R1fb/NUBD/zIyMjkAAAAAAAAAADY2NgMzMzOPQUpM/3fE1/9+4Pj/feD4/33g + +P994Pj/feD4/2zc+P9S1vf/Utb3/0ZDRP+wgID/sICA/5x0dP9LRkf/QoSU/z9yf/9CR0r/aFNT/5Ft + bf+RbW3/Pm56/1LW9/9S1vf/Utb3/1LW9/88ZnH/MzMzdQAAAAAAAAAAMzMzrEFRVP97zuP/gOH5/37g + +f994Pn/feD5/33g+f994Pn/Ydn3/1LW9/9S1vf/RURG/7CAgP+wgID/sICA/6x9ff96X1//km1t/65/ + f/+wgID/sICA/2dTU/9Jpr7/Utb3/1LW9/9S1vf/Utb3/0SNn/8zMzOxAAAAAAAAAAAzMzPSZqe2/4Lh + +P+A4fj/fuD4/33g+P994Pj/feD4/33g+P9Y1/f/Utb3/1LW9/9ERUf/sICA/7CAgP+wgID/sICA/7CA + gP+wgID/sICA/7CAgP+uf3//QEZJ/1HS8v9S1vf/Utb3/1LW9/9S1vf/S7PN/zMzM+wyMjIBAAAAADIy + MpVXgYz/guH5/4Dh+f9+4Pn/feD5/33g+f994Pn/e9/4/1LW9/9S1vf/TLrW/0RCQ/+wgID/sICA/7CA + gP+wgID/sICA/7CAgP+wgID/sICA/45ra/8/dIH/Utb3/1LW9/9S1vf/Utb3/1LW9/9R0vL/NDo8/zEx + MSsAAAAAMjIyWUZZXv+D4fj/gOH4/37g+P993/j/fd/4/33f+P913vj/UdT1/0SOof9JRUf/mHFx/7CA + gP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/Y1FR/0qsxf9S1vb/Utb2/1LW9v9S1vb/Utb2/1LW + 9v87XWb/MzMzZwAAAAAxMTEdNTc3/4Hb8f+B4fj/f+D4/33f+P993/j/fd/4/2zL4v88Xmf/a1VV/6x9 + ff+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP9pVFT/RI+i/1LW9v9S1vb/Utb2/1LW + 9v9S1vb/Utb2/0KElP8yMjKjAAAAAAAAAAAzMzPfcLbH/4Hh+P9/4Pj/feD4/3zf+P9jpLT/RkdJ/49s + bP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/6x9ff9MRkf/S7PN/1LW + 9v9R1vb/Utb2/1HW9v9S1vb/SarC/zIyMt8AAAAAAAAAADIyMqNdjJj/geH4/3/h+P994Pj/dc/m/z1M + UP9UR0f/gGJi/6V5ef+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CAgP+wgID/sICA/551 + df8+S1D/T8rp/1HW9v9R1vb/Udb2/1HW9v9Qzu3/MzU2/jExMR0AAAAAMjIyZ0liaP+B4fj/f+H4/33g + +P993/j/fN/4/2bB2P9DiZv/O1lg/1BGR/92XFz/n3V1/7CAgP+wgID/sICA/7CAgP+wgID/sICA/7CA + gP+wgID/sICA/4hnZ/88ZG7/UdX1/1HW9v9R1vb/Udb2/1HW9v85VFv/MzMzWQAAAAAxMTErNzw9/4Dd + 9f9/4fj/feD4/33f+P993/j/ct34/1LW9v9S1vb/T8fl/0aXq/9DREb/r39//7CAgP+wgID/sICA/6Z5 + ef+LaWn/jWpq/49ra/+QbGz/km1t/1VISP9Dipz/Utb2/1LW9v9S1vb/Utb2/0B7if8yMjKVAAAAADMz + MwEzMzPscb3Q/4Dh+P9+4Pj/fd/4/33f+P953/j/Utb3/1LW9v9S1vb/Utb2/z1rd/+WcHD/sICA/7CA + gP+uf3//UkdI/0B7if9Bf47/QX2M/0B7iv9AeYf/QHeF/0OHmP9S1vb/Utb2/1LW9v9S1vb/R5+1/zIy + MtEAAAAAAAAAADMzM7Fdk6H/gOH4/37g+P993/j/fd/4/3zf+P9X1/f/Udb2/1HW9v9R1vb/R5+1/25X + V/+wgID/sICA/3RbW/9BgJD/Udb2/1HW9v9R1vb/Udb2/1HW9v9R1vb/Udb2/1HW9v9R1vb/Udb2/07B + 3v84TVL/MjIyrQAAAAAAAAAAMjIydUpqcv+A4fj/fuD4/33f+P993/j/fd/4/2Ta9/9R1vb/Udb2/1HW + 9v9Qze3/SERF/69/f/+Ub2//PFde/1HS8/9R1vb/Udb2/1HW9v9R1vb/Udb2/1HW9v9R1vb/Udb2/1HW + 9v9LtM7/NUJF/zIyMpEuLi4DAAAAAAAAAAAyMjI5N0FD/3/g+P9+4Pj/fd/4/33f+P993/j/dd74/1LW + 9/9R1vb/Udb2/1HW9v88Y23/lnBw/0VGR/9Nv9v/Udb2/1HW9v9R1vb/Udb2/1HW9v9R1vb/Udb2/1HW + 9v9R1vb/SKS7/zQ6O/wzMzNwAAAAAAAAAAAAAAAAAAAAADQ0NAczMzP1ccXa/37g+P993/j/fd/4/33f + +P993/j/YNn3/1LW9v9S1vb/Utb2/0WWqv89OTn/Rpqu/1LW9v9S1vb/Utb2/1LW9v9S1vb/Utb2/1LW + 9v9S1vb/UtX2/0SRpP8zNDX1MzMzUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzM79fnKv/f+D4/33g + +P994Pj/feD4/33g+P953/j/Vtb3/1LW9/9S1vb/T8nn/0KDk/9R1fb/Utb2/1LW9/9S1vb/Utb3/1LW + 9v9S1vf/Utb2/1HU9f9AfIv/MjIy6TExMTcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjIygz9U + Wv9jpbX/edXt/33f+P993/j/fd/4/33f+P9z3fj/VNb3/1HW9v9R1vb/Udb2/1HW9v9R1vb/Udb2/1HW + 9v9R1vb/Udb2/1HW9v9Q0O//PWhy/zIyMtcxMTEiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAyMjIdMTExgjIyMs41Nzf+SGFn/1+Vo/90yN3/fN/4/33f+P9z3fj/Vtf3/1HW9v9R1vb/Udb2/1HW + 9v9R1vb/Udb2/1HW9v9R1vb/T8jm/zlXXv8yMjLBMDAwEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMhwyMjJmMjIysjMzM/RATlL/VoGM/2uzxv932/T/Ydn3/1LW + 9/9R1vf/Udb3/1HW9/9R1vf/Udb3/0292f83SU7/MzMzpjMzMwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDQ0CTIyMkoyMjKWMjIy4Tc9 + Pv9Ka3T/V5yu/1fJ5f9T1vf/Udb2/1HW9v9Kr8n/NT9C/zIyMoYzMzMBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAApKSkBMTExLjIyMnozMzPFMzQ0/DtWXf9Dhpf/RZKl/zM4OfoxMTFlAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIVMzMzXTIyMqkzMzPhMTExRwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////g////wA///wAB//4AAD/8AAAH+AAAB/AA + AAfgAAADwAAAAwAAAAMAAAADAAAAAQAAAAEAAAABAAAAAYAAAAGAAAAAgAAAAIAAAACAAAAAwAAAAMAA + AADAAAADwAAAB+AAAA/gAAAf4AAAP/wAAH//gAD///AD////B/8oAAAAEAAAACAAAAABACAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzo7bj5ocuM2R0ueMzMzVDEx + MRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvLy8EQUpMlmeyxf9S1vf/UdT0/0ux + yv9Cg5P7Ol1mwTM2NngzMzMvMjIyAQAAAAAAAAAAAAAAAAAAAAAyMjIQSlpeunbH3P9m2vf/UM/v/1HV + 9v9R1fb/UdX2/1HV9v9PxuT/Rpmu/zxkbuMyMjIvAAAAAAAAAAAxMTEkUGpx13rU6/983/j/V9f3/09T + V/9Lq8P/UdX2/1HV9v9R1fb/TLnU/1HU9f9OxOH/MjIydgAAAAAzMzM/V3uF7Hzc9P983/n/dd74/1HV + 9v97YWL/km5u/0+Dkf9RiJf/b2xx/1deY/9R1fb/UdX2/zhRV7QAAAAASGJp5YHg+P994Pn/fN/5/2vb + +P9R1fb/emJj/6+AgP+sfn7/r39//61+fv9Mi5z/UdX2/1HV9v8/c4DvLy8vA0FQU66B4fj/fuD5/3zf + +f9i0e3/U3+M/5pzc/+vgID/r4CA/6+AgP+Namr/TLvW/1HV9v9R1fb/Rpit/zIyMjEzMzNweMvg/37g + +f9rt8r/bWZq/6t9ff+vgID/r4CA/6+AgP+vgID/qHt7/1GAjf9R1fb/UdX2/03A3P8yMjJwMjIyMmSg + r/9+4Pn/dtHo/1Scr/9efIf/fmlq/6+AgP+vgID/r4CA/6+AgP+acnL/S5uw/1HV9v9R1fb/N0xSri8v + LwNSeILwf+D5/3zf+f9m2vf/UdX2/0iku/+gdnb/qHt7/1F1gP9LkKL/TY+h/0iTpv9R1fb/UdX2/ztf + Z+UAAAAAQFJXtH/g+P993/n/ct34/1HV9v9R0PD/eWVn/2Jsc/9R0fH/UdX2/1HV9v9R1fb/UdHx/z5x + fuwyMjI/AAAAADMzM3Z1zeP/fd/5/3zf+P9d2Pf/UdX2/0Z7if9Nvtv/UdX2/1HV9v9R1fb/T8fm/zte + ZtczMzMkAAAAAAAAAAAyMjIvSWhv5GKhsf930ej/ed/4/1nX9/9R1fb/UdX2/1HV9v9R1fb/TLnV/zdO + U7sxMTEQAAAAAAAAAAAAAAAAAAAAACwsLAEyMjIwNTc3eUhiacJWiZX7VrTM/1PU9P9R1fb/Saa+/zVB + RJczMzMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwEDIyMlU4SEyePWhz4zM3 + OG4AAAAAAAAAAAAAAAAAAAAAAAAAAP//rEH4P6xB4AOsQcABrEGAAaxBAAGsQQAArEEAAKxBAACsQQAA + rEEAAKxBgACsQYABrEGAA6xBwAesQfwfrEE= + + + \ No newline at end of file diff --git a/NewSessionForm.Designer.cs b/NewSessionForm.Designer.cs new file mode 100644 index 0000000..0a35947 --- /dev/null +++ b/NewSessionForm.Designer.cs @@ -0,0 +1,101 @@ +namespace bzit.bomg +{ + partial class NewSessionForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NewSessionForm)); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.btnSave = new RyzStudio.Windows.Forms.BigButton(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 12); + this.label1.Margin = new System.Windows.Forms.Padding(3); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(132, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Enter a new session name"; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Location = new System.Drawing.Point(12, 31); + this.textBox1.MaxLength = 128; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(280, 21); + this.textBox1.TabIndex = 0; + this.textBox1.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.textBox1_PreviewKeyDown); + // + // btnSave + // + this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnSave.BackColor = System.Drawing.Color.WhiteSmoke; + this.btnSave.Location = new System.Drawing.Point(196, 67); + this.btnSave.MaximumSize = new System.Drawing.Size(120, 32); + this.btnSave.MinimumSize = new System.Drawing.Size(32, 32); + this.btnSave.Name = "btnSave"; + this.btnSave.Padding = new System.Windows.Forms.Padding(4); + this.btnSave.Size = new System.Drawing.Size(96, 32); + this.btnSave.TabIndex = 22; + this.btnSave.Value = "&OK"; + this.btnSave.Click += new System.EventHandler(this.button2_Click); + // + // NewSessionForm + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(304, 111); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.Font = new System.Drawing.Font("Tahoma", 8.25F); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "NewSessionForm"; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "New"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private RyzStudio.Windows.Forms.BigButton btnSave; + } +} \ No newline at end of file diff --git a/NewSessionForm.cs b/NewSessionForm.cs new file mode 100644 index 0000000..e7890ba --- /dev/null +++ b/NewSessionForm.cs @@ -0,0 +1,55 @@ +using System; +using System.Windows.Forms; + +namespace bzit.bomg +{ + public partial class NewSessionForm : Form + { + private MainForm parentForm = null; + + public NewSessionForm(MainForm form) + { + InitializeComponent(); + + parentForm = form; + } + + private void button2_Click(object sender, EventArgs e) + { + if (parentForm == null) + { + return; + } + + if (string.IsNullOrEmpty(textBox1.Text)) + { + return; + } + + parentForm.treeView1.Clear(); + parentForm.treeView1.Nodes.Add("", textBox1.Text.Trim(), 0, 0); + parentForm.ApplicationMode = MainForm.AppMode.New; + + this.Close(); + } + +#region behaviour + + private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) + { + switch (e.KeyCode) + { + case Keys.Enter: + button2_Click(sender, null); + break; + case Keys.Escape: + this.Close(); + break; + default: break; + } + } + +#endregion + + } +} \ No newline at end of file diff --git a/NewSessionForm.resx b/NewSessionForm.resx new file mode 100644 index 0000000..f427d71 --- /dev/null +++ b/NewSessionForm.resx @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAB0AAAA0AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAA + ADMAAAAdAAAAAAAAAAAAAAA0+fn59fz8/P38/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8 + /P35+fnzAAAAMwAAAAAAAAABAAAANvz8/P78/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8 + /P/8/Pz//Pz8/QAAADYAAAAAAAAAAQAAADb8/Pz//Pz8//z8/P/8/Pz//Pz8//v7+//7+/v/+/v7//v7 + +//7+/v/+/v7//z8/P8AAAA2AAAAAD3K814np8+g7Pj8/+z4+/+E1/f/qeL4//v7+//7+/v/+vr6//r6 + +v/6+vr/+vr6//r6+v/8/Pz/AAAANgAAAABEzPNJTM/3/y/H9f8owvP/MsL0/7vo+f/7+/v/+/v7//v7 + +//6+vr/+vr6//j4+P/4+Pj//Pz8/wAAADYAAAAASsvwLkvQ9/+C3vn/edn5/yvA9P/U8Pr//Pz8//z8 + /P/8/Pz/+/v7//n5+f/5+fn/+Pj4//z8/P8AAAA2W9f4A1HS+LFz2vj/i+D6/4Ld+f9T0Pb/YM/2//n7 + /P/8/Pz//Pz8//r6+v/5+fn/9vb2//b29v/8/Pz/AAAANmHZ+Jlp2Pn/ctr4/4rg+v+B3fn/UM73/zHC + 9P910/f//Pz8//v7+//4+Pj/9vb2//Pz8//y8vL//Pz8/wAAADZk2fgJWtT0QEOuz55l1/j/WNL4/4re + +P/E7fr/9Pr8//v7+//4+Pj/9fX1//Ly8v/v7+//7e3t//z8/P8AAAA2AAAAAAAAAAEAAAA2cdn3/2bW + 9//8/Pz//Pz8//v7+//4+Pj/9fX1//Hx8f/s7Oz/6urq/+bm5v/8/Pz/AAAANgAAAAAAAAABAAAANtDx + +//L7vj/+fn5//n5+f/39/f/9vb2//Ly8v/r6+v//Pz8//z8/P/8/Pz//Pz8/wAAADYAAAAAAAAAAQAA + ADb8/Pz/9/f3//n5+f/39/f/9/f3//Pz8//w8PD/6urq//z8/P/29vb/9PT0/5iYmJEAAAAgAAAAAAAA + AAAAAAA2+/v7/fT09P/19fX/9fX1//X19f/x8fH/7+/v/+np6f/8/Pz/5+fn/5SUlJEAAAAgAAAAAgAA + AAAAAAAAAAAAM/j4+PD7+/v9/Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz/+Pj4/5OTk5EAAAAgAAAAAgAA + AAAAAAAAAAAAAAAAABwAAAAzAAAANgAAADYAAAA2AAAANgAAADYAAAA2AAAANgAAADYAAAAgAAAAAgAA + AAAAAAAAwACsQcAArEGAAKxBgACsQYAArEGAAKxBgACsQQAArEEAAKxBAACsQYAArEGAAKxBgACsQcAA + rEHAAaxBwAOsQQ== + + + \ No newline at end of file diff --git a/OptionsForm.Designer.cs b/OptionsForm.Designer.cs new file mode 100644 index 0000000..749a7c5 --- /dev/null +++ b/OptionsForm.Designer.cs @@ -0,0 +1,151 @@ +namespace bzit.bomg +{ + partial class OptionsForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionsForm)); + this.label1 = new System.Windows.Forms.Label(); + this.tbxAddress = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.oToolTip = new System.Windows.Forms.ToolTip(this.components); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.btnSave = new RyzStudio.Windows.Forms.BigButton(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 12); + this.label1.Margin = new System.Windows.Forms.Padding(3); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(94, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Open Bookmark:"; + // + // tbxAddress + // + this.tbxAddress.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.tbxAddress.Location = new System.Drawing.Point(12, 78); + this.tbxAddress.MaxLength = 4096; + this.tbxAddress.Name = "tbxAddress"; + this.tbxAddress.Size = new System.Drawing.Size(178, 22); + this.tbxAddress.TabIndex = 0; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 59); + this.label2.Margin = new System.Windows.Forms.Padding(3); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(104, 13); + this.label2.TabIndex = 4; + this.label2.Text = "Custom Command:"; + // + // oToolTip + // + this.oToolTip.Active = false; + this.oToolTip.BackColor = System.Drawing.Color.IndianRed; + // + // comboBox1 + // + this.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "Default", + "Custom Command"}); + this.comboBox1.Location = new System.Drawing.Point(12, 31); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(280, 21); + this.comboBox1.TabIndex = 61; + // + // btnSave + // + this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnSave.BackColor = System.Drawing.Color.WhiteSmoke; + this.btnSave.Location = new System.Drawing.Point(196, 227); + this.btnSave.MaximumSize = new System.Drawing.Size(120, 32); + this.btnSave.MinimumSize = new System.Drawing.Size(32, 32); + this.btnSave.Name = "btnSave"; + this.btnSave.Padding = new System.Windows.Forms.Padding(4); + this.btnSave.Size = new System.Drawing.Size(96, 32); + this.btnSave.TabIndex = 3; + this.btnSave.Value = "&Save"; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.textBox1.Location = new System.Drawing.Point(196, 78); + this.textBox1.MaxLength = 4096; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(96, 22); + this.textBox1.TabIndex = 62; + // + // OptionsForm + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(304, 271); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.label1); + this.Controls.Add(this.tbxAddress); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.label2); + this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "OptionsForm"; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Options"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox tbxAddress; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ToolTip oToolTip; + private RyzStudio.Windows.Forms.BigButton btnSave; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.TextBox textBox1; + } +} \ No newline at end of file diff --git a/OptionsForm.cs b/OptionsForm.cs new file mode 100644 index 0000000..7e50850 --- /dev/null +++ b/OptionsForm.cs @@ -0,0 +1,44 @@ +using System; +using System.Windows.Forms; + +namespace bzit.bomg +{ + public partial class OptionsForm : Form + { + private MainForm parentForm = null; + + public OptionsForm(MainForm form) + { + InitializeComponent(); + + parentForm = form; + + this.StartPosition = FormStartPosition.WindowsDefaultLocation; + } + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + + comboBox1.SelectedIndex = 0; + + comboBox1.SelectedIndex = ((parentForm.IconDatabase.GetConfig("core.bookmark.action", string.Empty).Equals("1")) ? 1 : 0); + tbxAddress.Text = parentForm.IconDatabase.GetConfig("core.bookmark.customcommand1", string.Empty).Trim(); + textBox1.Text = parentForm.IconDatabase.GetConfig("core.bookmark.customcommand2", string.Empty).Trim(); + } + + protected override void OnShown(EventArgs e) + { + base.OnShown(e); + } + + private void btnSave_Click(object sender, EventArgs e) + { + parentForm.IconDatabase.SetConfig("core.bookmark.action", comboBox1.SelectedIndex.ToString()); + parentForm.IconDatabase.SetConfig("core.bookmark.customcommand1", tbxAddress.Text.Trim()); + parentForm.IconDatabase.SetConfig("core.bookmark.customcommand2", textBox1.Text.Trim()); + + this.Close(); + } + } +} \ No newline at end of file diff --git a/OptionsForm.resx b/OptionsForm.resx new file mode 100644 index 0000000..9941254 --- /dev/null +++ b/OptionsForm.resx @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsbGxjV1dXv1BQUL9RUVFjAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAbm5uKWlpaQ55eXkCgICA6ry8vP+xsbH/Wlpa6llZWQJbW1sOTU1NKQAA + AAAAAAAAAAAAAAAAAAAAAAAAgICAm25ubv1jY2PndXV1GYKCgufLy8v/x8fH/2FhYedZWVkZV1dX501N + Tf1ISEibAAAAAAAAAAAAAAAAo6Oje7u7u//e3t7/paWl/4KCgvSEhIT+w8PD/8HBwf9sbGz+bW1t9KWl + pf/S0tL/f39//1FRUXsAAAAAAAAAAKqqqn2lpaX+1dXV/8TExP/Ly8v/0dHR/8nJyf/Hx8f/zMzM/8TE + xP+8vLz/y8vL/21tbf5mZmZ9AAAAAAAAAAAAAAAAq6urhcTExP/AwMD/xMTE/8fHx/+pqan/pqam/8DA + wP+9vb3/tLS0/6mpqf9oaGiFAAAAAAAAAACioqLNjo6O45+fn+7Pz8//xcXF/8zMzP+dnZ3GmJiYRJOT + k0SOjo7GwMDA/7u7u/+4uLj/Y2Nj7ldXV+NSUlLNvr6+/eLi4v/S0tL/xcXF/83Nzf+wsLD/kpKSRAAA + AAAAAAAAlJSURKenp//BwcH/tra2/7+/v//S0tL/YGBg/cPDw/3p6en/1tbW/8nJyf/Ozs7/pKSk/4OD + g0QAAAAAAAAAAJmZmUSrq6v/w8PD/7m5uf/FxcX/3d3d/2pqav3IyMjNw8PD47+/v+7Y2Nj/zc3N/7u7 + u/+BgYHGdnZ2RH19fUSOjo7GwsLC/8HBwf/Nzc3/i4uL7oaGhuOCgoLNAAAAAAAAAADExMSF1NTU/8zM + zP/Jycn/ubm5/5ubm/+goKD/wcHB/8XFxf/AwMD/tra2/4iIiIUAAAAAAAAAAAAAAADKysp9w8PD/tzc + 3P/U1NT/2dnZ/9vb2//W1tb/1NTU/9nZ2f/S0tL/y8vL/8jIyP94eHj+cHBwfQAAAAAAAAAA0NDQe9zc + 3P/t7e3/29vb/8HBwfS9vb3+1tbW/9TU1P+vr6/+q6ur9MvLy//n5+f/tra2/4qKinsAAAAAAAAAAAAA + AADR0dGbzs7O/crKyufFxcUZwcHB597e3v/d3d3/sbGx57CwsBmrq6vnpqam/aKiopsAAAAAAAAAAAAA + AAAAAAAAAAAAANHR0SnOzs4Oy8vLAsfHx+rl5eX/5OTk/6urq+q1tbUCsbGxDqysrCkAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLy8tjx8fHv8PDw7++vr5jAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA/D+sQeAHrEHAA6xBgAGsQYABrEHAA6xBAACsQQGArEEBgKxBAACsQcADrEGAAaxBgAGsQcAD + rEHgB6xB/D+sQQ== + + + \ No newline at end of file diff --git a/PasswordForm.Designer.cs b/PasswordForm.Designer.cs new file mode 100644 index 0000000..deaee9c --- /dev/null +++ b/PasswordForm.Designer.cs @@ -0,0 +1,102 @@ +namespace bzit.bomg +{ + partial class PasswordForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PasswordForm)); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.btnSave = new RyzStudio.Windows.Forms.BigButton(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 12); + this.label1.Margin = new System.Windows.Forms.Padding(3); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(91, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Enter a password"; + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Location = new System.Drawing.Point(12, 31); + this.textBox1.Name = "textBox1"; + this.textBox1.PasswordChar = '*'; + this.textBox1.Size = new System.Drawing.Size(280, 21); + this.textBox1.TabIndex = 0; + this.textBox1.UseSystemPasswordChar = true; + this.textBox1.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.textBox1_PreviewKeyDown); + // + // btnSave + // + this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnSave.BackColor = System.Drawing.Color.WhiteSmoke; + this.btnSave.Location = new System.Drawing.Point(196, 67); + this.btnSave.MaximumSize = new System.Drawing.Size(120, 32); + this.btnSave.MinimumSize = new System.Drawing.Size(32, 32); + this.btnSave.Name = "btnSave"; + this.btnSave.Padding = new System.Windows.Forms.Padding(4); + this.btnSave.Size = new System.Drawing.Size(96, 32); + this.btnSave.TabIndex = 23; + this.btnSave.Value = "&OK"; + this.btnSave.Click += new System.EventHandler(this.button2_Click); + // + // PasswordForm + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(304, 111); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.Font = new System.Drawing.Font("Tahoma", 8.25F); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "PasswordForm"; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Password"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private RyzStudio.Windows.Forms.BigButton btnSave; + } +} \ No newline at end of file diff --git a/PasswordForm.cs b/PasswordForm.cs new file mode 100644 index 0000000..5336a59 --- /dev/null +++ b/PasswordForm.cs @@ -0,0 +1,53 @@ +using System; +using System.Windows.Forms; + +namespace bzit.bomg +{ + public partial class PasswordForm : Form + { + private MainForm parentForm = null; + + public PasswordForm(MainForm form) + { + InitializeComponent(); + + parentForm = form; + } + + private void button2_Click(object sender, EventArgs e) + { + if (parentForm == null) + { + return; + } + + if (string.IsNullOrEmpty(textBox1.Text)) + { + return; + } + + this.Close(); + } + + private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) + { + switch (e.KeyCode) + { + case Keys.Enter: + button2_Click(sender, null); + break; + case Keys.Escape: + this.Close(); + break; + default: break; + } + } + + public new string ShowDialog() + { + base.ShowDialog(); + + return textBox1.Text; + } + } +} \ No newline at end of file diff --git a/PasswordForm.resx b/PasswordForm.resx new file mode 100644 index 0000000..de6f015 --- /dev/null +++ b/PasswordForm.resx @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzjMmFRJ7V6TmMy+AkZqRWAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR63jyYXp+f9M2fX/OZHM8yNgnF0AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeq4c+g5vj/N9Ly/0bW9v86k831IlqYYhlS + tw0cXb8NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvl9pcOZ3dzpji9v9S3PX/Rdn2/zaP + zPQ0gs/oNYPS6B9dplMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyU2TRFqeHKT7fl3l3Z + 8v9N2/b/Wt33/1TY9f8tf833H1ehWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOY + 2oaI3fT/aeD2/3Li9/9e3/b/VNr2/zd+zfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA6oN2vqO75/33m+P+Z6Pj/fdHw/3/i9v8+l9nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAALZXZZlzA6v2i8Pv/f9Tw/33H7P9Pot31IG21WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAokNhwbsns/8nz+/9WueftJITNSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAALJXaAjCY2olFquHLKpXaYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA//+sQf//rEH//6xB4f+sQeD/rEHgH6xB4A+sQfAHrEH8B6xB/AesQfwHrEH+D6xB/h+sQf// + rEH//6xB//+sQQ== + + + \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..0898628 --- /dev/null +++ b/Program.cs @@ -0,0 +1,19 @@ +using System; +using System.Windows.Forms; + +namespace bzit.bomg +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} \ No newline at end of file diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..21685e0 --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Bookmark Manager")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Bookmark Manager")] +[assembly: AssemblyCopyright("Copyright © Ray Lam 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("e3ec71b2-edea-4f83-b5c9-3b74c9f6ba37")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("0.2.0.082")] +[assembly: AssemblyFileVersion("0.1.0.0")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs new file mode 100644 index 0000000..c4940a1 --- /dev/null +++ b/Properties/Resources.Designer.cs @@ -0,0 +1,230 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace bzit.bomg.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("bzit.bomg.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap aniZomq2x32 { + get { + object obj = ResourceManager.GetObject("aniZomq2x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to Ray Lam. + /// + internal static string app_author { + get { + return ResourceManager.GetString("app_author", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Bookmark Manager. + /// + internal static string app_name { + get { + return ResourceManager.GetString("app_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to 0.2.0.082 beta. + /// + internal static string app_version { + get { + return ResourceManager.GetString("app_version", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap cog { + get { + object obj = ResourceManager.GetObject("cog", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap comment { + get { + object obj = ResourceManager.GetObject("comment", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap disk { + get { + object obj = ResourceManager.GetObject("disk", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap folder { + get { + object obj = ResourceManager.GetObject("folder", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap folder_explore { + get { + object obj = ResourceManager.GetObject("folder_explore", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap folder_page { + get { + object obj = ResourceManager.GetObject("folder_page", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap help { + get { + object obj = ResourceManager.GetObject("help", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap magnifier { + get { + object obj = ResourceManager.GetObject("magnifier", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap page_white_disk { + get { + object obj = ResourceManager.GetObject("page_white_disk", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap page_white_gray_green { + get { + object obj = ResourceManager.GetObject("page_white_gray_green", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap page_white_star { + get { + object obj = ResourceManager.GetObject("page_white_star", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap page_white_world_bw { + get { + object obj = ResourceManager.GetObject("page_white_world_bw", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap transmit_blue { + get { + object obj = ResourceManager.GetObject("transmit_blue", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Properties/Resources.resx b/Properties/Resources.resx new file mode 100644 index 0000000..bfb5c40 --- /dev/null +++ b/Properties/Resources.resx @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\aniZomq2x32.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Ray Lam + + + Bookmark Manager + + + 0.2.0.082 beta + + + ..\Resources\cog.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\comment.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\disk.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\folder.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\folder_explore.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\folder_page.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\magnifier.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\page_white_disk.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\page_white_gray_green.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\page_white_star.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\page_white_world_bw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\transmit_blue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs new file mode 100644 index 0000000..2ced36b --- /dev/null +++ b/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace bzit.bomg.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Properties/Settings.settings b/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..9706953 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# bookmark-manager +Bookmark Manager is a free utility for storing and organising your favourite Internet shortcuts + +http://www.hiimray.co.uk/software-bookmark-manager diff --git a/References/SQLiteWrapper.dll b/References/SQLiteWrapper.dll new file mode 100644 index 0000000000000000000000000000000000000000..ec9f1f82cda4ce19b922b6a12c41a4f084ffb52c GIT binary patch literal 20480 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°p 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

U~9pZQ?~}i@*4rw1^kxG`4CsBB6x< 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%0A-hY~V=-;_joSv+te9<@3H(wHl; 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�X6H%qlKDjVm3 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%0DSl%c%D7_eD<$wqiTR|f6baD)lTQ)%)|ELbw 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 PkkBNz%C+<>Tl)V4CJ5n6 literal 0 HcmV?d00001 diff --git a/Resources/aniZomq2x32.gif b/Resources/aniZomq2x32.gif new file mode 100644 index 0000000000000000000000000000000000000000..7df769e3cee7586285fddf862a9bc666f9dbddc2 GIT binary patch literal 15715 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 literal 0 HcmV?d00001 diff --git a/Resources/bullet_key.ico b/Resources/bullet_key.ico new file mode 100644 index 0000000000000000000000000000000000000000..88e2f20fbc87a2cfd3670d0f9529398cb8b683c1 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#BdtlsivejkY)t8n%ryr=KEeRvl z!|rPzpKN{k^S{r{um3G4p82etFejE2Gu&4_Jip-CkN@VEKK*yQ_U*sbC^+12wO~3hp z82!3aZ>Gf@c=dPDhu{C}uYCAld;HCR|3!DdD&%e@%KacaG$!0A$UFJw|H;q4|A*~- z{#K>stOqf6!_??Zy~SiO<5s8Zs)whwrrt`1i4Q0G|Nk|PF#Hh6egMMqK+M0!@dNuB S$3IB;A5iQcP!6UZL<0bYD$?Bm literal 0 HcmV?d00001 diff --git a/Resources/cog.ico b/Resources/cog.ico new file mode 100644 index 0000000000000000000000000000000000000000..737f1a86914e7c123e5f70b307a9952ecbcb6d8e GIT binary patch literal 1150 zcmb7DNlPPP5N$I9a|@mZa+~A$D~3Q0UINC8s23#=qNsRL6bXqdqToS2Bm_}nqNoi~ zP*F7LxUcPoisHhMD2)Mg%5l2OS6@hG!GW0$y`;YHy?XVkK1nLVueeyk^NZyEC`q3s zN&1Q#Aw+Uc+}_@9^7(w}_4RdHSXiK{ zs;YElWu>XQy4q~F+e_Z#!u}xey3^^@T3T8xU0q$;(a{m@?d?%*ZLJ2p1$s2#_0rPP z;IAB$lan25YisoQ_(+jRgn-TV^z;~8TU)fTu|cTCXl!iE^4i741$n(*LQNfcj@j8+ z57vyUt1H^x-X_j_etu2|2L~em@$s>Ub3MEUF2m(=dGdIE&&|#CGB%M&h`p?PW@d(_ zrlv$J7K_p1;-ZMT-R|BzHWUh}LqkKU@$vD@>FFu$?CcQd8yg$j_51y{k&zJ_)_0kg zYg}1bA$XL57pd~{ay1^0>&awN)Wuj;RcU^Ho`#2qZTTFdqocOz>1pA`^71k%iX!&c z)YRzkNPl^Gq3i2wQSZsg35CO9>hA6?-~)kx4fPTGxw^V4G(J2$P&YG>a$PcRsy ziHQk;Y?}<5XZ*S@D?oQN{|IdBr-a#+5wY3?|&CP}W zot>R^F!uHJRp2l)S@g?bPZ%GKMh(=TWxS?oLc_qoKw*AZ1Lh?N?{sLrzZj~y|lDs0*_gi<#*3dj^XDM t98Pd3@I}Fl{Pq0)_$FJwf0C_<53>K>9IF$eZ literal 0 HcmV?d00001 diff --git a/Resources/cog.png b/Resources/cog.png new file mode 100644 index 0000000000000000000000000000000000000000..67de2c6ccbeac17742f56cf7391e72b2bf5033ba GIT binary patch literal 512 zcmV+b0{{JqP)CQDsH?WF>AIFt zQuJ}i;w2$ZUU#3SZ6RY0Gw;kZ&ol1~2ky^QZ(fom$=jNJZt!z7w_pH~wdQ;R)Gh%BbQFCx+Nm!4SuS-vkr`vhhrX zM*>w%e+v~?m@q~ImPAgtLkR_3U<2F8LP3W5=LJ*ZN|S5p#sf4YFr$p~Q~Z*0Ngxf2 zjk#J#<7EAlhzlrV53~GF&pIzcCN_lz9@05UeoUXiK%N z#x+4o*i_c|6_Uu1+&TIho?3@y4k-#b8Y_o94zW*B3a1ne2-Y5s0uke$$|@=}OP-i= zNYZQA=>PrZu0MfSL=b8UhD_={W4IY1{b{)U)*gc45xtL%IYLY&hF;d`@GzI&7H&D# zh;z_BX$#hqh@q?AY3sJTod2%*Yd)_>YM0#q&ixGuh+PQsneK)F00004%P)i2vikyMR~)n*keF9=!Gc_n*K2@qsNT?}H4v4a974 z1ArVJApZ0B-@pGKzWw|E^3%Wn&p!V9|K$C@{}12&`+x7vzyG&i{r!LE6~yrB1;;^# zm?0Y=moxPMSn>r>N00000NkvXX Hu0mjf$^yWL literal 0 HcmV?d00001 diff --git a/Resources/disk.png b/Resources/disk.png new file mode 100644 index 0000000000000000000000000000000000000000..99d532e8b1750115952f97302a92d713c0486f97 GIT binary patch literal 620 zcmV-y0+aoTP)~H+MJzd|s z^YP1Hc07G_>)Lgir!F1{Qn4GcTg%?koHo<=1qRN{}nPDolOeI^o4N5I>! zU$N=L=sg~ zDx#dOA*B0N~cqPsWI(^rbbkh)DS0_H_UN0C4l_kvWIm2#Kyy6%BCh z(yIUf003&1xdx>t$*eR2ZvXxT0001Z_R$y3Iju92q*wg58};}zm(OaAH=p|y0002M zh5O5#fxp|~jc?yi@+7$`d4Q6Hl%z;WiWG??NXR{Hx%)pMd~SE0000OQI literal 0 HcmV?d00001 diff --git a/Resources/folder.png b/Resources/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..784e8fa48234f4f64b6922a6758f254ee0ca08ec GIT binary patch literal 537 zcmV+!0_OdRP)x(K@^6+>g^d@v4;gkbWsEoXE%32*i1tcpTNXd5CcIl)ECgqz|2rE6EW}s7R?kl za1q`0GCkMruC6-2LANtwVlsgzsp4?{@7$`KBv!G66>Vie3h?3OmEEkjwdLG0PgLVi z`!N((f$A@n17Ldj#`};0I3@iHJ5M{#IZz|UIYRm4(!uV7eYIYIwQf&}_2J~}>pQ^n z6o8--^T(=hkBNQ_k{-_GWE;FMW7!p}f{NG3nHZ{D5<3d8&tLh%a4AqqnjMkr3m&fkMdECD3N5}Unig5wy40;>lo4j~k+e}v)` zR6)J8Mk*u=SpB`p6o)7j?S0T@9?bz#m@l>gc*zk__|*!FMcHwP!gwLJvS~9c0px8E zW){9LG6$_vYRExG2nvM-vnO0FPiaUc`ezL!t+f14v@B1OZ#1u|>;# zx^;?HE$+RVWM^#`DChrzp?k)5?$7ibV<)C*05Iu$%*l66Eg`qkR?V)ok>3>7AFKJ* zN9owirJI&uy18uXDoD-&In@W5e-9-+1+yklR|TdnQI1abwL`$rs@$|aY6&LoqM;qp z@Bk`_eu!VYaIkt0rM3GIBHa+SpF!Aqg2T-YN;~bW2<}6ZWC=XYT20x55FNnbMlXti zhfs=PT2=g2{dg@~9nkSOk6pC{<5#r${05;YfG*dAy264K1`&-;fC+{$yuib?l!t#a zgQ)8|u>>Rbs;Mi`#Sm)3Jhc5ORQHCUW?vw(J&L*YBI4g=?CukUlOlXuKQPO&{ zCodzworI71oF#C2W0rvJu{~gW8^_t_jU~FOr};ST*24)A8#J`St5~DenJ*IFj?S9C zr`KA~yo>!_{-V>*cY5eqOe`1h&cAEC9`%|L-w;BBE#jGifBi7idE;*Q&21qy{}Mj| X7DpVct6|3w00000NkvXXu0mjfmm4@; literal 0 HcmV?d00001 diff --git a/Resources/folder_page.png b/Resources/folder_page.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef6e11438f3226f88bdc457f55d677d1f2f8409 GIT binary patch literal 688 zcmV;h0#E&kP)CVGc zN?Hxg{(SJp>2>GN9JetoZ(aZH;Ije%0FdZ{S!LRVX%}YG;=d8L^N!mJkCd*SBx($jgG)S}+Le)f;q=GIn30YFNh3ZW|nh}2rL)`=3ju9K*d z<&~Gte>sT=5|RjR+}A(|O&3gS5t&*G5h0Um$c5IgEgxJl_8nzY#B+YU^|Fhvzo-^U z6fNn3(lBMcl9{Silx)4RpURdFw}1BZ?>}8S&h8fk5`hjKW@sP$LJL*otPOMf+jp$? zcC^*PiL>vkTOZln=wuc^%A^$j`TU&aa3ETVYE{(r=bgN835`stIePGw{uwD`7K9Y) z=4)VDHnkl3YL%JeLce6>Uubzae&kQ4($XgYMs^AIOw1Qr{*Wn)N-{9ma}x2(<~`9Go1=*>YR!KZvrBS zCd!u}@M0og%Ev@_;Z?Kk>Wwv=%h_57zmt2<_1msz_niYE=YRNPpd%02TK9oK1z z>ooPno}v^sikz_|1XHFx_L%~;ljh7i(jiay5F0x*+(9aXXFCl?AdQj5XlQ65%sEv+ ztfe?|YcjPN*@yYtE~ImQh{l|#A6Z8iu>pf43Rj52CzU_dMQm|S2xR62YjQOn+z8WH zaK=!}ggOZi{4pB7SQ=xC0n|vXP_Bkx_a)FeNd}w8U97BNbSWxa^QW-li9BZ#M1!_xE*?wzt^GcoeoL*JGLSe_+l-JT2#2tz!z&^ z_s5anq&^nBklIMwRvcoP3%qs%%Ea?1c{_*V*Xj&~uLu-2Dp1fUN4<0zMo$EH>*U83 zm_9;Vt%-bE{_J_!If!1y=c+`QVZ>0_BPy z+%^pgnv`f8H)Z%0&Tp8&u*MCIC4igNW5MeWM_DHpDNi)Zxz|9XboOnitwFq$ETN=X zj-tkCJnz**Y4k#6_Ty^B=hWo~L!47r`HoP=x&3T1)JLr2t2+#fHVpu~8dqVKzuayadC!km-*)Z`)1}(Q7g#Q z=_vBuL>*g6QR^s*+Dt?&;?#Wd`|o4zfg26FeLao;a*?LiJKDxWeRR`NBi8KKU;LYl zZKsB`TTTqpd#~7V$--j&!Cw3+zq?~hyW{L*`f%?wj7$Qpx188;#F+k>XP;cvMCfiq z=-~x1IM`7M+-CY&~gCHy^*({5_wr-`2#(Z!#%24LR;Z z@k5a44J6hD{zX5W=4vT)*eeth zZ^2uQFkbH|?&-As!m516WfqIcFbZ*RmB~jPwTy5rL*m@<4YViK+NH*VpROnw9y0HO z%+4S`KZ$&lffSj56t<)EF$lFMOR=h#4?e9Z*?9GQnRk;nI7!CTx4V>*A%usz>hi_# zb5TiiD3Ut$4f6Zf)jr7VG+BEf3jxF)T^8$|Uyj)gCBchwPON1J{wh}x15iG*$jn;6 zKhqoP@r#^8Q;tnAir_;z!$HXjP_hC_pQ2cpvm@ykU_@J=rXH{QiyWgV&%ZP%5vy1T zjaSs3e3=~;bDm*Cdgj5h>~guk+XF^gkR+NS>Lh9yX<>-YuOeDav~g)MJ4r2JzXBZ* BlqCQF literal 0 HcmV?d00001 diff --git a/Resources/magnifier.png b/Resources/magnifier.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3d97f75e9cde9c143980d89272fe61fc2d64ee GIT binary patch literal 615 zcmV-t0+{`YP)gNuvOO$0ks zMIj=HnnBRUR?tKXG11rxCU4&7dG4NbuvR2_mEvc)n?Cow;~Wve|KR^>9@p5l)|QB+ z$jmun3q#x>;ss-PW_mnr2MHVzLAl1RW&0?VkixF*4t!St0YVb2wnKdU(kmOHiL;aW zK8Xte%(k>MVGG$E4no6dcNnb>BhVHHGD&1pv4YZ68kE2V03t5#PCEFm7=ad$6)+3B zTCmn*?A?=u(o~ET7~-7g0)ZB=6|lumi4}B}MLgy~Ysy6)Q5%Al7|05&1z3Jpu>cF8 z3?VXs*3<}%h3`5Wld)N2zJnk%Agw<~3k)sPTLFd=F5;d8-bj-09SkQuynfflNcZLN z!^_37fdZvzrq=9~mp*($%mcDRKC&qvaaZuX+C=AT6O*~tHl>0mcP<_q>-z%$xO(@! zYluq5a8VQI$S@4?r*v;gPo!QQ%pX3A#>xx4t=w-L6COWx?aj&`f+!YePsFtj=hOQR zP3=E2j@9L7s8;T^&s?u(Hdpu?CubjMrGn{t_37>9$|AD)QE08weJlKn8|OyjL~7oP zC8mPT`jzuH*Dh^I0048RGafUIT)4H~*m8m>egI0iH=(LB%b@@O002ovPDHLkV1lw0 B3EChABo<$D=zfHF*KVpUFHW8LWba^+knj&cWYv@nVI+zW3pXLw?RSJ z2167z>da!s#v01XHzHj}TL=XTwDg-Yq)=9%6k4#*Qucp5Y}tiNhoNs^?UB1B14?$<^7U+abQJ-Iu|x^>Tg-QAs1Y%KV%;@#i& zr@mC#cQv)bBwrj1@@d;7SrsOPhkARFVb5khum3cd^y-i1l0DS}i-pE%%zr`W!WyMk zKj((Rynn^Tb0x;*?Mg$%wnF_g4}3Czvpk-0dH7iRr6KQ^wPI(bJc-h?b-%M!Xvk!#bfxYX9DZODgpz-G7N+g99EBV-nEL#7pK~}#0QOD1ZyV2 z>p%X)p|;V-3R*qK@|xY=s^Mww#MYTwk-2euiAMh_pWpJa_lk8w@cOaf^@#`kKAeR| zl9)-cnCs#%jyX!r0ru57mIWu}+1G4OKit3BU3jD(Y;rulx1OcW4nL*N V?s`O>ElK|#XSdw%-Oy}k{|5N)axwq_ literal 0 HcmV?d00001 diff --git a/Resources/page_white_disk.png b/Resources/page_white_disk.png new file mode 100644 index 0000000000000000000000000000000000000000..1a80ac99f86bc436ab9915d3c5382bd4d10fd9be GIT binary patch literal 715 zcmV;+0yO=JP) zTTc@~6vsh7gfEi#34AHx!3UrC0z`}^hA1W^#XyA+Bee>m#S5k4r46(p#TG>)50V&( z!G~%POAR#;s|8_=Tx{*Ob=z+5yW77rqb@7dc#?ni%;o&%oHIMsRok|oxci9qYUV1r zJek}eD(_s>6$*u4x7z(hXfuV+Orc-M}sq&46@m*s#GckK@bp)Mj12` ziNJ2R?}AhlS{>bx&*xDr7TK3d6h$PHN$@<+0J&Ta^bm)`@e5)Y4#MOLqH|;sR~~$V z{#F33w*xrmTtt^+38yXdm|NOJEEd~U7Cp48#kzp0fCy^Oe4Fg6HMf_?shfV#QsVJA z%Oo5QGZ+J$xaNcFmB3;Q_ZHOHyac2Qz~Iv@G!OV#Ptxf$>qjDy*akG+n1|adpd>4h zpF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMHD!e|WdHyH{7FPXR5(wKlTB+AQ51%wf1?&$b=fWwrc}|o6QNL{f(ZR7T@U_gp%YsSVfz4_t;h&pqed zdmR8AEN(HJ4BpBvN1ZW+L#SjjMp(qLlg8>SK0z^@~B%!#$5L&GkQmK@MDTzcPP*s%+I-L&aKS`3f zWUL^aPIG8Y)kLFFghC;{JGDX*!!RgQ;DUQcvlA|9#EX!y%nxNTO*Pg2CWr!Tk5R zb6>^>F(_g~eudB4M=b3xAfL~30aaqogW4exos=cGe>i*oO+UtKc@r;xzQCUH0grbd zae*nJnIw}*UI{_7umpF%xK_nq+xVpI!=p%e=ikD{!5U9C+n_2)K$Xy7*^!R~!tTt( z^vaZHX>S3G?uS_a`W$CkfG66M2}&mV{r*V6f*)h0Qn7ZlGfqIa@`|8bE?-+fcj1bl zSSHq)$ literal 0 HcmV?d00001 diff --git a/Resources/page_white_star.ico b/Resources/page_white_star.ico new file mode 100644 index 0000000000000000000000000000000000000000..d4e1e07696f644b94890f9d86acf9f12ce6dda6a GIT binary patch literal 1150 zcma)*O=uHA6vrpli?^P7QpnAMpwyP!1dCq$I4EAkf+(oyQN@EdEuQow$su0En-q%R z*-I#bV2cU07$aE3Lt>JR*;w|3U+2>`F9pDQKtipe4p6`LNwxG2Rk|Y_iXo5z3*JBVqU^!NSnO_sQtltqB zz-*S!o}2eLj%l0_hdIL^d+%L7__F%KQ3*LJrbl&2E8kVhMNve%mE})vc&E-*B^`Me z(CnH=N7sCM^FyaR;#*!RMNpPMz3v`9QhtS$MHe^O&$gnsy@>oMF+Bhq1cBlD{XX@2 zy_7f8`!m1W4M{gX?ZiZWsM)fE!GIjcp-!hm&1Q2fUmL`<{!^uWl2V$Sk#D!#H4OY( z+4*O`A28?>RtWXFu503gLl1o4r*gUcl({_1T7mN&;S9A}A#c>&ZnsU`R;xv&QpvJ= zEX?aX*XqKD&2RULUKESPaV*^IhY!}I|8Jh}q;V@^brE_nMuPXOvgZ{rIo8zb;%_8# Bx848% literal 0 HcmV?d00001 diff --git a/Resources/page_white_star.png b/Resources/page_white_star.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1441c9a12062a4bb3d706000d3ca14399aebca GIT binary patch literal 565 zcmV-50?Pe~P)SCZIX8XZzY2l?gCw6LlgWJ5Avz#QX4|&mI8LN)w~J1vgL=KLAhlWz*=#m~gyvxa z&;iC6gb?aZvMdXxX`<0+D1hs_pqJ!wxqlEH;CJ)je~uL(gpi@v>!I0f_Kl=E(E+Tq z26na*9gribxx-Oft(HnstyXUUy!39&E-cI%J5Rsy;(PGZH{g{ty!HVC&yGPT3H8x# zw{^gBPW)O0FMoh{k%l<`1a|To_Wl&u&-GXm8izU|&<&utILc4wc6s@u1bmTz6x{qg zTw@7=FQRcg&r`h+gcR$*Jbv+*DPk7v)B@e0o2 z6IlBXW&8xh@9)YKiV~2>+z&XKd24JT55YWz&JtfvCg4r^~bLP79-yS@n$OW00000NkvXXu0mjf DStt2z literal 0 HcmV?d00001 diff --git a/Resources/page_white_world_bw.png b/Resources/page_white_world_bw.png new file mode 100644 index 0000000000000000000000000000000000000000..2a2e8a9b695d94b3b6b88538d184b33bdba23bad GIT binary patch literal 660 zcmV;F0&D$=P)pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMHD!e|WdHyI5=lfsR5(wCliO-qQ4of0pQC}kLyA{<2w$L=eTm!%p1sggjprkZ zqJjs4pd^q8-YKFfs8NClg5n7^M#(|@cg?igZ4kQPXS3Ne-~2OcwhRDEoKHfhLh}FU zv(U$Vo&<3E{QNwBdwbh%HX9t1_>PN7^ZR;#@hiv?!08HU3lLk5EZ zY&P2-vP=G;P$<4#U0uQHbi!aT@H3y!qt$9*KA&SW8ZltKUW1CbT&_P50%*0`uWGgW zA)C#jQmLR?t>XIn8h*bYUauGBav9_C_@Et<0LW!}z5dK-H2xF^ykm&+xCq<~+ALV@j)ZL8IaNF>58 zsIo?*;WmU*yu7?Hgd}a@o~BPhZnvA0%w{vr&(EP!sbDgh5R1jw0Rc#~4^n_R91e3; zpU=k*>~=fE&2Uv}L#NY$ioCwQa`Jn?nFzQ`rBd9+?&>TS3lCCk9y{xFIt4iaxvx uJf^LPU5cDjDd2=4LdSmLV-ml?8O9 literal 0 HcmV?d00001 diff --git a/Resources/transmit_blue.png b/Resources/transmit_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c8d011cab24ba10a7b80dcaa1d5d99c328e2dc GIT binary patch literal 674 zcmV;T0$u%yP)I#mR_6p95waS%aqkS-3o z6u}PCNhcSDiqKI}S_vxEL?g+I`Lplm{+xR~&rMNq5PIQqE{FSl=ljk*7ht28@q1$7 zMQb;O^Qd7Ar9LP$0HS)ugAe1wGe7iAwV#M&6a+-ZH{vGf&CCA=^Z)<=07*qo IM6N<$g1+V;hX4Qo literal 0 HcmV?d00001 diff --git a/RyzStudio/Data/SQLite/SQLiteDatabase.cs b/RyzStudio/Data/SQLite/SQLiteDatabase.cs new file mode 100644 index 0000000..2ebab58 --- /dev/null +++ b/RyzStudio/Data/SQLite/SQLiteDatabase.cs @@ -0,0 +1,444 @@ +using System; +using System.ComponentModel; +using System.Data; +using System.IO; + +namespace RyzStudio.Data.SQLite +{ + public class SQLiteDatabase + { + #region static methods + + public static string escapeSQL(string query) + { + return query.Replace("'", "''").Trim(); + } + + public static string escapeValue(string text) + { + return text.Replace("\"", "\\\"").Replace("\t", "\\t").Replace("\r", " \\r").Replace("\n", "\\n"); + } + + public static string PrepareQuery(string query, params string[] arguments) + { + string rv = query; + + if (string.IsNullOrEmpty(rv)) + { + return string.Empty; + } + + for (int i = 0; i < arguments.Length; i++) + { + rv = rv.Replace("[^" + (i + 1).ToString() + "]", escapeSQL(arguments[i])); + } + + return rv; + } + + #endregion + + protected SQLiteWrapper.SQLiteBase database = null; + protected string databaseLocation = ":memory:"; + protected string lastError = ""; + + protected string[] requiredTableList = new string[0]; + + protected const string tableNameConfig = "ryz_app_xxxx_config"; + + #region public properties + + [Browsable(false)] + public SQLiteWrapper.SQLiteBase Database + { + get { return database; } + set { database = value; } + } + + [Browsable(false)] + public string DatabaseLocation + { + get { return databaseLocation; } + set { databaseLocation = value; } + } + + [Browsable(false)] + public string LastError + { + get { return lastError; } + } + + [Browsable(false)] + public int LastInsertID + { + get + { + if (database == null) + { + return 0; + } + + DataTable dt = this.DoQuery("SELECT last_insert_rowid() AS ccc;"); + if (dt == null) + { + return 0; + } + + if (dt.Rows.Count <= 0) + { + return 0; + } + + return int.Parse(dt.Rows[0]["ccc"].ToString()); + } + } + + #endregion + + #region public methods + + public bool Create(bool use_memory = true) + { + lastError = string.Empty; + + if (string.IsNullOrEmpty(databaseLocation)) + { + return false; + } + + try + { + if (database != null) + { + database.CloseDatabase(); + } + + database = new SQLiteWrapper.SQLiteBase(((use_memory) ? ":memory:" : databaseLocation)); + } + catch (Exception exc) + { + lastError = exc.Message; + return false; + } + + bool rv = Prepare(); + if (!rv) + { + return false; + } + + return CheckRequiredTables(); + } + + public bool Create(string filename, bool override_file = false) + { + lastError = string.Empty; + databaseLocation = filename; + + if (string.IsNullOrEmpty(databaseLocation)) + { + return false; + } + + if (File.Exists(databaseLocation) && override_file) + { + try + { + File.Delete(databaseLocation); + } + catch (Exception xc) + { + lastError = xc.Message; + return false; + } + } + + try + { + if (database != null) + { + database.CloseDatabase(); + } + + database = new SQLiteWrapper.SQLiteBase(databaseLocation); + } + catch (Exception exc) + { + lastError = exc.Message; + return false; + } + + bool rv = CheckRequiredTables(); + if (!rv) + { + Prepare(); + } + + return CheckRequiredTables(); + } + + public bool Load(string filename) + { + if (!File.Exists(filename)) + { + return false; + } + + lastError = string.Empty; + databaseLocation = filename; + + try + { + if (database != null) + { + database.CloseDatabase(); + } + + database = new SQLiteWrapper.SQLiteBase(databaseLocation); + } + catch (Exception exc) + { + lastError = exc.Message; + return false; + } + + return CheckRequiredTables(); + } + + public void Close() + { + if (database != null) + { + database.CloseDatabase(); + } + } + + + public DataTable DoQuery(string query) + { + lastError = string.Empty; + if (database == null) + { + return null; + } + + try + { + return database.ExecuteQuery(query); + } + catch (Exception exc) + { + lastError = exc.Message; + return null; + } + } + + public DataTable DoQuery(string query, params string[] args) + { + string sql = SQLiteDatabase.PrepareQuery(query, args); + + return DoQuery(sql); + } + + public bool DoNonQuery(string query) + { + lastError = string.Empty; + if (database == null) + { + return false; + } + + try + { + database.ExecuteNonQuery(query); + return true; + } + catch (Exception exc) + { + lastError = exc.Message; + return false; + } + } + + public bool DoNonQuery(string query, params string[] args) + { + string sql = SQLiteDatabase.PrepareQuery(query, args); + + return DoNonQuery(sql); + } + + public string DoQuerySingle(string query) + { + lastError = string.Empty; + if (database == null) + { + return string.Empty; + } + + DataTable tbl = DoQuery(query); + + if (tbl == null) + { + return string.Empty; + } + + if (tbl.Columns.Count <= 0) + { + return string.Empty; + } + + if (tbl.Rows.Count <= 0) + { + return string.Empty; + } + + return tbl.Rows[0][0].ToString(); + } + + public string DoQuerySingle(string query, params string[] args) + { + string sql = SQLiteDatabase.PrepareQuery(query, args); + + return DoQuerySingle(sql); + } + + public int DoQueryCount(string query) + { + if (database == null) + { + return -1; + } + + DataTable tbl = DoQuery(query); + + if (tbl == null) + { + return -1; + } + + if (tbl.Rows.Count <= 0) + { + return 0; + } + + return tbl.Rows.Count; + } + + public int DoQueryCount(string query, params string[] args) + { + string sql = SQLiteDatabase.PrepareQuery(query, args); + + return DoQueryCount(sql); + } + + public bool DoQueryExist(string query) + { + int rv = DoQueryCount(query); + + return (rv > 0); + } + + public bool DoQueryExist(string query, params string[] args) + { + string sql = SQLiteDatabase.PrepareQuery(query, args); + + return DoQueryExist(sql); + } + + public bool HasTable(string table_name) + { + lastError = string.Empty; + if (database == null) + { + return false; + } + + int rv = this.DoQueryCount("SELECT 1 FROM sqlite_master WHERE type='table' AND name='" + escapeSQL(table_name) + "'"); + + return (rv > 0); + } + + public bool CheckRequiredTables() + { + bool rv = true; + foreach (string tbl in requiredTableList) + { + if (string.IsNullOrEmpty(tbl)) + { + continue; + } + + if (!this.HasTable(tbl)) + { + rv = false; + break; + } + } + + return rv; + } + + + protected bool PrepareConfig() + { + if (HasTable(tableNameConfig)) + { + return true; + } + + bool rv = this.DoNonQuery(@" + BEGIN TRANSACTION; + CREATE TABLE " + tableNameConfig + @" (cfg_name TEXT, cfg_value TEXT); + COMMIT; + "); + + return rv; + } + + public bool SetConfig(string name, string value) + { + if (!PrepareConfig()) + { + return false; + } + + string sql = string.Empty; + int rv = this.DoQueryCount("SELECT 1 FROM " + tableNameConfig + " WHERE cfg_name='" + escapeSQL(name) + "'"); + if (rv <= 0) + { + sql = "INSERT INTO " + tableNameConfig + " (cfg_name, cfg_value) VALUES ('[^1]', '[^2]');"; + } + else + { + sql = "UPDATE " + tableNameConfig + " SET cfg_value='[^2]' WHERE cfg_name='[^1]';"; + } + + sql = PrepareQuery(sql, new string[] { name, value }); + + return this.DoNonQuery(sql); + } + + public string GetConfig(string name, string default_value = "") + { + if (!PrepareConfig()) + { + return default_value; + } + + bool rv = this.DoQueryExist("SELECT 1 FROM " + tableNameConfig + " WHERE cfg_name='" + escapeSQL(name) + "'"); + if (!rv) + { + return default_value; + } + + return this.DoQuerySingle("SELECT cfg_value FROM " + tableNameConfig + " WHERE cfg_name='" + escapeSQL(name) + "'"); + } + + #endregion + + protected virtual bool Prepare() + { + return true; + } + } +} \ No newline at end of file diff --git a/RyzStudio/Data/SQLite/SQLiteDatabase2.cs b/RyzStudio/Data/SQLite/SQLiteDatabase2.cs new file mode 100644 index 0000000..b45bc56 --- /dev/null +++ b/RyzStudio/Data/SQLite/SQLiteDatabase2.cs @@ -0,0 +1,447 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Data.SQLite; +using System.IO; +using System.Text; + +namespace RyzStudio.Data.SQLite +{ + public class SQLiteDatabase2 + { + #region static methods + + public static string EscapeSQL(string query) + { + return query.Replace("'", "''").Trim(); + } + + public static string EscapeValue(string text) + { + return text.Replace("\"", "\\\"").Replace("\t", "\\t").Replace("\r", " \\r").Replace("\n", "\\n"); + } + + public static string PrepareQuery(string query, params string[] arguments) + { + string rv = query; + + if (string.IsNullOrEmpty(rv)) + { + return string.Empty; + } + + for (int i = 0; i < arguments.Length; i++) + { + rv = rv.Replace("[^" + (i + 1).ToString() + "]", EscapeSQL(arguments[i])); + } + + return rv; + } + + public static string Encode64(string text) { return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(text)); } + + #endregion + + protected SQLiteConnection dbConnection = null; + protected string dbLocation = string.Empty; + protected string lastError = ""; + + protected string[] requiredTableList = new string[0]; + + protected const string tableNameConfig = "ryz_app_xxxx_config"; + + #region public properties + + [Browsable(false)] + public SQLiteConnection DBConnection + { + get { return dbConnection; } + set { dbConnection = value; } + } + + [Browsable(false)] + public string DBLocation + { + get { return dbLocation; } + set { dbLocation = value; } + } + + public string LastError { get { return lastError; } } + + public int LastInsertID + { + get + { + if (dbConnection == null) + { + return 0; + } + + DataTable dt = this.DoQuery("SELECT last_insert_rowid() AS ccc;"); + if (dt == null) + { + return 0; + } + + if (dt.Rows.Count <= 0) + { + return 0; + } + + return int.Parse(dt.Rows[0]["ccc"].ToString()); + } + } + + #endregion + + #region public methods + + public bool CreateMemory() + { + lastError = string.Empty; + + dbLocation = ":memory:"; + + try + { + dbConnection = new SQLiteConnection(string.Concat("Data Source=\"", dbLocation, "\";Version=3;UTF8Encoding=True;")); + dbConnection.Open(); + } + catch (Exception exc) + { + lastError = exc.Message; + return false; + } + + return true; + } + + public bool CreateSpecial(string filename, bool overwriteFile = false, string password = null) + { + bool rs = this.CreateFile(filename, overwriteFile, password); + if (!rs) + { + return false; + } + + rs = this.Prepare(); + if (!rs) + { + return false; + } + + return this.CheckRequiredTables(); + } + + public bool CreateFile(string filename, bool overwriteFile = false, string password = null) + { + if (File.Exists(filename)) + { + if (overwriteFile) + { + try + { + File.Delete(filename); + } + catch + { + return false; + } + } + else + { + return false; + } + } + + try + { + SQLiteConnection.CreateFile(filename); + } + catch + { + return false; + } + + return this.LoadFile(filename, password); + } + + public bool LoadFile(string filename, string password = null) + { + lastError = string.Empty; + + if (!File.Exists(filename)) + { + return false; + } + + dbLocation = filename; + + try + { + dbConnection = new SQLiteConnection(string.Concat("Data Source=\"", filename, "\";Version=3;UTF8Encoding=True;", (password == null) ? string.Empty : string.Concat("Password=", Encode64(password), ";"))); + dbConnection.Open(); + } + catch (Exception exc) + { + lastError = exc.Message; + return false; + } + + return true; + } + + public void Close() + { + if (dbConnection != null) + { + try + { + dbConnection.Close(); + } + catch + { + // do nothing + } + } + } + + #region query + + public DataTable DoQuery(string query) + { + lastError = string.Empty; + + if (dbConnection == null) + { + return null; + } + + try + { + SQLiteCommand command = new SQLiteCommand(query, dbConnection); + SQLiteDataReader dr = command.ExecuteReader(); + + DataTable dt = new DataTable(); + dt.Load(dr); + + return dt; + } + catch (Exception exc) + { + lastError = exc.Message; + return null; + } + } + + public DataTable DoQuery(string query, params string[] args) + { + string sql = SQLiteDatabase2.PrepareQuery(query, args); + + return DoQuery(sql); + } + + public int DoQueryCount(string query) + { + lastError = string.Empty; + + if (dbConnection == null) + { + return -1; + } + + DataTable dt = this.DoQuery(query); + if (dt == null) + { + return -1; + } + + return dt.Rows.Count; + } + + public int DoQueryCount(string query, params string[] args) + { + string sql = SQLiteDatabase2.PrepareQuery(query, args); + + return this.DoQueryCount(sql); + } + + public bool DoQueryExist(string query) + { + int rv = this.DoQueryCount(query); + + return (rv > 0); + } + + public bool DoQueryExist(string query, params string[] args) + { + string sql = SQLiteDatabase2.PrepareQuery(query, args); + + return this.DoQueryExist(sql); + } + + public string DoQuerySingle(string query) + { + lastError = string.Empty; + + if (dbConnection == null) + { + return string.Empty; + } + + DataTable dt = this.DoQuery(query); + + if (dt == null) + { + return string.Empty; + } + + if (dt.Columns.Count <= 0) + { + return string.Empty; + } + + if (dt.Rows.Count <= 0) + { + return string.Empty; + } + + if (dt.Rows[0][0] is byte[]) + { + return Encoding.UTF8.GetString(dt.Rows[0][0] as byte[]); + } + else + { + return dt.Rows[0][0].ToString(); + } + } + + public string DoQuerySingle(string query, params string[] args) + { + string sql = SQLiteDatabase2.PrepareQuery(query, args); + + return this.DoQuerySingle(sql); + } + + public int DoNonQuery(string query) + { + lastError = string.Empty; + + if (dbConnection == null) + { + return -1; + } + + int rv = 0; + + try + { + SQLiteCommand command = new SQLiteCommand(query, dbConnection); + rv = command.ExecuteNonQuery(); + } + catch (Exception exc) + { + lastError = exc.Message; + rv = -1; + } + + return rv; + } + + public int DoNonQuery(string query, params string[] args) + { + string sql = SQLiteDatabase2.PrepareQuery(query, args); + + return this.DoNonQuery(sql); + } + + public bool HasTable(string tableName) + { + lastError = string.Empty; + + if (dbConnection == null) + { + return false; + } + + int rv = this.DoQueryCount("SELECT 1 FROM sqlite_master WHERE type='table' AND name='" + EscapeSQL(tableName) + "'"); + + return (rv > 0); + } + + public bool CheckRequiredTables() + { + bool rv = true; + foreach (string tbl in requiredTableList) + { + if (string.IsNullOrEmpty(tbl)) + { + continue; + } + + if (!this.HasTable(tbl)) + { + rv = false; + break; + } + } + + return rv; + } + + #endregion + + public bool PrepareConfig() + { + if (this.HasTable(tableNameConfig)) + { + return true; + } + + int rv = this.DoNonQuery("CREATE TABLE " + tableNameConfig + " (cfg_name TEXT, cfg_value TEXT)"); + + return rv > 0; + } + + public bool SetConfig(string name, string value) + { + this.PrepareConfig(); + + string sql = string.Empty; + int rv = this.DoQueryCount("SELECT 1 FROM " + tableNameConfig + " WHERE cfg_name='" + EscapeSQL(name) + "'"); + if (rv <= 0) + { + sql = "INSERT INTO " + tableNameConfig + " (cfg_name, cfg_value) VALUES ('[^1]', '[^2]');"; + } + else + { + sql = "UPDATE " + tableNameConfig + " SET cfg_value='[^2]' WHERE cfg_name='[^1]';"; + } + + sql = PrepareQuery(sql, new string[] { name, value }); + + return this.DoNonQuery(sql) > 0; + } + + public string GetConfig(string name, string defaultValue = "") + { + this.PrepareConfig(); + + bool rv = this.DoQueryExist("SELECT 1 FROM " + tableNameConfig + " WHERE cfg_name='" + EscapeSQL(name) + "';"); + if (!rv) + { + return defaultValue; + } + + return this.DoQuerySingle("SELECT cfg_value FROM " + tableNameConfig + " WHERE cfg_name='" + EscapeSQL(name) + "';"); + } + + #endregion + + protected virtual bool Prepare() + { + return true; + } + } +} diff --git a/RyzStudio/Drawing/Rectangoid.cs b/RyzStudio/Drawing/Rectangoid.cs new file mode 100644 index 0000000..de846cb --- /dev/null +++ b/RyzStudio/Drawing/Rectangoid.cs @@ -0,0 +1,84 @@ +using System.Drawing; +using System.Drawing.Drawing2D; + +namespace RyzStudio.Drawing +{ + public struct Rectangoid + { + int X; + int Y; + int Width; + int Height; + int Radius; + + public Rectangoid(int x, int y, int width, int height, int radius) + { + X = x; + Y = y; + Width = width; + Height = height; + Radius = radius; + } + + public Rectangoid(int x, int y, int width, int height) + { + X = x; + Y = y; + Width = width; + Height = height; + Radius = 0; + } + + public Rectangoid(int width, int height, int radius) + { + X = 0; + Y = 0; + Width = width; + Height = height; + Radius = radius; + } + + public Rectangoid(int width, int height) + { + X = 0; + Y = 0; + Width = width; + Height = height; + Radius = 0; + } + + public Rectangoid(int width) + { + X = 0; + Y = 0; + Width = width; + Height = width; + Radius = 0; + } + + public GraphicsPath ToGraphicsPath() + { + GraphicsPath rv = new GraphicsPath(); + rv.AddLine(X + Radius, Y, X + Width - (Radius * 2), Y); + rv.AddArc(X + Width - (Radius * 2), Y, Radius * 2, Radius * 2, 270, 90); + rv.AddLine(X + Width, Y + Radius, X + Width, Y + Height - (Radius * 2)); + rv.AddArc(X + Width - (Radius * 2), Y + Height - (Radius * 2), Radius * 2, Radius * 2, 0, 90); + rv.AddLine(X + Width - (Radius * 2), Y + Height, X + Radius, Y + Height); + rv.AddArc(X, Y + Height - (Radius * 2), Radius * 2, Radius * 2, 90, 90); + rv.AddLine(X, Y + Height - (Radius * 2), X, Y + Radius); + rv.AddArc(X, Y, Radius * 2, Radius * 2, 180, 90); + rv.CloseFigure(); + + return rv; + } + + public PointF GetOrigin() + { + PointF retval = new PointF(); + retval.X = ((float)Width / 2) + X; + retval.Y = ((float)Height / 2) + Y; + + return retval; + } + } +} \ No newline at end of file diff --git a/RyzStudio/IO/FileType.cs b/RyzStudio/IO/FileType.cs new file mode 100644 index 0000000..3c8b616 --- /dev/null +++ b/RyzStudio/IO/FileType.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RyzStudio.IO +{ + public class FileType + { + protected static readonly byte[] BMP = { 66, 77 }; + protected static readonly byte[] GIF = { 71, 73, 70, 56 }; + protected static readonly byte[] ICO = { 0, 0, 1, 0 }; + protected static readonly byte[] JPG = { 255, 216, 255 }; + protected static readonly byte[] PNG = { 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82 }; + + public static bool IsImage(byte[] byteArray) + { + if (byteArray == null) + { + return false; + } + + if (byteArray.Length <= 0) + { + return false; + } + + if (byteArray.Take(2).SequenceEqual(BMP)) + { + return true; + } + + if (byteArray.Take(4).SequenceEqual(GIF)) + { + return true; + } + + if (byteArray.Take(4).SequenceEqual(ICO)) + { + return true; + } + + if (byteArray.Take(3).SequenceEqual(JPG)) + { + return true; + } + + if (byteArray.Take(16).SequenceEqual(PNG)) + { + return true; + } + + return false; + } + } +} diff --git a/RyzStudio/IO/SessionFileFormatBase.cs b/RyzStudio/IO/SessionFileFormatBase.cs new file mode 100644 index 0000000..777ab4d --- /dev/null +++ b/RyzStudio/IO/SessionFileFormatBase.cs @@ -0,0 +1,285 @@ +using System; +using System.IO; +using System.Text; +using System.Xml; +using System.Windows.Forms; +using ICSharpCode.SharpZipLib.Zip; + +namespace RyzStudio.IO +{ + public abstract class SessionFileFormatBase + { + protected string CONST_KEYPASS = ""; + protected string CONST_PRODUCT = ""; + protected string CONST_STREAM_FILE_NAME = ""; + + protected bool enableErrorReporting = false; + protected string lastUsedFileName = ""; + + #region public properties + + public string passkey + { + get { return CONST_KEYPASS; } + set { CONST_KEYPASS = value; } + } + + /*public string LastFilename + { + get { return lastUsedFileName; } + set { lastUsedFileName = value; } + }*/ + + #endregion + + #region public methods + +/* public bool loadFromRyz() + { + return loadFromRyz(lastUsedFileName); + }*/ + + public bool loadFromRyz(string file_name) + { + lastUsedFileName = file_name; + if (!File.Exists(file_name)) + { + return false; + } + + bool rv = false; + + try + { + ZipInputStream zipIn = new ZipInputStream(File.OpenRead(file_name)); + zipIn.Password = CONST_KEYPASS; + ZipEntry theEntry = null; + + while ((theEntry = zipIn.GetNextEntry()) != null) + { + string streamFileName = Path.GetFileName(theEntry.Name); + if (streamFileName.Equals(CONST_STREAM_FILE_NAME)) + { + MemoryStream oxStream = new MemoryStream(); + StreamWriter streamWriter = new StreamWriter(oxStream); + int size = 2048; + byte[] data = new byte[size]; + while (true) + { + size = zipIn.Read(data, 0, data.Length); + if (size <= 0) break; + streamWriter.BaseStream.Write(data, 0, size); + } + + oxStream.Position = 0; + + StreamReader sr2 = new StreamReader(oxStream, Encoding.UTF8); + XmlDocument xDoc = new XmlDocument(); + xDoc.LoadXml(sr2.ReadToEnd()); + + loadFromXmlDocument(ref xDoc); + } + } + + zipIn.Close(); + + rv = true; + } + catch (Exception exc) + { + if (enableErrorReporting) + { + MessageBox.Show(exc.Message); + } + } + + return rv; + } + + public bool loadFromXml() { return loadFromXml(lastUsedFileName); } + + public bool loadFromXml(string file_name) + { + lastUsedFileName = file_name; + if (!File.Exists(file_name)) + { + return false; + } + + bool rv = false; + + try + { + StreamReader sr2 = new StreamReader(file_name, Encoding.UTF8); + XmlDocument xDoc = new XmlDocument(); + xDoc.LoadXml(sr2.ReadToEnd()); + + loadFromXmlDocument(ref xDoc); + sr2.Close(); + + rv = true; + } + catch (Exception exc) + { + if (enableErrorReporting) + { + MessageBox.Show(exc.Message); + } + } + + return rv; + } + +/* public bool saveToRyz() + { + return saveToRyz(lastUsedFileName); + } +*/ + + public bool saveToRyz(string file_name) + { + bool rv = false; + lastUsedFileName = file_name; + byte[] buffer = new byte[4096]; + + try + { + File.Delete(file_name); + FileInfo fileinfo1 = new FileInfo(file_name); + if (!Directory.Exists(fileinfo1.DirectoryName)) + { + Directory.CreateDirectory(fileinfo1.DirectoryName); + } + } + catch (Exception exc) + { + if (enableErrorReporting) + { + MessageBox.Show(exc.Message); + } + } + + try + { + ZipOutputStream zipOutStream1 = new ZipOutputStream(File.Create(file_name)); + zipOutStream1.SetLevel(9); + zipOutStream1.Password = CONST_KEYPASS; + + MemoryStream oxIndexStream = new MemoryStream(); + XmlTextWriter oxTW = new XmlTextWriter(oxIndexStream, Encoding.UTF8); + saveToXmlTextWriter(ref oxTW); + oxTW.Flush(); + + // write to file + zipOutStream1.PutNextEntry(new ZipEntry(CONST_STREAM_FILE_NAME)); + oxIndexStream.Position = 0; + StreamReader sr2 = new StreamReader(oxIndexStream, Encoding.UTF8); + int sourceBytes; + do + { + sourceBytes = sr2.BaseStream.Read(buffer, 0, buffer.Length); + zipOutStream1.Write(buffer, 0, sourceBytes); + } + while (sourceBytes > 0); + + sr2.Close(); + oxTW.Close(); + zipOutStream1.Finish(); + zipOutStream1.Close(); + + rv = true; + } + catch (Exception exc) + { + if (enableErrorReporting) + { + MessageBox.Show(exc.Message); + } + } + + return rv; + } + + public bool saveToXml() { return saveToXml(lastUsedFileName); } + + public bool saveToXml(string file_name) + { + bool rv = false; + + lastUsedFileName = file_name; + try + { + File.Delete(file_name); + FileInfo fileinfo1 = new FileInfo(file_name); + if (!Directory.Exists(fileinfo1.DirectoryName)) + { + Directory.CreateDirectory(fileinfo1.DirectoryName); + } + } + catch (Exception exc) + { + if (enableErrorReporting) + { + MessageBox.Show(exc.Message); + } + } + + try + { + XmlTextWriter oxTW = new XmlTextWriter(file_name, Encoding.UTF8); + saveToXmlTextWriter(ref oxTW); + oxTW.Flush(); + oxTW.Close(); + + rv = true; + } + catch (Exception exc) + { + if (enableErrorReporting) + { + MessageBox.Show(exc.Message); + } + } + + return rv; + } + + #endregion + + protected virtual void loadFromXmlDocument(ref XmlDocument xml_doc) { } + + protected virtual void saveToXmlTextWriter(ref XmlTextWriter writer) { } + + #region public methods (conversions) + + public int[] convIntArrayString(string s1, char c) + { + string[] sarr = s1.Split(c); + int[] iarr = new int[sarr.Length]; + for (int i = 0; i < sarr.Length; i++) + { + iarr[i] = Int32.Parse(sarr[i]); + } + + return iarr; + } + + public string convStringIntArray(int[] r, char s) + { + string t = null; + for (int i = 0; i < r.Length; i++) + { + if (i != 0) + { + t += s.ToString(); + } + + t += r[i].ToString(); + } + + return t; + } + +#endregion + } +} \ No newline at end of file diff --git a/RyzStudio/IO/SharpZipLib.cs b/RyzStudio/IO/SharpZipLib.cs new file mode 100644 index 0000000..b162124 --- /dev/null +++ b/RyzStudio/IO/SharpZipLib.cs @@ -0,0 +1,76 @@ +using System; +using System.IO; +using ICSharpCode.SharpZipLib.Zip; + +namespace RyzStudio.IO +{ + public class SharpZipLib + { + ///

+ /// Is zip file encrypted + /// + /// Filename + /// Is encrypted + public static bool IsZipEncrypted(string fn) + { + bool ret_val = false; + try + { + ZipInputStream zipIn = new ZipInputStream(System.IO.File.OpenRead(fn)); + ZipEntry theEntry = null; + while ((theEntry = zipIn.GetNextEntry()) != null) + { + if (theEntry.IsCrypted) + { + ret_val = true; + } + + break; + } + + zipIn.Close(); + } + catch + { + // do nothing + } + + return ret_val; + } + + public static void AddFile(ZipOutputStream zipstream, string filename, string prefixpath = null) + { + byte[] buffer = new byte[4096]; + + string f1 = ""; + if (prefixpath != null) + { + f1 = Path.GetDirectoryName(filename).TrimEnd('\\') + "\\"; + f1 = f1.Replace(prefixpath, "").TrimEnd('\\') + "\\"; + f1 = f1 + Path.GetFileName(filename); + f1 = f1.TrimStart('\\'); + } + + ZipEntry entry = new ZipEntry(f1); + entry.DateTime = DateTime.Now; + zipstream.PutNextEntry(entry); + + FileStream fs = File.OpenRead(filename); + int sourceBytes; + do + { + sourceBytes = fs.Read(buffer, 0, buffer.Length); + zipstream.Write(buffer, 0, sourceBytes); + } + while (sourceBytes > 0); + } + + public static void AddFolder(ZipOutputStream zipstream, string folderpath, string prefixpath = null) + { + foreach (string fn in Directory.GetFiles(folderpath, "*.*", System.IO.SearchOption.AllDirectories)) + { + AddFile(zipstream, fn, prefixpath); + } + } + } +} \ No newline at end of file diff --git a/RyzStudio/String.cs b/RyzStudio/String.cs new file mode 100644 index 0000000..c6c4510 --- /dev/null +++ b/RyzStudio/String.cs @@ -0,0 +1,36 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; + +namespace RyzStudio +{ + public class String + { + public static string EncodeTo64(string value) + { + try + { + byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(value); + return System.Convert.ToBase64String(toEncodeAsBytes); + } + catch + { + return string.Empty; + } + } + + public static string DecodeFrom64(string value) + { + try + { + byte[] encodedDataAsBytes = System.Convert.FromBase64String(value); + return System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes); + } + catch + { + return string.Empty; + } + } + } +} \ No newline at end of file diff --git a/RyzStudio/Windows/Forms/BigButton.Designer.cs b/RyzStudio/Windows/Forms/BigButton.Designer.cs new file mode 100644 index 0000000..6943f34 --- /dev/null +++ b/RyzStudio/Windows/Forms/BigButton.Designer.cs @@ -0,0 +1,64 @@ +namespace RyzStudio.Windows.Forms +{ + partial class BigButton + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(177)))), ((int)(((byte)(12))))); + this.button1.Dock = System.Windows.Forms.DockStyle.Fill; + this.button1.FlatAppearance.BorderSize = 0; + this.button1.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(231)))), ((int)(((byte)(108)))), ((int)(((byte)(31))))); + this.button1.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(245)))), ((int)(((byte)(76)))), ((int)(((byte)(0))))); + this.button1.Location = new System.Drawing.Point(6, 6); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(116, 20); + this.button1.TabIndex = 6; + this.button1.UseVisualStyleBackColor = false; + // + // BButton + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.button1); + this.Name = "BButton"; + this.Padding = new System.Windows.Forms.Padding(6); + this.Size = new System.Drawing.Size(128, 32); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + + } +} diff --git a/RyzStudio/Windows/Forms/BigButton.cs b/RyzStudio/Windows/Forms/BigButton.cs new file mode 100644 index 0000000..5dd4ca2 --- /dev/null +++ b/RyzStudio/Windows/Forms/BigButton.cs @@ -0,0 +1,91 @@ +using System; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +namespace RyzStudio.Windows.Forms +{ + public partial class BigButton : BigUserControl + { + protected bool enableClick = false; + + public BigButton() + { + InitializeComponent(); + + this.Button.Click += delegate (object s, EventArgs a) { this.OnClick(a); }; + this.Button.MouseEnter += delegate (object s, EventArgs a) { enableClick = true; }; + this.Button.MouseLeave += delegate (object s, EventArgs a) { enableClick = false; }; + this.Button.KeyDown += delegate (object s, KeyEventArgs a) { enableClick = true; }; + this.Button.KeyUp += delegate (object s, KeyEventArgs a) { enableClick = false; }; + } + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + + int b4 = (borderWidth * 4); + + this.borderColor = Color.FromArgb(222, 222, 222); + this.borderPen = new Pen(this.borderColor); + + this.Button.FlatStyle = FlatStyle.Flat; + this.Button.FlatAppearance.MouseDownBackColor = Color.FromArgb(200, 202, 206); + this.Button.FlatAppearance.MouseOverBackColor = Color.FromArgb(238, 238, 238); + this.Button.Font = new Font("Segoe UI", 8.25F, FontStyle.Regular, GraphicsUnit.Point); + this.Button.BackColor = Color.Transparent; + this.Button.ForeColor = Color.FromArgb(51, 51, 51); + this.Padding = new Padding(b4); + this.MinimumSize = new Size(32, 32); + } + + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + + this.Height = this.button1.Height + (this.button1.Top * 2); + } + + protected override void OnClick(EventArgs e) + { + if (!enableClick) + { + return; + } + + base.OnClick(e); + } + + #region public properties + + [Category("Data")] + public Button Button + { + get + { + return this.button1; + } + + set + { + this.button1 = value; + } + } + + [Browsable(false)] + public string Value + { + get + { + return this.button1.Text; + } + + set + { + this.button1.Text = value; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/RyzStudio/Windows/Forms/BigButton.resx b/RyzStudio/Windows/Forms/BigButton.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/RyzStudio/Windows/Forms/BigButton.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RyzStudio/Windows/Forms/BigUserControl.Designer.cs b/RyzStudio/Windows/Forms/BigUserControl.Designer.cs new file mode 100644 index 0000000..218b152 --- /dev/null +++ b/RyzStudio/Windows/Forms/BigUserControl.Designer.cs @@ -0,0 +1,37 @@ +namespace RyzStudio.Windows.Forms +{ + partial class BigUserControl + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + } + + #endregion + } +} diff --git a/RyzStudio/Windows/Forms/BigUserControl.cs b/RyzStudio/Windows/Forms/BigUserControl.cs new file mode 100644 index 0000000..400e7b9 --- /dev/null +++ b/RyzStudio/Windows/Forms/BigUserControl.cs @@ -0,0 +1,52 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using RyzStudio.Drawing; + +namespace RyzStudio.Windows.Forms +{ + public partial class BigUserControl : UserControl + { + protected int borderWidth = 1; + protected Pen borderPen = null; + protected Color borderColor = Color.FromArgb(112, 112, 112); + protected Brush backgroundBrush = null; + protected Color backgroundColor = Color.FromKnownColor(KnownColor.White); + + public BigUserControl() + { + InitializeComponent(); + + borderPen = new Pen(new SolidBrush(borderColor), borderWidth); + backgroundBrush = new SolidBrush(backgroundColor); + } + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + + int b4 = (borderWidth * 4); + int b6 = (borderWidth * 6); + + this.BackColor = Color.FromKnownColor(KnownColor.WhiteSmoke); + this.Padding = new Padding(b6, b4, b6, b4); + } + + protected override void OnPaintBackground(PaintEventArgs e) + { + base.OnPaintBackground(e); + + Graphics g = e.Graphics; + g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; +//// g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; +//// g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + + int b3 = (borderWidth * 3); + + Rectangoid area = new Rectangoid(borderWidth, borderWidth, (this.ClientRectangle.Width - b3), (this.ClientRectangle.Height - b3), 3); + g.FillPath(backgroundBrush, area.ToGraphicsPath()); + g.DrawPath(borderPen, area.ToGraphicsPath()); + } + } +} \ No newline at end of file diff --git a/RyzStudio/Windows/Forms/MovableTreeView.cs b/RyzStudio/Windows/Forms/MovableTreeView.cs new file mode 100644 index 0000000..40d1c8d --- /dev/null +++ b/RyzStudio/Windows/Forms/MovableTreeView.cs @@ -0,0 +1,726 @@ +using System; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +namespace RyzStudio.Windows.Forms +{ + public class MovableTreeView : System.Windows.Forms.TreeView + { + public delegate void NodeCountUpdated(ulong v); + + public EventHandler OnChanged = null; + public NodeCountUpdated OnNodeCountUpdate = null; + + protected const char pathSeparator = '|'; + protected const int folderImageIndex = 1; + protected const int folderSelectedImageIndex = 2; + + protected TreeNode draggingNode = null; + protected bool allowBeginEdit = false; +//// public int[] folderImageIndex = { 1, 2 }; + protected ulong nodeCount = 0; + protected bool hasChanged = false; + + public MovableTreeView() + { + } + + #region public properties + +/* [Category("Data")] + public char CustomPathSeparator + { + get { return customPathSeparator; } + set { customPathSeparator = value; } + }*/ + + [Browsable(false)] + public TreeNode[] NodeList + { + get + { + TreeNode[] rv = new TreeNode[0]; + if (this.Nodes.Count <= 0) + { + return rv; + } + + foreach (TreeNode tn in this.Nodes) + { + traverseNodeList(ref rv, tn); + } + + return rv; + } + } + + [Browsable(false)] + public string[] NodeNameList + { + get + { + string[] rv = new string[0]; + if (this.Nodes.Count <= 0) + { + return rv; + } + + foreach (TreeNode tn in this.Nodes) + { + traverseNodeNameList(ref rv, tn); + } + + return rv; + } + } + + [Browsable(false)] + public ulong NodeCount + { + get + { + return nodeCount; + } + } + + [Browsable(false)] + public ulong NodeCountCalc + { + get + { + ulong rv = 0; + if (this.Nodes.Count <= 0) + { + return rv; + } + + foreach (TreeNode tn in this.Nodes) + { + traverseNodeCount(ref rv, tn); + } + + return rv; + } + } + + [Browsable(false)] + public bool HasChanged + { + get { return hasChanged; } + set + { + hasChanged = value; + + OnChanged?.Invoke(null, null); + } + } + + #endregion + + #region public methods + + public TreeNode AddFolder() + { + return this.AddFolder("New Folder " + (new Random()).Next(10001, 99999).ToString()); + } + + public TreeNode AddFolder(string name) + { + if (this.SelectedNode == null) + { + return null; + } + + if (this.SelectedNode.Tag != null) + { + return null; + } + + this.HasChanged = true; + + TreeNode tn = this.SelectedNode.Nodes.Add(PathEncode(name), name, folderImageIndex, folderSelectedImageIndex); + this.SelectedNode = tn; + + OnAddFolderNode(tn); + + return tn; + } + + public TreeNode AddBookmarkPage() + { + return this.AddBookmarkPage("New Page " + (new Random()).Next(10001, 99999).ToString()); + } + + public TreeNode AddBookmarkPage(string name, int icon = 3) + { + if (this.SelectedNode == null) + { + return null; + } + + if (this.SelectedNode.Tag != null) + { + return null; + } + + this.HasChanged = true; + + TreeNode tn = this.SelectedNode.Nodes.Add(PathEncode(name), name, icon, icon); + tn.Tag = new object(); + tn.ToolTipText = name; + + nodeCount++; + NodeCountUpdate(nodeCount); + + this.SelectedNode = tn; + + OnAddItemNode(tn); + return tn; + } + + public TreeNode AddBookmarkPageFullPath(string name, int icon = 3) + { + if (this.Nodes.Count <= 0) + { + return null; + } + + this.HasChanged = true; + + TreeNode tn2; + if (!name.Contains(pathSeparator.ToString())) + { + tn2 = this.Nodes[0].Nodes.Add(name, PathDecode(name), icon, icon); + tn2.ToolTipText = name; + nodeCount++; + } + else + { + tn2 = this.Nodes[0]; + string[] folders = name.Split(pathSeparator); + for (int x = 0; x < (folders.Length - 1); x++) + { + string dr = folders[x].Trim(); + if (tn2.Nodes.ContainsKey(dr)) + { + tn2 = tn2.Nodes[dr]; + } + else + { + tn2 = tn2.Nodes.Add(dr, PathDecode(dr), folderImageIndex, folderSelectedImageIndex); + } + } + + string tm = folders[(folders.Length - 1)].Trim(); + tn2 = tn2.Nodes.Add(tm, PathDecode(tm), icon, icon); + tn2.Tag = new object(); + tn2.ToolTipText = tm; + + nodeCount++; + } + + NodeCountUpdate(nodeCount); + + return tn2; + } + + public void EditNode() + { + this.HasChanged = true; + + if (this.SelectedNode == null) + { + return; + } + + if (!this.SelectedNode.IsEditing) + { + allowBeginEdit = true; + this.SelectedNode.BeginEdit(); + } + } + + public void DeleteNode() + { + if (this.SelectedNode == null) + { + return; + } + + if (this.Nodes.Count <= 0) + { + return; + } + + if (this.SelectedNode.Equals(this.Nodes[0])) + { + return; + } + + this.HasChanged = true; + + this.SelectedNode.Remove(); + + if (this.SelectedNode.Tag == null) + { + nodeCount = this.NodeCountCalc; + } + else + { + nodeCount--; + } + + NodeCountUpdate(nodeCount); + } + + public void SortNode() + { + TreeNode tn = this.SelectedNode; + string[] tnv = new string[0]; + TreeNode[] tna = new TreeNode[0]; + + this.HasChanged = true; + + foreach (TreeNode tn2 in tn.Nodes) + { + Array.Resize(ref tna, (tna.Length + 1)); + tna[(tna.Length - 1)] = tn2; + + Array.Resize(ref tnv, (tnv.Length + 1)); + tnv[(tnv.Length - 1)] = tn2.Text; + } + + Array.Sort(tnv, tna); + + tn.Nodes.Clear(); + foreach (TreeNode tn2 in tna) + { + tn.Nodes.Add(tn2); + } + } + + public void MoveNodeUp() + { + TreeNode tn = this.SelectedNode; + if (tn.Parent == null) + { + return; + } + + if (tn.Index == 0) + { + return; + } + + this.HasChanged = true; + + int n = tn.Index - 1; + + TreeNode tn1 = tn.Parent; + tn1.Nodes.Remove(tn); + tn1.Nodes.Insert(n, tn); + + this.SelectedNode = tn; + } + + public void MoveNodeDown() + { + TreeNode tn = this.SelectedNode; + if (tn.Parent == null) + { + return; + } + + TreeNode tn1 = tn.Parent; + + this.HasChanged = true; + + if (tn.Index >= (tn1.Nodes.Count - 1)) + { + return; + } + + int n = tn.Index + 1; + + tn1.Nodes.Remove(tn); + tn1.Nodes.Insert(n, tn); + + this.SelectedNode = tn; + } + + public string GetNodeFullPath(TreeNode node) + { + string rv = PathEncode(node.Text); + + TreeNode tn = node; + while (true) + { + tn = tn.Parent; + + if (tn == null) + { + break; + } + + if (tn.Level == 0) + { + break; + } + + rv = PathEncode(tn.Text) + pathSeparator.ToString() + rv; + } + + return rv; + } + + public bool FindTextNode(TreeNode node, string term) + { + if (node == null) + { + return false; + } + + if (this.Nodes.Count <= 0) + { + return false; + } + + bool rt = false; + bool inclusive = false; + TreeNode tn = node; + while (true) + { + if (tn == null) + { + break; + } + + if (inclusive) + { + if (tn.Text.ToLower().Contains(term.ToLower())) + { + this.SelectedNode = tn; + this.SelectedNode.EnsureVisible(); + rt = true; + break; + } + } + + if (tn.Nodes.Count > 0) + { + tn = tn.Nodes[0]; + inclusive = true; + } + else + { + if (tn.NextNode != null) + { + tn = tn.NextNode; + inclusive = true; + } + else + { + while (true) + { + tn = tn.Parent; + if (tn == null) + { + break; + } + + if (tn.NextNode != null) + { + tn = tn.NextNode; + break; + } + } + + inclusive = true; + } + } + } + + return rt; + } + + public void Clear() + { + nodeCount = 0; + NodeCountUpdate(nodeCount); + this.Nodes.Clear(); + + this.HasChanged = true; + } + + #endregion + + #region integrated behaviour + + protected override void OnItemDrag(ItemDragEventArgs e) + { + base.OnItemDrag(e); + + draggingNode = (TreeNode)e.Item; + DoDragDrop(e.Item, DragDropEffects.Move); + } + + protected override void OnDragDrop(DragEventArgs e) + { + base.OnDragDrop(e); + + if (draggingNode.Level <= 0) + { + return; + } + + TreeNode en = this.GetNodeAt(this.PointToClient(new Point(e.X, e.Y))); + if (en == null) + { + return; + } + + if (IsNodeChild(draggingNode, en)) + { + return; + } + + TreeNode dn = draggingNode; + if (en.Tag == null) + { + dn.Parent.Nodes.Remove(dn); + en.Nodes.Insert(0, dn); + } + else + { + en.Parent.Nodes.Remove(dn); + en.Parent.Nodes.Insert(en.Index + 1, dn); + } + + this.HasChanged = true; + } + + protected override void OnDragEnter(DragEventArgs e) + { + base.OnDragEnter(e); + + e.Effect = DragDropEffects.Move; + } + + protected override void OnMouseDown(MouseEventArgs e) + { + base.OnMouseDown(e); + + this.SelectedNode = this.GetNodeAt(e.Location); + } + + protected override void OnDragOver(DragEventArgs e) + { + base.OnDragOver(e); + + this.SelectedNode = this.GetNodeAt(this.PointToClient(new Point(e.X, e.Y))); + } + + protected override void OnBeforeLabelEdit(NodeLabelEditEventArgs e) + { + if (!allowBeginEdit) + { + e.CancelEdit = true; + return; + } + + this.HasChanged = true; + + base.OnBeforeLabelEdit(e); + + if (e.Node == null) + { + e.CancelEdit = true; + } + else + { + if (e.Node.Tag == null) + { + // do it + } + else + { + e.CancelEdit = true; + } + } + } + + protected override void OnAfterLabelEdit(NodeLabelEditEventArgs e) + { + base.OnAfterLabelEdit(e); + + if (e.Node.Tag == null) + { + if (e.Label == null) + { + e.CancelEdit = true; + } + else + { + if (e.Label.Trim().Length <= 0) + { + e.CancelEdit = true; + } + } + } + else + { + e.CancelEdit = true; + } + + allowBeginEdit = false; + } + + protected override void OnPreviewKeyDown(PreviewKeyDownEventArgs e) + { + TreeNode tn = this.SelectedNode; + if (tn == null) + { + return; + } + + switch (e.KeyCode) + { + case Keys.Insert: + if (e.Modifiers == Keys.Shift) + { + AddFolder(); + } + else + { + AddBookmarkPage(); + } + + break; + case Keys.Delete: + if (!tn.IsEditing) + { + this.DeleteNode(); + } + + break; + case Keys.F2: + if (tn.Tag == null) + { + this.EditNode(); + } + + break; + case Keys.Up: + if (e.Modifiers == Keys.Control) + { + this.MoveNodeUp(); + } + + break; + case Keys.Down: + if (e.Modifiers == Keys.Control) + { + this.MoveNodeDown(); + } + + break; + default: break; + } + + base.OnPreviewKeyDown(e); + } + + protected virtual void NodeCountUpdate(ulong v) + { + this.OnNodeCountUpdate?.Invoke(v); + } + + #endregion + + #region internals + + protected bool IsNodeChild(TreeNode drag_node, TreeNode drop_node) + { + TreeNode tn = drop_node; + while (true) + { + if (tn.Parent == null) + { + break; + } + + if (tn.Equals(drag_node)) + { + return true; + } + + tn = tn.Parent; + } + + return false; + } + + protected void traverseNodeList(ref TreeNode[] results, TreeNode node) + { + foreach (TreeNode tn in node.Nodes) + { + if (tn.Tag == null) + { + traverseNodeList(ref results, tn); + } + else + { + Array.Resize(ref results, (results.Length + 1)); + results[(results.Length - 1)] = tn; + } + } + } + + protected void traverseNodeNameList(ref string[] results, TreeNode node) + { + foreach (TreeNode tn in node.Nodes) + { + if (tn.Tag == null) + { + traverseNodeNameList(ref results, tn); + } + else + { + Array.Resize(ref results, (results.Length + 1)); + results[(results.Length - 1)] = this.GetNodeFullPath(tn); + } + } + } + + protected void traverseNodeCount(ref ulong results, TreeNode node) + { + foreach (TreeNode tn in node.Nodes) + { + if (tn.Tag == null) + { + traverseNodeCount(ref results, tn); + } + else + { + results++; + } + } + } + + #endregion + + #region public methods + + protected virtual void OnAddFolderNode(TreeNode node) { } + + protected virtual void OnAddItemNode(TreeNode node) { } + + #endregion + + ////protected string PathEncode(string text) { return RyzStudio.String.EncodeTo64(text); } + //protected string PathDecode(string text) { return RyzStudio.String.DecodeFrom64(text); } + protected string PathEncode(string text) { return System.Web.HttpUtility.UrlEncodeUnicode(text); } + protected string PathDecode(string text) { return System.Web.HttpUtility.UrlDecode(text); } + } +} \ No newline at end of file diff --git a/SessionFileFormat.cs b/SessionFileFormat.cs new file mode 100644 index 0000000..39f92f8 --- /dev/null +++ b/SessionFileFormat.cs @@ -0,0 +1,93 @@ +using System.Xml; +using System.Windows.Forms; + +namespace bzit.bomg +{ + public class SessionFileFormat : RyzStudio.IO.SessionFileFormatBase + { + private MainForm parentForm = null; + + public SessionFileFormat(MainForm parent_form) + { + base.CONST_PRODUCT = "bomg"; + base.CONST_STREAM_FILE_NAME = "bookmarks.xml"; + base.CONST_KEYPASS = ""; + base.enableErrorReporting = true; + + parentForm = parent_form; + } + + protected override void loadFromXmlDocument(ref XmlDocument xml_doc) + { + XmlNodeList xnl = xml_doc.SelectNodes("bomg/b/g"); + if (xnl.Count <= 0) + { + MessageBox.Show("No bookmarks found.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + + parentForm.treeView1.Clear(); + TreeNode tn = parentForm.treeView1.Nodes.Add("", xnl.Item(0).Attributes["name"].InnerText, 0, 0); + foreach (XmlNode xn in xnl.Item(0)) + { + BookmarkItem bi = new BookmarkItem(); + + foreach (XmlNode xn2 in xn.ChildNodes) + { + switch (xn2.LocalName) + { + case "name": + bi.Fullpath = xn2.InnerText?.Trim(); + break; + case "address": + bi.Address = xn2.InnerText?.Trim(); + break; + case "description": + bi.Description = xn2.InnerText?.Trim(); + break; + case "created": + bi.Created = xn2.InnerText?.Trim(); + break; + default: break; + } + } + + parentForm.treeView1.AddBookmarkItem(bi.Fullpath, bi); + } + + tn.Expand(); + } + + protected override void saveToXmlTextWriter(ref XmlTextWriter writer) + { + if (parentForm.treeView1.Nodes.Count <= 0) + { + return; + } + + writer.Formatting = Formatting.Indented; + writer.WriteStartDocument(); + writer.WriteStartElement(CONST_PRODUCT); + writer.WriteStartElement("b"); + writer.WriteStartElement("g"); + writer.WriteAttributeString("name", parentForm.treeView1.Nodes[0].Text); + + foreach (TreeNode tn in parentForm.treeView1.NodeList) + { + BookmarkItem bi = (BookmarkItem)tn.Tag; + + writer.WriteStartElement("m"); + writer.WriteElementString("name", parentForm.treeView1.GetNodeFullPath(tn)); + writer.WriteElementString("address", bi.Address); + writer.WriteElementString("description", bi.Description); + writer.WriteElementString("created", bi.Created.ToString()); + writer.WriteEndElement(); + } + + writer.WriteEndElement(); + writer.WriteEndElement(); + writer.WriteEndElement(); + writer.WriteEndDocument(); + } + } +} \ No newline at end of file diff --git a/UpdateIconForm.Designer.cs b/UpdateIconForm.Designer.cs new file mode 100644 index 0000000..ba005c6 --- /dev/null +++ b/UpdateIconForm.Designer.cs @@ -0,0 +1,144 @@ +namespace bzit.bomg +{ + partial class UpdateIconForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UpdateIconForm)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.oToolTip = new System.Windows.Forms.ToolTip(this.components); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.btnRun = new RyzStudio.Windows.Forms.BigButton(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 12); + this.label1.Margin = new System.Windows.Forms.Padding(3); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(45, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Entries:"; + // + // label2 + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label2.Location = new System.Drawing.Point(15, 59); + this.label2.Margin = new System.Windows.Forms.Padding(3); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(277, 13); + this.label2.TabIndex = 4; + this.label2.Text = "0/0"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // oToolTip + // + this.oToolTip.Active = false; + this.oToolTip.BackColor = System.Drawing.Color.IndianRed; + // + // pictureBox1 + // + this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.pictureBox1.BackColor = System.Drawing.Color.Transparent; + this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.pictureBox1.ErrorImage = null; + this.pictureBox1.InitialImage = null; + this.pictureBox1.Location = new System.Drawing.Point(12, 77); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(32, 32); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.pictureBox1.TabIndex = 60; + this.pictureBox1.TabStop = false; + // + // progressBar1 + // + this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.progressBar1.BackColor = System.Drawing.Color.White; + this.progressBar1.Location = new System.Drawing.Point(12, 31); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(280, 22); + this.progressBar1.Step = 1; + this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous; + this.progressBar1.TabIndex = 61; + // + // btnRun + // + this.btnRun.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnRun.BackColor = System.Drawing.Color.WhiteSmoke; + this.btnRun.Location = new System.Drawing.Point(196, 77); + this.btnRun.MaximumSize = new System.Drawing.Size(120, 32); + this.btnRun.MinimumSize = new System.Drawing.Size(32, 32); + this.btnRun.Name = "btnRun"; + this.btnRun.Padding = new System.Windows.Forms.Padding(4); + this.btnRun.Size = new System.Drawing.Size(96, 32); + this.btnRun.TabIndex = 3; + this.btnRun.Value = "&Run"; + this.btnRun.Click += new System.EventHandler(this.btnRun_Click); + // + // UpdateIconForm + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(304, 121); + this.Controls.Add(this.progressBar1); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.label1); + this.Controls.Add(this.btnRun); + this.Controls.Add(this.label2); + this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "UpdateIconForm"; + this.ShowInTaskbar = false; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Update Icons"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ToolTip oToolTip; + private RyzStudio.Windows.Forms.BigButton btnRun; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.ProgressBar progressBar1; + } +} \ No newline at end of file diff --git a/UpdateIconForm.cs b/UpdateIconForm.cs new file mode 100644 index 0000000..e8dbec9 --- /dev/null +++ b/UpdateIconForm.cs @@ -0,0 +1,121 @@ +using System; +using System.ComponentModel; +using System.Windows.Forms; + +namespace bzit.bomg +{ + public partial class UpdateIconForm : Form + { + private MainForm parentForm = null; + private BackgroundWorker mainThread = null; + + public UpdateIconForm(MainForm parent) + { + InitializeComponent(); + + parentForm = parent; + + this.StartPosition = FormStartPosition.WindowsDefaultLocation; + + mainThread = new BackgroundWorker(); + mainThread.WorkerReportsProgress = mainThread.WorkerSupportsCancellation = true; + mainThread.DoWork += mainThread_DoWork; + mainThread.RunWorkerCompleted += mainThread_OnCompleted; + } + + protected override void OnShown(EventArgs e) + { + base.OnShown(e); + + int nodeCount = (int)parentForm.treeView1.NodeCountCalc; + progressBar1.Minimum = 0; + progressBar1.Value = 0; + progressBar1.Maximum = nodeCount; + + label2.Text = string.Concat("0", "/", nodeCount.ToString()); + } + + protected override void OnClosing(CancelEventArgs e) + { + base.OnClosing(e); + + if (mainThread.IsBusy) + { + e.Cancel = true; + } + } + + private void btnRun_Click(object sender, EventArgs e) + { + if (mainThread.IsBusy) + { + return; + } + + btnRun.Enabled = false; + pictureBox1.Image = Properties.Resources.aniZomq2x32; + mainThread.RunWorkerAsync(); + } + + private void mainThread_DoWork(object sender, DoWorkEventArgs e) + { + TreeNode[] nodeList = parentForm.treeView1.NodeList; + for (int i=0; i< nodeList.Length; i++) + { + if (progressBar1.InvokeRequired) + { + progressBar1.Invoke(new Action(() => progressBar1.Value = (i + 1) )); + } + else + { + progressBar1.Value = (i + 1); + } + + if (label2.InvokeRequired) + { + label2.Invoke(new Action(() => label2.Text = string.Concat((i + 1).ToString(), "/", progressBar1.Maximum.ToString()))); + } + else + { + label2.Text = string.Concat((i + 1).ToString(), "/", progressBar1.Maximum.ToString()); + } + + TreeNode node = nodeList[i]; + if (node == null) + { + continue; + } + + if (node.Tag == null) + { + continue; + } + + if (!(node.Tag is BookmarkItem)) + { + continue; + } + + BookmarkItem bookmarkItem = (BookmarkItem)node.Tag; + if (bookmarkItem == null) + { + continue; + } + + bookmarkItem.GetFaviconAddress(); + if (bookmarkItem.IconData == null) + { + continue; + } + + parentForm.treeView1.AddIcon(bookmarkItem); + } + } + + private void mainThread_OnCompleted(object sender, RunWorkerCompletedEventArgs e) + { + pictureBox1.Image = null; + btnRun.Enabled = true; + } + } +} \ No newline at end of file diff --git a/UpdateIconForm.resx b/UpdateIconForm.resx new file mode 100644 index 0000000..a6f44d9 --- /dev/null +++ b/UpdateIconForm.resx @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApisVGJ4jEviWGxMQjhMNNAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+Syistj8mlK43I/o7N6/9utuL/P43I/yOEw6wigsIxAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAANZnNFjOXzIUxlMvvgcPl/8z0//+77vr/h9Hk/4nO8P9eo9f/JIXD8yKD + wo0ggcEbAAAAAAAAAAA8odAGOp/PZTicztt8v+D/x+78/8vy/v9k3dD/MtGn/yGpe/80r5D/iMvo/4HA + 6/9SltD/IoPC4CGBwW0ff8EKP6TSu3a83P++5fb/2/b//53o6/8206v/NtKr/1TY0f82t7v/I6mE/yGp + e/9Mtqj/hcXr/3Oy5P9Jj8r/IYLCwUGn0/nn+/7/0PP5/0XXt/841K3/T9nC/43i8v+V4f7/R8Xr/z67 + 4/8vrrD/I6uD/yOsgP9mvsH/gsPs/yOEw/hDqdT3p+3i/0DWsv9I2Ln/i+Tk/7Lq//+s5///e9n+/0fH + 7/9Cw+r/Qr3o/zyy3P8sraj/KLCH/4TTuv8lhsT+RqzV+5Hn1P9/5dj/yPH9/8jv//+56///kdv7/1XA + 8f9Hwfn/Orzw/0bE7P9EvOn/QrTm/zis1P+H0sz/J4nF/0iv1vjb9vj/2fP//9Xz//+86///iNX3/2jJ + 9f9Ls+n/jNr7/4vc//9Hw/n/N7Xs/0e+6P9Ht+f/j9Px/yqMx/pKsdfw4vj9/9Tz//+v5Pr/hc/x/37Q + 9f930PX/S7Dk/6/k+v+16f//muH//3fW/v8/vPX/PLTp/4/V8f8sjsjwTLPY++H4/v/N6/n/kdLt/4PM + 6/9uvuX/VbDb/zqTyP/O7Pr/2fX//7jq//+U3/7/dtX//6Tk//+D3Pv/LpHJ+0622Z9MtNn+pNnt/9Lr + 9f+93u3/lMne/4jC2/9vt9b/abne/4/X9f9+z/X/nNv4/6nj+v+Dyuz/UKXV/zGUy6YAAAAATrbZRk20 + 2cJ9xeD/0e73//b////w/v//y+37/0+s2v+K1/f/qeH5/5TW8v9hsdv/OJzOyDWZzU0AAAAAAAAAAAAA + AABOttoFTbXZZUuz2NuRz+X/5vj8/+P2/v+u3fL/seT3/3G/4f8+o9HgPKHQbDqfzwkAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABNtdkWTLPYhEqx1++b1er/h8zn/0Sr1fNDqdSMQabTGgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMs9grSrHYr0mv17xHrdYxAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA/D+sQfAPrEHAA6xBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBgAGsQcAD + rEHwD6xB/D+sQQ== + + + \ No newline at end of file diff --git a/bomg-2.ico b/bomg-2.ico new file mode 100644 index 0000000000000000000000000000000000000000..91a99b0ed886eba1a929cf6948587405c47b656c GIT binary patch literal 17542 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 e*6poot<@k4$`QS=OW0dhh94>;D1O|LNrb literal 0 HcmV?d00001 diff --git a/bomg.csproj b/bomg.csproj new file mode 100644 index 0000000..f2fee09 --- /dev/null +++ b/bomg.csproj @@ -0,0 +1,276 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {594B03D6-3F17-4AE9-911D-C338EBD99FDF} + WinExe + Properties + bzit.bomg + bomg + v4.5.2 + + + 512 + false + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + bomg-4.ico + + + LocalIntranet + + + false + + + + true + + + AnyCPU + bin\Debug\ + false + + + AnyCPU + bin\Release\ + false + + + + packages\HtmlAgilityPack.1.4.9.5\lib\Net40\HtmlAgilityPack.dll + True + + + packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll + True + + + + + + packages\System.Data.SQLite.Core.1.0.105.1\lib\net451\System.Data.SQLite.dll + + + + + + + + + Form + + + OptionsForm.cs + + + + Form + + + UpdateIconForm.cs + + + + + Form + + + BookmarkEditForm.cs + + + Form + + + FindForm.cs + + + Form + + + NewSessionForm.cs + + + Form + + + PasswordForm.cs + + + + + + Form + + + MainForm.cs + + + + + + + + UserControl + + + BigButton.cs + + + UserControl + + + BigUserControl.cs + + + Component + + + Component + + + BookmarkTreeView.cs + + + OptionsForm.cs + + + UpdateIconForm.cs + + + BookmarkEditForm.cs + + + FindForm.cs + + + NewSessionForm.cs + + + PasswordForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + MainForm.cs + + + BigButton.cs + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + + + + + + + + + + + + False + Microsoft .NET Framework 4 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 3.1 + true + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + \ No newline at end of file diff --git a/packages.config b/packages.config new file mode 100644 index 0000000..8c48cbf --- /dev/null +++ b/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file