WIP: rebuild context menu functionality

This commit is contained in:
Ray 2019-04-18 21:04:58 +01:00
parent 050bff5a00
commit 35eb3a92ae
39 changed files with 3377 additions and 1311 deletions

3
.gitignore vendored
View File

@ -1,6 +1,5 @@
/skye.sln
/bomg.csproj.user
/bin
/obj
/packages
/.vs/skye/v14/*.suo
/.vs

View File

@ -28,197 +28,224 @@ namespace bzit.bomg
/// </summary>
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)
this.components = new System.ComponentModel.Container();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.label3 = new System.Windows.Forms.Label();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.button2 = new RyzStudio.Windows.ThemedForms.Button();
this.button1 = new RyzStudio.Windows.ThemedForms.Button();
this.label5 = new System.Windows.Forms.Label();
this.horizontalSeparator1 = new RyzStudio.Windows.Forms.HorizontalSeparator();
this.textBox1 = new RyzStudio.Windows.ThemedForms.TextBox();
this.textBox2 = new RyzStudio.Windows.ThemedForms.TextBox();
this.memoBox1 = new RyzStudio.Windows.ThemedForms.MemoBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 25);
this.label1.Margin = new System.Windows.Forms.Padding(3);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(28, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Title";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(12, 69);
this.label2.Margin = new System.Windows.Forms.Padding(3);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(48, 13);
this.label2.TabIndex = 4;
this.label2.Text = "Address";
//
// toolTip1
//
this.toolTip1.Active = false;
this.toolTip1.BackColor = System.Drawing.Color.IndianRed;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(12, 113);
this.label3.Margin = new System.Windows.Forms.Padding(3);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(66, 13);
this.label3.TabIndex = 55;
this.label3.Text = "Description";
//
// pictureBox2
//
this.pictureBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.pictureBox2.BackColor = System.Drawing.SystemColors.Window;
this.pictureBox2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
this.pictureBox2.ErrorImage = null;
this.pictureBox2.InitialImage = null;
this.pictureBox2.Location = new System.Drawing.Point(368, 15);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(32, 32);
this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
this.pictureBox2.TabIndex = 57;
this.pictureBox2.TabStop = false;
//
// pictureBox1
//
this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
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(287, 237);
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;
//
// button2
//
this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.button2.BackColor = System.Drawing.Color.Transparent;
this.button2.DefaultImage = null;
this.button2.DownImage = null;
this.button2.LabelText = "&Save";
this.button2.Location = new System.Drawing.Point(325, 237);
this.button2.Name = "button2";
this.button2.OverImage = null;
this.button2.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.button2.Size = new System.Drawing.Size(107, 32);
this.button2.TabIndex = 4;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.button1.BackColor = System.Drawing.Color.Transparent;
this.button1.DefaultImage = null;
this.button1.DownImage = null;
this.button1.LabelText = "S&can";
this.button1.Location = new System.Drawing.Point(368, 59);
this.button1.Name = "button1";
this.button1.OverImage = null;
this.button1.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.button1.Size = new System.Drawing.Size(64, 32);
this.button1.TabIndex = 2;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label5
//
this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | 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 = 1;
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)
this.label5.ForeColor = System.Drawing.Color.OrangeRed;
this.label5.Location = new System.Drawing.Point(9, 237);
this.label5.Margin = new System.Windows.Forms.Padding(3);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(272, 32);
this.label5.TabIndex = 64;
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// horizontalSeparator1
//
this.horizontalSeparator1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | 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 = 0;
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)
this.horizontalSeparator1.Location = new System.Drawing.Point(12, 222);
this.horizontalSeparator1.Margin = new System.Windows.Forms.Padding(3, 10, 3, 10);
this.horizontalSeparator1.MaximumSize = new System.Drawing.Size(4920, 2);
this.horizontalSeparator1.Name = "horizontalSeparator1";
this.horizontalSeparator1.Size = new System.Drawing.Size(420, 2);
this.horizontalSeparator1.TabIndex = 65;
//
// textBox1
//
this.textBox1.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 = 3;
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 = 4;
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();
this.textBox1.BackColor = System.Drawing.Color.Transparent;
this.textBox1.Location = new System.Drawing.Point(96, 15);
this.textBox1.Margin = new System.Windows.Forms.Padding(10, 6, 10, 6);
this.textBox1.Name = "textBox1";
this.textBox1.Padding = new System.Windows.Forms.Padding(10, 10, 9, 9);
this.textBox1.Size = new System.Drawing.Size(259, 32);
this.textBox1.TabIndex = 66;
//
// textBox2
//
this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBox2.BackColor = System.Drawing.Color.Transparent;
this.textBox2.Location = new System.Drawing.Point(96, 59);
this.textBox2.Margin = new System.Windows.Forms.Padding(10, 6, 10, 6);
this.textBox2.Name = "textBox2";
this.textBox2.Padding = new System.Windows.Forms.Padding(10, 10, 9, 9);
this.textBox2.Size = new System.Drawing.Size(259, 32);
this.textBox2.TabIndex = 67;
//
// memoBox1
//
this.memoBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.memoBox1.BackColor = System.Drawing.Color.Transparent;
this.memoBox1.Location = new System.Drawing.Point(96, 103);
this.memoBox1.Margin = new System.Windows.Forms.Padding(10, 6, 10, 6);
this.memoBox1.Name = "memoBox1";
this.memoBox1.Padding = new System.Windows.Forms.Padding(10, 10, 3, 9);
this.memoBox1.Size = new System.Drawing.Size(336, 103);
this.memoBox1.TabIndex = 69;
//
// BookmarkEditForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(444, 281);
this.Controls.Add(this.memoBox1);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.horizontalSeparator1);
this.Controls.Add(this.label5);
this.Controls.Add(this.button1);
this.Controls.Add(this.button2);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.pictureBox2);
this.Controls.Add(this.label3);
this.Controls.Add(this.label1);
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.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "BookmarkEditForm";
this.ShowIcon = false;
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.pictureBox2)).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.ToolTip toolTip1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.PictureBox pbxIcon;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.PictureBox pictureBox1;
private RyzStudio.Windows.Forms.BigButton button1;
private RyzStudio.Windows.ThemedForms.Button button2;
private RyzStudio.Windows.ThemedForms.Button button1;
private System.Windows.Forms.Label label5;
private RyzStudio.Windows.Forms.HorizontalSeparator horizontalSeparator1;
private RyzStudio.Windows.ThemedForms.TextBox textBox1;
private RyzStudio.Windows.ThemedForms.TextBox textBox2;
private RyzStudio.Windows.ThemedForms.MemoBox memoBox1;
}
}

View File

@ -1,192 +1,225 @@
using bzit.bomg.Models;
using RyzStudio.Windows.Forms;
using RyzStudio.Windows.ThemedForms;
using System;
using System.ComponentModel;
using System.Windows.Forms;
using Form = System.Windows.Forms.Form;
using Resources = bzit.bomg.Properties.Resources;
namespace bzit.bomg
{
public partial class BookmarkEditForm : Form
{
private TreeNode parentNode = null;
private BookmarkItem bookmarkItem;
private bool isWorking = false;
protected BackgroundWorker threadWorker1 = null;
public BookmarkEditForm(ref TreeNode node)
protected BookmarkItemModel itemModel = null;
protected BookmarkTreeView treeView = null;
//protected TreeNode treeNode = null;
//public BookmarkEditForm(ref TreeNode node) : base()
public BookmarkEditForm(BookmarkTreeView treeview) : base()
{
InitializeComponent();
parentNode = node;
treeView = treeview;
//treeNode = node;
this.StartPosition = FormStartPosition.WindowsDefaultLocation;
if (threadWorker1 == null)
{
threadWorker1 = new BackgroundWorker();
threadWorker1.WorkerReportsProgress = threadWorker1.WorkerSupportsCancellation = true;
threadWorker1.DoWork += threadWorker1_DoWork;
threadWorker1.RunWorkerCompleted += threadWorker1_RunWorkerCompleted;
}
}
protected override void OnLoad(EventArgs e)
protected void threadWorker1_DoWork(object sender, DoWorkEventArgs e)
{
base.OnLoad(e);
if (itemModel == null)
{
itemModel = new BookmarkItemModel();
}
button1.Button.Image = Properties.Resources.magnifier;
itemModel.SiteAddress = textBox2.Text;
bool rv = itemModel.Update();
if (rv)
{
ThreadHelper.SetText(textBox1, itemModel.SiteName);
ThreadHelper.SetText(textBox2, itemModel.SiteAddress);
ThreadHelper.SetText(memoBox1, itemModel.SiteDescription);
ThreadHelper.SetImage(pictureBox2, itemModel.RetrieveFavicon());
}
}
protected void threadWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.IsBusy = false;
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
if (parentNode.Tag != null)
if (treeView.SNode.GetNodeType() == BookmarkTreeView.NodeType.Page)
{
if (parentNode.Tag is BookmarkItem)
BookmarkItemViewModel bookmarkItem = (BookmarkItemViewModel)treeView.SelectedNode.Tag;
if (bookmarkItem != null)
{
bookmarkItem = (BookmarkItem)parentNode.Tag;
tbxName.Text = bookmarkItem.GetName();
tbxAddress.Text = bookmarkItem.SiteAddress;
tbxDescription.Text = bookmarkItem.Description;
if (parentNode.TreeView.ImageList != null)
if (itemModel == null)
{
if (parentNode.ImageIndex >= 0)
{
pbxIcon.Image = parentNode.TreeView.ImageList.Images[parentNode.ImageIndex];
}
else
{
pbxIcon.Image = parentNode.TreeView.ImageList.Images[parentNode.ImageKey];
}
itemModel = new BookmarkItemModel();
}
updateViewModel(bookmarkItem);
}
}
//if (parentNode.Tag != null)
//{
// if (parentNode.Tag is BookmarkItem)
// {
// bookmarkItem = (BookmarkItem)parentNode.Tag;
// tbxName.Text = bookmarkItem.GetName();
// tbxAddress.Text = bookmarkItem.SiteAddress;
// 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)
if (this.IsBusy)
{
e.Cancel = true;
}
}
public bool IsWorking
protected bool IsBusy
{
get { return isWorking; }
get => threadWorker1.IsBusy;
set
{
isWorking = value;
textBox1.Enabled = textBox2.Enabled = memoBox1.Enabled = !value;
tbxName.Enabled = tbxAddress.Enabled = tbxDescription.Enabled = !value;
btnSave.Enabled = !value;
button1.Enabled = !value;
pictureBox1.Image = (value) ? Properties.Resources.aniZomq2x32 : null;
pictureBox1.Image = (value) ? Resources.aniZomq2x32 : null;
}
}
private void textBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
protected void updateViewModel(BookmarkItemViewModel viewModel)
{
if (this.IsWorking)
{
return;
}
itemModel.SiteName = viewModel.SiteName?.Trim();
itemModel.SiteAddress = viewModel.SiteAddress?.Trim();
itemModel.SiteDescription = viewModel.SiteDescription?.Trim();
itemModel.FaviconAddress = viewModel.FaviconAddress?.Trim();
if (e.KeyCode == Keys.Escape)
{
this.Close();
}
textBox1.Text = itemModel.SiteName;
textBox2.Text = itemModel.SiteAddress;
memoBox1.Text = itemModel.SiteDescription;
pictureBox2.Image = treeView.ImageList.Images[treeView.SelectedNode.ImageIndex];
}
private void btnRetrievePage_Click(object sender, EventArgs e)
private void button1_Click(object sender, EventArgs e)
{
if (this.IsWorking)
if (this.IsBusy)
{
return;
}
if (string.IsNullOrWhiteSpace(tbxAddress.Text))
if (string.IsNullOrWhiteSpace(textBox2.Text))
{
return;
}
this.IsWorking = true;
oToolTip.SetToolTip(pictureBox1, "");
this.IsBusy = true;
BookmarkItem bi = new BookmarkItem();
bi.OnRetrieveCompleted += bookmarkItem_OnRetrieveCompleted;
bi.RetrieveAsync(tbxAddress.Text.Trim());
threadWorker1.RunWorkerAsync();
}
private void btnSave_Click(object sender, EventArgs e)
private void button2_Click(object sender, EventArgs e)
{
if (this.IsWorking)
if (this.IsBusy)
{
return;
}
if (bookmarkItem == null)
if (itemModel == null)
{
bookmarkItem = new BookmarkItem();
itemModel = new BookmarkItemModel();
}
bookmarkItem.ChangeName(tbxName.Text.Trim());
bookmarkItem.SiteAddress = tbxAddress.Text.Trim();
bookmarkItem.Description = tbxDescription.Text.Trim();
itemModel.SiteName = textBox1.Text?.Trim();
itemModel.SiteAddress = textBox2.Text?.Trim();
itemModel.SiteDescription = memoBox1.Text?.Trim();
parentNode.Text = tbxName.Text.Trim();
//// parentNode.ImageIndex = parentNode.SelectedImageIndex = 3;
parentNode.ToolTipText = string.Concat(bookmarkItem.SiteAddress, Environment.NewLine, bookmarkItem.Description).Trim();
parentNode.Tag = bookmarkItem;
BookmarkTreeView bookmarkTreeView = (BookmarkTreeView)parentNode.TreeView;
if (bookmarkTreeView != null)
{
//##parentNode.ImageIndex = parentNode.SelectedImageIndex = bookmarkTreeView.AddToIconList(bookmarkItem);
}
treeView?.AddOrUpdateItem_OnSelectedNode(itemModel.ToViewModel());
this.Close();
}
protected void bookmarkItem_OnRetrieveCompleted(BookmarkItem sender, bool hasError, string message)
{
if (string.IsNullOrEmpty(sender.SiteName))
{
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.SiteName = sender.SiteName;
tbxName.Text = bookmarkItem.SiteName;
// don't replace with blank
if (!string.IsNullOrEmpty(sender.Description))
{
bookmarkItem.Description = sender.Description;
}
}
}
else
{
bookmarkItem.SiteName = sender.SiteName;
tbxName.Text = bookmarkItem.SiteName;
// private void btnSave_Click(object sender, EventArgs e)
// {
// if (this.IsBusy)
// {
// return;
// }
// don't replace with blank
if (!string.IsNullOrEmpty(sender.Description))
{
bookmarkItem.Description = sender.Description;
}
}
// if (itemModel == null)
// {
// itemModel = new BookmarkItemModel();
// }
// don't replace with blank
if (sender.IconData != null)
{
bookmarkItem.IconData = sender.IconData;
}
// itemModel.SiteName = textBox1.Text?.Trim();
// itemModel.SiteAddress = textBox2.Text?.Trim();
// itemModel.SiteDescription = memoBox1.Text?.Trim();
tbxDescription.Text = bookmarkItem.Description;
pbxIcon.Image = (bookmarkItem.Icon == null) ? parentNode.TreeView.ImageList.Images[3] : bookmarkItem.Icon;
// treeView?.AddOrUpdateItem_OnSelectedNode(itemModel.ToViewModel());
//// if (bookmarkItem == null)
//// {
//// bookmarkItem = new BookmarkItem();
//// }
//// bookmarkItem.ChangeName(textBox1.Text.Trim());
//// bookmarkItem.SiteAddress = textBox2.Text.Trim();
//// bookmarkItem.Description = memoBox1.Text.Trim();
//// parentNode.Text = textBox1.Text.Trim();
//////// parentNode.ImageIndex = parentNode.SelectedImageIndex = 3;
//// parentNode.ToolTipText = string.Concat(bookmarkItem.SiteAddress, 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();
// }
if (hasError)
{
oToolTip.SetToolTip(pictureBox1, message);
}
this.IsWorking = false;
}
}
}

View File

@ -117,32 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="oToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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==
</value>
</data>
</root>

View File

@ -20,17 +20,17 @@ namespace bzit.bomg
public byte[] IconData { get; set; } = null;
public string SiteName { get; set; } = null;
public string SiteAddress { get; set; }
public string SiteAddress { get; set; }
public string Description { get; set; }
public string IconAddress { get; protected set; }
public string IconAddress { get; set; }
public string Fullpath { get; set; }
public string Created { get; set; }
public string Created { get; set; }
protected const char pathSeparator = '|';
//protected TreeNode treeNode = null;
protected BackgroundWorker mainThread = null;
protected bool hasRetrieveError = false;
protected string retrieveErrorMessage = null;
@ -46,13 +46,13 @@ namespace bzit.bomg
rv += "Address=" + this.SiteAddress + Environment.NewLine;
rv += "Description=" + this.Description + Environment.NewLine;
rv += "Created=" + this.Created?.Trim();
return rv;
}
#region public properties
//{
// get
// {
@ -64,7 +64,7 @@ namespace bzit.bomg
// this.treeNode = value;
// }
//}
public Bitmap Icon
{
get
@ -87,7 +87,7 @@ namespace bzit.bomg
}
#endregion
#region public methods
@ -107,7 +107,7 @@ namespace bzit.bomg
this.mainThread.RunWorkerCompleted += retrieveWorker_RunWorkerCompleted;
}
}
public string GetName()
{
if (this.Fullpath.Contains(pathSeparator.ToString()))
@ -226,7 +226,7 @@ namespace bzit.bomg
// }
// }
// // load icon image
// // load icon image
// if (!string.IsNullOrEmpty(this.IconAddress))
// {
// try
@ -246,7 +246,7 @@ namespace bzit.bomg
}
public void RetrieveAsync()
{
{
if (this.mainThread.IsBusy)
{
return;
@ -279,7 +279,7 @@ namespace bzit.bomg
this.Description = string.Empty;
this.IconAddress = string.Empty;
WebClient webClient = new WebClient();
WebClient webClient = new WebClient();
webClient.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
string sourceCode = string.Empty;
@ -404,7 +404,7 @@ namespace bzit.bomg
return System.Web.HttpUtility.HtmlDecode(hn.Attributes[attr].Value?.Trim());
}
return defaultValue;
}

View File

@ -9,211 +9,13 @@ namespace bzit.bomg
{
public partial class BookmarkTreeView : RyzStudio.Windows.Forms.MovableTreeView
{
protected IconDatabase iconDatabase = null;
public BookmarkTreeView()
{
InitializeComponent();
if (this.ImageList == null)
{
this.ImageList = new ImageList();
}
this.ImageList.ColorDepth = ColorDepth.Depth16Bit;
this.ImageList.ImageSize = new Size(16, 16);
this.ImageList.TransparentColor = Color.Transparent;
this.ImageList.Images.Clear();
this.ImageList.Images.Add(Properties.Resources.transmit_blue);
this.ImageList.Images.Add(Properties.Resources.folder);
this.ImageList.Images.Add(Properties.Resources.folder_explore);
this.ImageList.Images.Add(Properties.Resources.page_white_world_bw);
}
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ImageList ImageList { get => base.ImageList; set => base.ImageList = value; }
protected override void OnPreviewKeyDown(PreviewKeyDownEventArgs e)
{
base.OnPreviewKeyDown(e);
TreeNode tn = this.SelectedNode;
if (tn == null)
{
return;
}
switch (e.KeyCode)
{
case Keys.Insert:
if (e.Modifiers == Keys.Shift)
{
// do nothing
}
else
{
MessageBox.Show("!");
//AddBookmarkPage();
}
break;
default: break;
}
}
public bool InitialiseIconDatabase(out string message, string filename)
{
message = string.Empty;
if (string.IsNullOrWhiteSpace(filename))
{
return false;
}
if (iconDatabase == null)
{
iconDatabase = new IconDatabase();
}
bool rv = false;
if (File.Exists(filename))
{
rv = iconDatabase.LoadFile(filename);
if (!rv)
{
rv = iconDatabase.Create(filename, true, null, true);
if (!rv)
{
message = iconDatabase.LastError;
return false;
}
}
}
else
{
rv = iconDatabase.Create(filename, true, null, true);
if (!rv)
{
message = iconDatabase.LastError;
return false;
}
}
return true;
}
public void AddItem(BookmarkItemViewModel viewModel)
{
int iconIndex = addIcon(viewModel);
TreeNode tn = new TreeNode(viewModel.SiteName, iconIndex, iconIndex);
tn.Tag = viewModel;
tn.ToolTipText = viewModel.ToString();
TreeNode tn2 = addFolderPath(viewModel.TreeviewPath);
tn2.Nodes.Add(tn);
}
public void AddItem_OnSelectedNode(BookmarkItemViewModel viewModel)
{
if (this.SelectedNode == null)
{
return;
}
if (this.SelectedNode.Tag != null)
{
return;
}
int iconIndex = addIcon(viewModel);
TreeNode tn = new TreeNode(viewModel.SiteName, iconIndex, iconIndex);
tn.Tag = viewModel;
tn.ToolTipText = viewModel.ToString();
int n = this.SelectedNode.Nodes.Add(tn);
this.SelectedNode = this.SelectedNode.Nodes[n];
}
protected int addIcon(BookmarkItemViewModel viewModel) => addIcon(viewModel.ToModel());
protected int addIcon(BookmarkItemModel model)
{
if (this.ImageList.Images.ContainsKey(model.SiteAddress))
{
return this.ImageList.Images.IndexOfKey(model.SiteAddress);
}
if (iconDatabase.HasIcon(model.SiteAddress))
{
Image rs = iconDatabase.GetIcon(model.SiteAddress);
if (rs == null)
{
return (int)IconSet.Default;
}
else
{
this.ImageList.Images.Add(model.SiteAddress, rs);
return this.ImageList.Images.IndexOfKey(model.SiteAddress);
}
}
Bitmap bmp = model.RetrieveFavicon();
if (bmp == null)
{
return (int)IconSet.Default;
}
this.ImageList.Images.Add(model.SiteAddress, bmp);
return this.ImageList.Images.IndexOfKey(model.SiteAddress);
}
protected TreeNode addFolderPath(string path)
{
TreeNode tn = this.Nodes[0];
if (tn == null)
{
return tn;
}
if (string.IsNullOrWhiteSpace(path))
{
return tn;
}
if (string.IsNullOrWhiteSpace(path.Trim('\\')))
{
return tn;
}
string[] folderList = path.Trim('\\').Split('\\');
if (folderList.Length <= 0)
{
return tn;
}
foreach (string item in folderList)
{
if (tn.Nodes.ContainsKey(item))
{
// do nothing
}
else
{
tn.Nodes.Add(item, item, (int)IconSet.Folder1, (int)IconSet.Folder2);
}
tn = tn.Nodes[item];
}
return tn;
}
}
}

403
MainForm.Designer.cs generated
View File

@ -1,3 +1,5 @@
using RyzStudio.Windows.Forms;
namespace bzit.bomg
{
partial class MainForm
@ -30,7 +32,7 @@ namespace bzit.bomg
{
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.pageTreeNodeMenu = 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();
@ -72,7 +74,7 @@ namespace bzit.bomg
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.folderTreeNodeMenu = 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();
@ -90,27 +92,28 @@ namespace bzit.bomg
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.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
this.rootTreeNodeMenu = 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.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.treeMenuItem.SuspendLayout();
this.treeView1 = new RyzStudio.Windows.Forms.BookmarkTreeView();
this.pageTreeNodeMenu.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.statusBarPanel2)).BeginInit();
this.toolStrip1.SuspendLayout();
this.treeMenuFolder.SuspendLayout();
this.folderTreeNodeMenu.SuspendLayout();
this.toolStrip2.SuspendLayout();
this.treeMenuRoot.SuspendLayout();
this.rootTreeNodeMenu.SuspendLayout();
this.SuspendLayout();
//
// treeMenuItem
//
this.treeMenuItem.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
//
// pageTreeNodeMenu
//
this.pageTreeNodeMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem4,
this.toolStripSeparator3,
this.toolStripMenuItem8,
@ -118,56 +121,56 @@ namespace bzit.bomg
this.toolStripSeparator2,
this.listViewMenuItem1,
this.moveFileToToolStripMenuItem});
this.treeMenuItem.Name = "listViewMenu";
this.treeMenuItem.Size = new System.Drawing.Size(139, 126);
//
this.pageTreeNodeMenu.Name = "listViewMenu";
this.pageTreeNodeMenu.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);
//
this.toolStripMenuItem4.Click += new System.EventHandler(this.openContextMenu_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);
//
this.toolStripMenuItem8.Click += new System.EventHandler(this.editContextMenu3_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);
//
this.toolStripMenuItem6.Click += new System.EventHandler(this.deleteContextMenu2_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);
//
this.listViewMenuItem1.Click += new System.EventHandler(this.moveUpContextMenu2_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);
//
this.moveFileToToolStripMenuItem.Click += new System.EventHandler(this.moveDownContextMenu2_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";
@ -178,20 +181,20 @@ namespace bzit.bomg
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");
@ -201,9 +204,9 @@ namespace bzit.bomg
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[] {
@ -220,9 +223,9 @@ namespace bzit.bomg
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,
@ -241,89 +244,89 @@ namespace bzit.bomg
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);
//
this.newFileMenuItem.Click += new System.EventHandler(this.newMenuItem_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);
//
this.openFileMenuItem.Click += new System.EventHandler(this.openMenuItem_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);
//
this.closeFileMenuItem.Click += new System.EventHandler(this.closeMenuItem_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)
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);
//
this.exitFileMenuItem.Click += new System.EventHandler(this.exitMenuItem_Click);
//
// toolStripDropDownButton2
//
//
this.toolStripDropDownButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
this.toolStripDropDownButton2.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.findEditMenuItem});
@ -332,18 +335,18 @@ namespace bzit.bomg
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,
@ -353,25 +356,25 @@ namespace bzit.bomg
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,
@ -382,21 +385,21 @@ namespace bzit.bomg
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.Enabled = false;
this.optionsToolMenuItem.Image = global::bzit.bomg.Properties.Resources.cog;
this.optionsToolMenuItem.Name = "optionsToolMenuItem";
@ -404,9 +407,9 @@ namespace bzit.bomg
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,
@ -417,31 +420,31 @@ namespace bzit.bomg
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});
@ -451,24 +454,24 @@ namespace bzit.bomg
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[] {
//
// folderTreeNodeMenu
//
this.folderTreeNodeMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem15,
this.toolStripMenuItem16,
this.toolStripSeparator5,
@ -480,86 +483,88 @@ namespace bzit.bomg
this.toolStripSeparator11,
this.toolStripMenuItem12,
this.toolStripMenuItem13});
this.treeMenuFolder.Name = "listViewMenu";
this.treeMenuFolder.Size = new System.Drawing.Size(139, 198);
//
this.folderTreeNodeMenu.Name = "listViewMenu";
this.folderTreeNodeMenu.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.addPageContextMenu2_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.addFolderContextMenu2_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);
//
this.toolStripMenuItem14.Click += new System.EventHandler(this.openAllContextMenu_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);
//
this.toolStripMenuItem9.Click += new System.EventHandler(this.editContextMenu2_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);
//
this.toolStripMenuItem11.Click += new System.EventHandler(this.deleteContextMenu_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);
//
this.sortToolStripMenuItem.Click += new System.EventHandler(this.sortContextMenu2_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);
//
this.toolStripMenuItem12.Click += new System.EventHandler(this.moveUpContextMenu_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);
//
this.toolStripMenuItem13.Click += new System.EventHandler(this.moveDownContextMenu_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[] {
@ -567,16 +572,17 @@ namespace bzit.bomg
this.openMenuBarItem,
this.saveMenuBarItem,
this.toolStripSeparator9,
this.toolStripButton1});
this.toolStripButton1,
this.toolStripButton2});
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;
@ -584,10 +590,10 @@ namespace bzit.bomg
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);
//
this.newMenuBarItem.Click += new System.EventHandler(this.newMenuItem_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;
@ -595,10 +601,10 @@ namespace bzit.bomg
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);
//
this.openMenuBarItem.Click += new System.EventHandler(this.openMenuItem_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;
@ -607,62 +613,82 @@ namespace bzit.bomg
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[] {
//
// toolStripButton1
//
this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton1.Name = "toolStripButton1";
this.toolStripButton1.Size = new System.Drawing.Size(23, 22);
this.toolStripButton1.Text = "toolStripButton1";
//
// toolStripButton2
//
this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image")));
this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton2.Name = "toolStripButton2";
this.toolStripButton2.Size = new System.Drawing.Size(23, 22);
this.toolStripButton2.Text = "toolStripButton2";
//
// rootTreeNodeMenu
//
this.rootTreeNodeMenu.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);
//
this.rootTreeNodeMenu.Name = "listViewMenu";
this.rootTreeNodeMenu.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.addPageContextMenu_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.addFolderContextMenu_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);
//
this.toolStripMenuItem20.Click += new System.EventHandler(this.editContextMenu_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);
//
this.toolStripMenuItem22.Click += new System.EventHandler(this.sortContextMenu_Click);
//
// treeView1
//
//
this.treeView1.AllowDrop = true;
this.treeView1.BackColor = System.Drawing.Color.White;
this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill;
@ -680,19 +706,9 @@ namespace bzit.bomg
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);
//
// toolStripButton1
//
this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton1.Name = "toolStripButton1";
this.toolStripButton1.Size = new System.Drawing.Size(23, 22);
this.toolStripButton1.Text = "toolStripButton1";
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click);
//
//
// MainForm
//
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.SystemColors.Control;
this.ClientSize = new System.Drawing.Size(304, 654);
@ -706,15 +722,15 @@ namespace bzit.bomg
this.Name = "MainForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Text = "Bookmark Manager";
this.treeMenuItem.ResumeLayout(false);
this.pageTreeNodeMenu.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.folderTreeNodeMenu.ResumeLayout(false);
this.toolStrip2.ResumeLayout(false);
this.toolStrip2.PerformLayout();
this.treeMenuRoot.ResumeLayout(false);
this.rootTreeNodeMenu.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
@ -725,7 +741,7 @@ namespace bzit.bomg
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.ContextMenuStrip pageTreeNodeMenu;
private System.Windows.Forms.ToolStripMenuItem listViewMenuItem1;
private System.Windows.Forms.ToolStripMenuItem moveFileToToolStripMenuItem;
private System.Windows.Forms.ToolTip oToolTip1;
@ -758,7 +774,7 @@ namespace bzit.bomg
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.ContextMenuStrip folderTreeNodeMenu;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11;
@ -778,7 +794,7 @@ namespace bzit.bomg
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.ContextMenuStrip rootTreeNodeMenu;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem17;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem18;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
@ -791,6 +807,7 @@ namespace bzit.bomg
private System.Windows.Forms.ToolStripMenuItem updateIconsToolMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator14;
private System.Windows.Forms.ToolStripButton toolStripButton1;
private System.Windows.Forms.ToolStripButton toolStripButton2;
}
}

View File

@ -28,13 +28,6 @@ namespace bzit.bomg
{
base.OnLoad(e);
this.IconDatabase = new IconDatabase();
// toolbar
viewHelpHelpMenuItem.Enabled = File.Exists(Path.ChangeExtension(Application.ExecutablePath, ".chm"));
bool rv = false;
string iconDBFilename = Path.ChangeExtension(Application.ExecutablePath, ".db");
@ -42,10 +35,32 @@ namespace bzit.bomg
rv = treeView1.InitialiseIconDatabase(out errorMessage, iconDBFilename);
if (!rv)
{
MessageBox.Show("Can not find icon database. [" + this.IconDatabase.LastError + "]");
MessageBox.Show("Can not find icon database. [" + errorMessage + "]");
this.Close();
}
//this.IconDatabase = new IconDatabase();
// toolbar
viewHelpHelpMenuItem.Enabled = File.Exists(Path.ChangeExtension(Application.ExecutablePath, ".chm"));
//bool rv = false;
//string iconDBFilename = Path.ChangeExtension(Application.ExecutablePath, ".db");
//string errorMessage;
//rv = treeView1.InitialiseIconDatabase(out errorMessage, iconDBFilename);
//if (!rv)
//{
// MessageBox.Show("Can not find icon database. [" + errorMessage + "]");
// this.Close();
//}
sessionFileFormat = new SessionFileFormat(this);
this.ApplicationMode = AppMode.Clear;
@ -117,7 +132,7 @@ namespace bzit.bomg
protected override void OnFormClosing(FormClosingEventArgs e)
{
this.IconDatabase?.Close();
//this.IconDatabase?.Close();
if (this.ApplicationMode == AppMode.Clear)
{
@ -196,7 +211,7 @@ namespace bzit.bomg
}
}
#region public properties
//#region public properties
public AppMode ApplicationMode
{
@ -243,26 +258,23 @@ namespace bzit.bomg
}
}
[DefaultValue(null)]
public IconDatabase IconDatabase { get; set; }
//[DefaultValue(null)]
//public IconDatabase IconDatabase { get; set; }
#endregion
//#endregion
#region Toolbar #1
/**
* File -> New
*/
private void newSessionToolStripMenuItem_Click(object sender, EventArgs e)
private void newMenuItem_Click(object sender, EventArgs e)
{
NewSessionForm oNewSession = new NewSessionForm(this);
oNewSession.ShowDialog();
NewSessionForm newSessionForm = new NewSessionForm(this);
newSessionForm.ShowDialog();
}
/*
* File -> Open
*/
private void toolStripMenuItem2_Click(object sender, EventArgs e)
private void openMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
@ -275,7 +287,7 @@ namespace bzit.bomg
/**
* File -> Close
*/
private void toolStripMenuItem3_Click(object sender, EventArgs e)
private void closeMenuItem_Click(object sender, EventArgs e)
{
if (ApplicationMode == AppMode.Clear)
{
@ -363,7 +375,7 @@ namespace bzit.bomg
/**
* File -> Exit
*/
private void exitToolStripMenuItem1_Click(object sender, EventArgs e) { this.Close(); }
private void exitMenuItem_Click(object sender, EventArgs e) { this.Close(); }
/**
* Find
@ -476,39 +488,39 @@ namespace bzit.bomg
/**
* Node -> Open
*/
private void toolStripMenuItem4_Click(object sender, EventArgs e)
{
openBookmark(treeView1.SelectedNode);
}
//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;
}
//private void toolStripMenuItem8_Click(object sender, EventArgs e)
//{
// if (treeView1.SelectedNode == null)
// {
// return;
// }
treeView1.HasChanged = true;
// treeView1.HasChanged = true;
TreeNode tn = treeView1.SelectedNode;
BookmarkEditForm oBookmarkEdit = new BookmarkEditForm(ref tn);
oBookmarkEdit.ShowDialog();
}
// TreeNode tn = treeView1.SelectedNode;
// //##BookmarkEditForm oBookmarkEdit = new BookmarkEditForm(ref tn);
// //##oBookmarkEdit.ShowDialog();
//}
/**
* Node -> Delete
*/
private void toolStripMenuItem6_Click(object sender, EventArgs e) => treeView1.SNode.Delete();
//private void toolStripMenuItem6_Click(object sender, EventArgs e) => treeView1.SNode.Delete();
//{
// treeView1.DeleteNode();
//}
#endregion
#region TreeView Menu - folder
//#region TreeView Menu - folder
/**
* Add Page
@ -523,49 +535,36 @@ namespace bzit.bomg
/**
* Open All
*/
private void toolStripMenuItem14_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode == null)
{
return;
}
//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;
}
// foreach (TreeNode tn in treeView1.SelectedNode.Nodes)
// {
// if (tn.Tag == null)
// {
// continue;
// }
openBookmark(tn);
}
}
// openBookmark(tn);
// }
//}
/**
* Edit
*/
private void toolStripMenuItem9_Click(object sender, EventArgs e)
{
treeView1.HasChanged = true;
treeView1.EditNode();
}
//private void toolStripMenuItem9_Click(object sender, EventArgs e)
//{
// treeView1.HasChanged = true;
// //##treeView1.EditNode();
//}
/**
* Move Up
*/
private void toolStripMenuItem12_Click(object sender, EventArgs e) => treeView1.SNode.MoveUp();
/**
* Move Down
*/
private void toolStripMenuItem13_Click(object sender, EventArgs e) => treeView1.SNode.MoveDown();
/**
* Sort
*/
private void sortToolStripMenuItem_Click(object sender, EventArgs e) => treeView1.SNode.Sort();
#endregion
//#endregion
protected void OpenBookmarkFile(string filename)
{
@ -636,7 +635,33 @@ namespace bzit.bomg
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Node == null)
if (e.Button != MouseButtons.Right)
{
return;
}
switch (treeView1.SNode.GetNodeType())
{
case RyzStudio.Windows.Forms.BookmarkTreeView.NodeType.Root:
rootTreeNodeMenu.Show(Cursor.Position);
break;
case RyzStudio.Windows.Forms.BookmarkTreeView.NodeType.Folder:
folderTreeNodeMenu.Show(Cursor.Position);
break;
case RyzStudio.Windows.Forms.BookmarkTreeView.NodeType.Page:
pageTreeNodeMenu.Show(Cursor.Position);
break;
default:
break;
}
//BookmarkEditForm editForm = new BookmarkEditForm(treeView1);
//editForm.ShowDialog();
return;
if (e.Node == null)
{
return;
}
@ -665,11 +690,11 @@ namespace bzit.bomg
{
if (e.Node.Equals(e.Node.TreeView.Nodes[0]))
{
treeMenuRoot.Show(Cursor.Position);
rootTreeNodeMenu.Show(Cursor.Position);
}
else
{
treeMenuFolder.Show(Cursor.Position);
folderTreeNodeMenu.Show(Cursor.Position);
}
}
else
@ -680,7 +705,7 @@ namespace bzit.bomg
}
BookmarkItem bi = (BookmarkItem)e.Node.Tag;
treeMenuItem.Show(Cursor.Position);
pageTreeNodeMenu.Show(Cursor.Position);
}
}
}
@ -700,20 +725,20 @@ namespace bzit.bomg
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;
}
//case Keys.F2:
//if (tn.Tag == null)
//{
// return;
//}
if (!(tn.Tag is BookmarkItem))
{
return;
}
//if (!(tn.Tag is BookmarkItem))
//{
// return;
//}
toolStripMenuItem8_Click(sender, null);
//toolStripMenuItem8_Click(sender, null);
break;
//break;
case Keys.F3:
if (tn.Tag == null)
{
@ -755,88 +780,157 @@ namespace bzit.bomg
protected void openBookmark(TreeNode node)
{
if (node == null)
if (treeView1.GetNodeType(node) != RyzStudio.Windows.Forms.BookmarkTreeView.NodeType.Page)
{
return;
}
if (node.Tag == null)
BookmarkItemViewModel viewModel = (BookmarkItemViewModel)node.Tag;
if (viewModel == null)
{
return;
}
if (!(node.Tag is BookmarkItem))
if (string.IsNullOrWhiteSpace(viewModel.SiteAddress))
{
return;
}
BookmarkItem item = (BookmarkItem)node.Tag;
if (item == null)
try
{
return;
System.Diagnostics.Process.Start(viewModel.SiteAddress);
}
catch
{
// do nothing
}
if (string.IsNullOrEmpty(item.SiteAddress))
{
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.SiteAddress);
bookmarkCustom2 = bookmarkCustom2.Replace("%1", item.SiteAddress);
try
{
System.Diagnostics.Process.Start(bookmarkCustom1, bookmarkCustom2);
}
catch
{
// do nothing
}
//if (node == null)
//{
// return;
//}
break;
default:
try
{
System.Diagnostics.Process.Start(item.SiteAddress);
}
catch
{
// do nothing
}
//if (node.Tag == null)
//{
// return;
//}
break;
}
//if (!(node.Tag is BookmarkItem))
//{
// return;
//}
//BookmarkItem item = (BookmarkItem)node.Tag;
//if (item == null)
//{
// return;
//}
//if (string.IsNullOrEmpty(item.SiteAddress))
//{
// 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.SiteAddress);
// bookmarkCustom2 = bookmarkCustom2.Replace("%1", item.SiteAddress);
// try
// {
// System.Diagnostics.Process.Start(bookmarkCustom1, bookmarkCustom2);
// }
// catch
// {
// // do nothing
// }
// break;
// default:
// try
// {
// System.Diagnostics.Process.Start(item.SiteAddress);
// }
// catch
// {
// // do nothing
// }
// break;
//}
}
private void toolStripButton1_Click(object sender, EventArgs e)
#region root context menu
private void addPageContextMenu_Click(object sender, EventArgs e) => (new BookmarkEditForm(treeView1)).ShowDialog();
private void addFolderContextMenu_Click(object sender, EventArgs e) => treeView1.SelectedNode = treeView1.SNode.AddFolder();
private void editContextMenu_Click(object sender, EventArgs e) => treeView1.SNode.Edit();
private void sortContextMenu_Click(object sender, EventArgs e) => treeView1.SNode.Sort();
#endregion
#region folder context menu
private void addPageContextMenu2_Click(object sender, EventArgs e) => (new BookmarkEditForm(treeView1)).ShowDialog();
private void addFolderContextMenu2_Click(object sender, EventArgs e) => treeView1.SelectedNode = treeView1.SNode.AddFolder();
private void openAllContextMenu_Click(object sender, EventArgs e)
{
BookmarkItemModel model = new BookmarkItemModel()
if (treeView1.SelectedNode == null)
{
SiteAddress = "http://www.hiimray.co.uk",
TreeviewPath = @"\hello\momo\"
};
model.Update();
return;
}
treeView1.AddItem_OnSelectedNode(model.ToViewModel());
if (treeView1.SelectedNode.Nodes.Count <= 0)
{
return;
}
//MessageBox.Show(treeView1.Nodes.Count.ToString());
foreach (TreeNode item in treeView1.SelectedNode.Nodes)
{
openBookmark(item);
}
}
private void editContextMenu2_Click(object sender, EventArgs e) => treeView1.SNode.Edit();
private void deleteContextMenu_Click(object sender, EventArgs e) => treeView1.SNode.Delete();
private void sortContextMenu2_Click(object sender, EventArgs e) => treeView1.SNode.Sort();
private void moveUpContextMenu_Click(object sender, EventArgs e) => treeView1.SNode.MoveUp();
private void moveDownContextMenu_Click(object sender, EventArgs e) => treeView1.SNode.MoveDown();
#endregion
#region page context menu
private void openContextMenu_Click(object sender, EventArgs e) => openBookmark(treeView1.SelectedNode);
private void editContextMenu3_Click(object sender, EventArgs e) => (new BookmarkEditForm(treeView1)).ShowDialog();
private void deleteContextMenu2_Click(object sender, EventArgs e) => treeView1.SNode.Delete();
private void moveUpContextMenu2_Click(object sender, EventArgs e) => treeView1.SNode.MoveUp();
private void moveDownContextMenu2_Click(object sender, EventArgs e) => treeView1.SNode.MoveDown();
#endregion
}
}

View File

@ -117,21 +117,21 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="treeMenuItem.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>412, 17</value>
<metadata name="pageTreeNodeMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1034, 17</value>
</metadata>
<metadata name="oToolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>307, 17</value>
<value>333, 17</value>
</metadata>
<data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADU
FwAAAk1TRnQBSQFMAgEBBwEAAWwBAgFsAQIBEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA
FwAAAk1TRnQBSQFMAgEBBwEAAcwBAgHMAQIBEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEQBgABEBQAAZkBSgEYAS4BtwEdAbcBGQG3ARkBtwEZAbcBGQG3ARkBtwEZAbcBGQG3
ARkBtwEdARcBLgGZAUoEAAGZAUoBGAEuAbcBHQG3ARkBtwEZAbcBGQG3ARkBtwEZAbcBGQG3ARkBtwEZ
AbcBHQEXAS4BmQFKBAABmQFKARgBLgG3AR0BtwEZAbcBGQG3ARkBtwEZAbcBGQG3ARkBtwEZAbcBGQG3
@ -236,7 +236,7 @@
</value>
</data>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>109, 17</value>
<value>123, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="newFileMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -254,29 +254,29 @@
</value>
</data>
<metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>779, 20</value>
<value>443, 17</value>
</metadata>
<metadata name="treeMenuFolder.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>534, 17</value>
<metadata name="folderTreeNodeMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>865, 17</value>
</metadata>
<metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>903, 20</value>
<value>576, 17</value>
</metadata>
<metadata name="toolStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>208, 17</value>
<value>228, 17</value>
</metadata>
<data name="newMenuBarItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHZSURBVDhPjZM9SxxRFIaNqfIfIlgJQpDgypZBEAshFkpS
SECIhYJdolikjFiZJizLYiPpAikC6W1EQiQhM4tK/AAlWOy6X+7szse9d2b09ZxLZpxxNyQHHraY8z77
3ruzPYl5SGSI7D/oJ3qJjsl4nmcZhnEVhiG6IaVELpd7T7tdJVkOO44D13VjWq0Wms0mKpWKlpTLZeTz
+Q7JPSLLC0IIKKX0J2PbNizLQrVa1QJqCf6SQqEQSfRoQdAqQl7+0IJIwoF2u41arZY6DsMZnabRAnH8
GuLXQrwQBIE+d3SUer2um5RKpVvB9fmrB/b+i1Hj89imPJyH3JuBPFuH3/iK0HdSEm7C99FoNG4F8mhu
Qx0tQp4swf+9DnX6FsKYgrMzDLG/kmrCx+E7YVEsAJ7f9/amv8iTZRK8I8EqvOIzeOZLhIHSi4zv+/pe
WMLEAp7Ln5NDovgU6mwV6vgNnO1H8K2DOMxwi+hyuU1K4HwfnxDmJNxvj2HvDFL9DNTFlg5FcAOGw52C
3Sez5seBD6GsIyDE4Rrk+aeOcJKUgCZ+ke6SbJGEn3FGp2m0wDTN67uCv0G7V5zR6T8zQj+Pyw+6BZLw
Dr3ONmX43xtPHzFCsPV/oHBP3w1tip0dw+Y0hQAAAABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHaSURBVDhPjZNNSxtRFIatXfU/KHQlFEqRJmRZhNJFoS6U
uiiC0C4UuquWLlxWurIbCSF0I90VXAju3ZhBLC01QUv9gEpxkZgvM8l83HtnRt+ec3HGGRPRAw9ZzHmf
vPdm0hebASJFZG7gPtFPdE3KdV2zUCicBUGAXkgpkc1ml2i3pyTDYdu24ThORLvdRqvVQrVa1ZJKpYJc
LtcluUNkeEEIAaWU/mQsy4JpmqjValpALcFfks/nQ4keLfDbJcjTn1oQSjjQ6XRQr9cTx2E4o9M0WiAO
ZiH+zEQLvu/rc4dHaTQaukm5XL4UnB+/u2ftTo5srz5dlnvTkDuvII8W4TU3EXh2QsJN+D6azealQO6/
+aL230IezsH7twj19yPE9hhs4zHE7odEEz4O3wmLIgEwcdfdGV+Th+9J8JkEC3BLL+EWXyPwlV5kPM/T
98ISJhLwnP4afSRKL6COFqAO5mFvPIRn/o7CDLcIL5fbJAT2j2fPRXEUztYwLOMB1U9BnazrUAg3YDjc
Lfj+ZKr4behrIBvwCbH3CfJ4pSscJyGgiV6kq8RbxOFnnNFpGi0wDOP8quA6aPeMMzp9MWn6eRx+0CsQ
h3fodbYow//eaAaJNMHW20DhvsH/Ib+cRcWEtS4AAAAASUVORK5CYII=
</value>
</data>
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -294,8 +294,23 @@
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="treeMenuRoot.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>658, 20</value>
<data name="toolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="rootTreeNodeMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>705, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>108</value>

View File

@ -3,82 +3,122 @@ using System.Drawing.Drawing2D;
namespace RyzStudio.Drawing
{
public struct Rectangoid
{
int X;
int Y;
int Width;
int Height;
int Radius;
public struct Rectangoid
{
private int X;
private int Y;
private int Width;
private int Height;
private 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(Rectangle rect, int radius)
{
X = rect.X;
Y = rect.Y;
Width = rect.Width;
Height = rect.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(Rectangle rect, int radius, int borderWidth)
{
rect.Inflate((-1 * borderWidth), (-1 * borderWidth));
public Rectangoid(int width, int height, int radius)
{
X = 0;
Y = 0;
Width = width;
Height = height;
Radius = radius;
}
X = rect.X;
Y = rect.Y;
Width = rect.Width;
Height = rect.Height;
Radius = radius;
}
public Rectangoid(int width, int height)
{
X = 0;
Y = 0;
Width = width;
Height = height;
Radius = 0;
}
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 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 Rectangoid(int x, int y, int width, int height)
{
X = x;
Y = y;
Width = width;
Height = height;
Radius = 0;
}
public PointF GetOrigin()
{
PointF retval = new PointF();
retval.X = ((float)Width / 2) + X;
retval.Y = ((float)Height / 2) + Y;
return retval;
}
}
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 + this.Radius, Y, X + Width - (this.Radius * 2), Y);
if (this.Radius > 0)
{
rv.AddArc(X + Width - (this.Radius * 2), Y, this.Radius * 2, this.Radius * 2, 270, 90);
}
rv.AddLine(X + Width, Y + this.Radius, X + Width, Y + Height - (this.Radius * 2));
if (this.Radius > 0)
{
rv.AddArc(X + Width - (this.Radius * 2), Y + Height - (this.Radius * 2), this.Radius * 2, this.Radius * 2, 0, 90);
}
rv.AddLine(X + Width - (this.Radius * 2), Y + Height, X + this.Radius, Y + Height);
if (this.Radius > 0)
{
rv.AddArc(X, Y + Height - (this.Radius * 2), this.Radius * 2, this.Radius * 2, 90, 90);
}
rv.AddLine(X, Y + Height - (this.Radius * 2), X, Y + this.Radius);
if (this.Radius > 0)
{
rv.AddArc(X, Y, this.Radius * 2, this.Radius * 2, 180, 90);
}
rv.CloseFigure();
return rv;
}
public PointF GetOrigin()
{
PointF rv = new PointF();
rv.X = ((float)Width / 2) + X;
rv.Y = ((float)Height / 2) + Y;
return rv;
}
}
}

View File

@ -0,0 +1,37 @@
namespace RyzStudio.Windows.Forms
{
partial class HorizontalSeparator
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
}
#endregion
}
}

View File

@ -0,0 +1,25 @@
using System.Drawing;
using System.Windows.Forms;
namespace RyzStudio.Windows.Forms
{
public partial class HorizontalSeparator : UserControl
{
public HorizontalSeparator() : base()
{
//InitializeComponent();
this.MaximumSize = new Size(SystemInformation.VirtualScreen.Width, 2);
}
protected override void OnPaintBackground(PaintEventArgs e)
{
base.OnPaintBackground(e);
Graphics g = e.Graphics;
g.FillRectangle(new SolidBrush(Color.FromArgb(213, 223, 229)), new Rectangle(this.DisplayRectangle.Left, 0, this.DisplayRectangle.Width, 1));
g.FillRectangle(new SolidBrush(Color.FromArgb(249, 251, 253)), new Rectangle(this.DisplayRectangle.Left, 1, this.DisplayRectangle.Width, 1));
}
}
}

View File

@ -0,0 +1,104 @@
namespace RyzStudio.Windows.ThemedForms
{
using System;
using System.ComponentModel;
using System.Drawing;
public partial class Button : RyzStudio.Windows.ThemedForms.UserControl
{
protected ButtonState buttonState = ButtonState.Normal;
public Button() : base()
{
InitializeComponent();
label1.ImageAlign = ContentAlignment.MiddleCenter;
label1.Click += delegate { this.OnClick(null); };
label1.MouseEnter += delegate { this.VisualState = ButtonState.Hover; };
label1.MouseLeave += delegate { this.VisualState = ButtonState.Normal; };
label1.MouseDown += delegate { this.VisualState = ButtonState.Down; };
label1.MouseUp += delegate { this.VisualState = ButtonState.Normal; };
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.StyleOver.ForeImage = this.OverImage;
this.StyleDown.ForeImage = this.DownImage;
this.StyleDefault.ForeImage = this.DefaultImage;
this.VisualState = ButtonState.Normal;
}
protected ButtonState VisualState
{
get { return buttonState; }
set
{
switch (value)
{
case ButtonState.Normal:
if (this.VisualState == ButtonState.Down)
{
updateButton(StyleOver);
}
else
{
updateButton(StyleDefault);
}
break;
case ButtonState.Hover:
updateButton(StyleOver);
break;
case ButtonState.Down:
updateButton(StyleDown);
break;
default:
updateButton(StyleDefault);
break;
}
buttonState = value;
}
}
protected void updateButton(ButtonStyle style)
{
label1.ForeColor = style.PenColour;
label1.BackColor = style.BackColour;
label1.Image = style.ForeImage;
}
[Browsable(true)]
[Category("Appearance")]
public string LabelText
{
get => label1.Text;
set => label1.Text = value;
}
[Browsable(true)]
[Category("Appearance")]
public Image OverImage { get; set; } = null;
[Browsable(true)]
[Category("Appearance")]
public Image DownImage { get; set; } = null;
[Browsable(true)]
[Category("Appearance")]
public Image DefaultImage { get; set; } = null;
[Browsable(false)]
public ButtonStyle StyleOver { get; set; } = new ButtonStyle(Color.Black, Color.White);
[Browsable(false)]
public ButtonStyle StyleDown { get; set; } = new ButtonStyle(Color.LightGray, Color.Black);
[Browsable(false)]
public ButtonStyle StyleDefault { get; set; } = new ButtonStyle(Color.White, Color.Black);
}
}

View File

@ -0,0 +1,61 @@
namespace RyzStudio.Windows.ThemedForms
{
partial class Button
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
this.label1.Location = new System.Drawing.Point(3, 3);
this.label1.Margin = new System.Windows.Forms.Padding(0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(123, 27);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// Button
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label1);
this.Name = "Button";
this.Padding = new System.Windows.Forms.Padding(3, 3, 2, 2);
this.Size = new System.Drawing.Size(128, 32);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label label1;
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,9 @@
namespace RyzStudio.Windows.ThemedForms
{
public enum ButtonState
{
Normal = 0,
Hover,
Down
}
}

View File

@ -0,0 +1,25 @@
namespace RyzStudio.Windows.ThemedForms
{
using System.Drawing;
public class ButtonStyle
{
public Color BackColour { get; set; }
public Color PenColour { get; set; }
public Image ForeImage { get; set; } = null;
public ButtonStyle(Color backColour, Color penColour)
{
this.BackColour = backColour;
this.PenColour = penColour;
this.ForeImage = null;
}
public ButtonStyle(Color backColour, Color penColour, Image foreImage)
{
this.BackColour = backColour;
this.PenColour = penColour;
this.ForeImage = foreImage;
}
}
}

View File

@ -0,0 +1,52 @@
namespace RyzStudio.Windows.ThemedForms
{
partial class Form
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.Color.WhiteSmoke;
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.ClientSize = new System.Drawing.Size(584, 381);
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.ForeColor = System.Drawing.Color.Black;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(600, 420);
this.Name = "Form";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.ResumeLayout(false);
}
#endregion
}
}

View File

@ -0,0 +1,186 @@
namespace RyzStudio.Windows.ThemedForms
{
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
/// <summary>
/// Theme customised form
/// </summary>
public partial class Form : System.Windows.Forms.Form
{
protected Image topImage = null;
protected Color topFillColour = Color.FromArgb(15, 15, 15);
protected int topFillHeight = 52;
protected Image bottomImage = null;
protected Color bottomFillColour = Color.FromArgb(15, 15, 15);
protected int bottomFillMargin = 19;
/// <summary>
/// Initializes a new instance of the Form class
/// </summary>
public Form()
{
this.InitializeComponent();
this.BackColor = Color.FromArgb(246, 246, 246);
}
/// <summary>
/// Onresize event
/// </summary>
/// <param name="e">Event argument</param>
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Invalidate();
}
/// <summary>
/// OnPaint event
/// </summary>
/// <param name="e">Event argument</param>
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
Rectangle areaTop = new Rectangle(this.DisplayRectangle.Left, 0, this.DisplayRectangle.Width, topFillHeight);
Rectangle areaBottom = new Rectangle(this.DisplayRectangle.Left, (this.DisplayRectangle.Height - bottomFillMargin), this.DisplayRectangle.Width, bottomFillMargin);
// draw header
if (topFillHeight > 0)
{
g.FillRectangle(new SolidBrush(topFillColour), areaTop);
}
// draw footer
if (bottomFillMargin > 0)
{
g.FillRectangle(new SolidBrush(bottomFillColour), areaBottom);
}
// draw logo
if (topImage != null)
{
g.DrawImageUnscaled(topImage, 0, 0);
}
if (bottomImage != null)
{
g.DrawImageUnscaled(bottomImage, 0, (this.DisplayRectangle.Height - bottomImage.Height - bottomFillMargin), this.DisplayRectangle.Width, bottomImage.Height);
}
}
#region public properties
#endregion
#region public properties (encapsulation)
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public new Color BackColor { get { return base.BackColor; } set { base.BackColor = value; } }
#endregion
public void SetValue(Label sender, string value)
{
if (sender.InvokeRequired)
{
sender.Invoke(new MethodInvoker(() => { sender.Text = value; }));
}
else
{
sender.Text = value;
}
}
public void SetValue(GroupBox sender, string value)
{
if (sender.InvokeRequired)
{
sender.Invoke(new MethodInvoker(() => { sender.Text = value; }));
}
else
{
sender.Text = value;
}
}
public void AddValue(ListBox sender, string value)
{
if (sender.InvokeRequired)
{
sender.Invoke(new MethodInvoker(() => { sender.Items.Add(value); }));
}
else
{
sender.Items.Add(value);
}
}
public void ClearValues(ListBox sender)
{
if (sender.InvokeRequired)
{
sender.Invoke(new MethodInvoker(() => { sender.Items.Clear(); }));
}
else
{
sender.Items.Clear();
}
}
public string GetValue(ListBox sender)
{
string rv = string.Empty;
if (sender.InvokeRequired)
{
sender.Invoke(new MethodInvoker(() => { rv = (sender.SelectedItem == null) ? string.Empty : sender.SelectedItem.ToString(); }));
}
else
{
rv = (sender.SelectedItem == null) ? string.Empty : sender.SelectedItem.ToString();
}
return rv;
}
public string GetValue(TextBox sender)
{
string rv = string.Empty;
if (sender.InvokeRequired)
{
sender.Invoke(new MethodInvoker(() => { rv = sender.Text.Trim(); }));
}
else
{
rv = sender.Text.Trim();
}
return rv;
}
public int GetValue(NumericUpDown sender)
{
int rv = 0;
if (sender.InvokeRequired)
{
sender.Invoke(new MethodInvoker(() => { rv = (int)sender.Value; }));
}
else
{
rv = (int)sender.Value;
}
return rv;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,58 @@
namespace RyzStudio.Windows.ThemedForms
{
using RyzStudio.Drawing;
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
public partial class MemoBox : RyzStudio.Windows.ThemedForms.UserControl
{
protected readonly Padding textboxPadding = new Padding(6, 6, 0, 6);
public MemoBox() : base()
{
InitializeComponent();
this.Margin = new Padding(10, 6, 10, 6);
}
//protected override void OnResize(EventArgs e)
//{
// base.OnResize(e);
// int b = (styleActive.BorderWidth + 1) + styleActive.BorderPadding;
// this.Height = textBox1.Height + (b + textboxPadding.Top) + ((b - 1) + textboxPadding.Bottom);
//}
protected override void OnGotFocus(EventArgs e)
{
base.OnGotFocus(e);
textBox1.Focus();
}
[Browsable(true), EditorBrowsable(EditorBrowsableState.Advanced)]
[Category("Appearance")]
public System.Windows.Forms.TextBox InnerTextBox { get => textBox1; set => textBox1 = value; }
[Browsable(true), EditorBrowsable(EditorBrowsableState.Advanced)]
[Category("Appearance")]
public new string Text { get => textBox1.Text; set => textBox1.Text = value; }
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public new Padding Margin { get { return base.Margin; } set { base.Margin = value; } }
protected override void updateBackground(Graphics g, ThemeStyle style)
{
int b = (styleActive.BorderWidth + 1) + styleActive.BorderPadding;
this.Padding = new Padding((b + textboxPadding.Left), (b + textboxPadding.Top), ((b - 1) + textboxPadding.Right), ((b - 1) + textboxPadding.Bottom));
Rectangoid area = new Rectangoid(this.ClientRectangle, style.BorderRadius, style.BorderWidth);
g.FillPath(new SolidBrush(style.BackColour), area.ToGraphicsPath());
g.DrawPath(new Pen(new SolidBrush(style.BorderColour), style.BorderWidth), area.ToGraphicsPath());
}
}
}

View File

@ -0,0 +1,63 @@
namespace RyzStudio.Windows.ThemedForms
{
partial class MemoBox
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.AcceptsReturn = true;
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBox1.HideSelection = false;
this.textBox1.Location = new System.Drawing.Point(4, 4);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.textBox1.Size = new System.Drawing.Size(121, 25);
this.textBox1.TabIndex = 0;
//
// MemoBox
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.Controls.Add(this.textBox1);
this.Name = "MemoBox";
this.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.Size = new System.Drawing.Size(128, 32);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox textBox1;
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,72 @@
namespace RyzStudio.Windows.ThemedForms
{
partial class ProgressBar
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label3 = new System.Windows.Forms.Label();
this.userControl1 = new RyzStudio.Windows.ThemedForms.ProgressBarInner();
this.SuspendLayout();
//
// label3
//
this.label3.BackColor = System.Drawing.Color.Transparent;
this.label3.Dock = System.Windows.Forms.DockStyle.Fill;
this.label3.Font = new System.Drawing.Font("Segoe UI", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label3.Location = new System.Drawing.Point(4, 4);
this.label3.Margin = new System.Windows.Forms.Padding(0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(803, 47);
this.label3.TabIndex = 144;
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// userControl1
//
this.userControl1.BarColour = System.Drawing.Color.FromArgb(((int)(((byte)(158)))), ((int)(((byte)(225)))), ((int)(((byte)(249)))));
this.userControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.userControl1.Location = new System.Drawing.Point(4, 4);
this.userControl1.Margin = new System.Windows.Forms.Padding(0);
this.userControl1.Maximum = 100;
this.userControl1.Minimum = 0;
this.userControl1.Name = "userControl1";
this.userControl1.Size = new System.Drawing.Size(803, 47);
this.userControl1.TabIndex = 145;
this.userControl1.Value = 50;
//
// ProgressBar
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.userControl1);
this.Controls.Add(this.label3);
this.Margin = new System.Windows.Forms.Padding(0);
this.Name = "ProgressBar";
this.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.Size = new System.Drawing.Size(810, 54);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label label3;
private ProgressBarInner userControl1;
}
}

View File

@ -0,0 +1,29 @@
using System;
using System.Drawing;
namespace RyzStudio.Windows.ThemedForms
{
public partial class ProgressBar : RyzStudio.Windows.ThemedForms.UserControl
{
public ProgressBar() : base()
{
InitializeComponent();
styleActive = new ThemeStyle(1, 3, 2, Color.FromArgb(112, 112, 112), Color.White);
}
public int Minimum { get => userControl1.Minimum; set => userControl1.Minimum = value; }
public int Maximum { get => userControl1.Maximum; set => userControl1.Maximum = value; }
public int Value { get => userControl1.Value; set => userControl1.Value = value; }
public Color BarColour { get => userControl1.BarColour; set => userControl1.BarColour = value; }
public Color BarTextColour { get => userControl1.BarTextColour; set => userControl1.BarTextColour = value; }
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
this.Invalidate();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,63 @@
namespace RyzStudio.Windows.ThemedForms
{
partial class ProgressBarInner
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label3 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label3
//
this.label3.BackColor = System.Drawing.Color.Transparent;
this.label3.Dock = System.Windows.Forms.DockStyle.Fill;
this.label3.Font = new System.Drawing.Font("Segoe UI", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label3.Location = new System.Drawing.Point(4, 4);
this.label3.Margin = new System.Windows.Forms.Padding(0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(803, 47);
this.label3.TabIndex = 144;
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// ProgressBarInner
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label3);
this.Margin = new System.Windows.Forms.Padding(0);
this.Name = "ProgressBarInner";
this.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.Size = new System.Drawing.Size(810, 54);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label label3;
}
}

View File

@ -0,0 +1,197 @@
using System;
using System.Drawing;
using System.Windows.Forms;
namespace RyzStudio.Windows.ThemedForms
{
public partial class ProgressBarInner : System.Windows.Forms.UserControl
{
protected int minimum = 0;
protected int maximum = 100;
protected int value = 0;
public ProgressBarInner() : base()
{
InitializeComponent();
this.Padding = new Padding(0);
}
public int Minimum
{
get
{
return minimum;
}
set
{
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(() => {
setMinimum(value);
}));
}
else
{
setMinimum(value);
}
}
}
public int Maximum
{
get
{
return maximum;
}
set
{
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(() => {
setMaximum(value);
}));
}
else
{
setMaximum(value);
}
}
}
public int Value
{
get
{
return value;
}
set
{
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(() => {
setValue(value);
}));
}
else
{
setValue(value);
}
}
}
public Color BarColour { get; set; } = Color.FromArgb(158, 225, 249);
public Color BarTextColour
{
get => label3.ForeColor;
set => label3.ForeColor = value;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Rectangle canvas = this.DisplayRectangle;
Graphics g = e.Graphics;
if (this.Value > 0)
{
decimal result = decimal.Divide(canvas.Width, this.Maximum) * this.Value;
canvas.Width = (int)Math.Round(result);
g.FillRectangle(new SolidBrush(this.BarColour), canvas);
}
}
protected void updateText()
{
if (label3.InvokeRequired)
{
label3.Invoke(new MethodInvoker(() =>
{
label3.Text = string.Format("{0}/{1}", this.Value.ToString(), this.Maximum.ToString());
}));
}
else
{
label3.Text = string.Format("{0}/{1}", this.Value.ToString(), this.Maximum.ToString());
}
}
protected void setMinimum(int value)
{
int m = value;
if (m < 0)
{
m = 0;
}
if (m > this.Maximum)
{
m = this.Maximum;
}
if (this.Value < m)
{
this.Value = m;
}
if (this.value > this.Maximum)
{
this.value = this.Maximum;
}
minimum = m;
updateText();
this.Invalidate();
}
protected void setMaximum(int value)
{
int m = value;
if (m < 0)
{
m = 0;
}
if (m < this.Minimum)
{
m = this.Minimum;
}
if (this.Value > m)
{
this.Value = m;
}
if (this.value < this.Minimum)
{
this.value = this.Minimum;
}
maximum = m;
updateText();
this.Invalidate();
}
protected void setValue(int value)
{
int m = value;
if (m < this.Minimum)
{
m = this.Minimum;
}
if (m > this.Maximum)
{
m = this.Maximum;
}
this.value = m;
updateText();
this.Invalidate();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,58 @@
namespace RyzStudio.Windows.ThemedForms
{
using RyzStudio.Drawing;
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
public partial class TextBox : RyzStudio.Windows.ThemedForms.UserControl
{
protected readonly Padding textboxPadding = new Padding(6, 6, 6, 6);
public TextBox() : base()
{
InitializeComponent();
this.Margin = new Padding(10, 6, 10, 6);
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
int b = (styleActive.BorderWidth + 1) + styleActive.BorderPadding;
this.Height = textBox1.Height + (b + textboxPadding.Top) + ((b - 1) + textboxPadding.Bottom);
}
protected override void OnGotFocus(EventArgs e)
{
base.OnGotFocus(e);
textBox1.Focus();
}
[Browsable(true), EditorBrowsable(EditorBrowsableState.Advanced)]
[Category("Appearance")]
public System.Windows.Forms.TextBox InnerTextBox { get => textBox1; set => textBox1 = value; }
[Browsable(true), EditorBrowsable(EditorBrowsableState.Advanced)]
[Category("Appearance")]
public new string Text { get => textBox1.Text; set => textBox1.Text = value; }
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public new Padding Margin { get { return base.Margin; } set { base.Margin = value; } }
protected override void updateBackground(Graphics g, ThemeStyle style)
{
int b = (styleActive.BorderWidth + 1) + styleActive.BorderPadding;
this.Padding = new Padding((b + textboxPadding.Left), (b + textboxPadding.Top), ((b - 1) + textboxPadding.Right), ((b - 1) + textboxPadding.Bottom));
Rectangoid area = new Rectangoid(this.ClientRectangle, style.BorderRadius, style.BorderWidth);
g.FillPath(new SolidBrush(style.BackColour), area.ToGraphicsPath());
g.DrawPath(new Pen(new SolidBrush(style.BorderColour), style.BorderWidth), area.ToGraphicsPath());
}
}
}

View File

@ -0,0 +1,60 @@
namespace RyzStudio.Windows.ThemedForms
{
partial class TextBox
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBox1.HideSelection = false;
this.textBox1.Location = new System.Drawing.Point(4, 4);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(121, 13);
this.textBox1.TabIndex = 0;
//
// TextBox
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.Controls.Add(this.textBox1);
this.Name = "TextBox";
this.Padding = new System.Windows.Forms.Padding(4, 4, 3, 3);
this.Size = new System.Drawing.Size(128, 32);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox textBox1;
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,34 @@
namespace RyzStudio.Windows.ThemedForms
{
using System.Drawing;
public struct ThemeStyle
{
public int BorderWidth;
public int BorderRadius;
public int BorderPadding;
public Color BorderColour;
public Color BackColour;
public Color ForeColour;
public ThemeStyle(int borderWidth, int borderRadius, int borderPadding, Color borderColour, Color backColour)
{
this.BorderWidth = borderWidth;
this.BorderRadius = borderRadius;
this.BorderPadding = borderPadding;
this.BorderColour = borderColour;
this.BackColour = backColour;
this.ForeColour = Color.Black;
}
public ThemeStyle(int borderWidth, int borderRadius, int borderPadding, Color borderColour, Color backColour, Color foreColour)
{
this.BorderWidth = borderWidth;
this.BorderRadius = borderRadius;
this.BorderPadding = borderPadding;
this.BorderColour = borderColour;
this.BackColour = backColour;
this.ForeColour = foreColour;
}
}
}

View File

@ -0,0 +1,51 @@
using System.Drawing;
using System.Windows.Forms;
namespace RyzStudio.Windows.ThemedForms
{
public class ThreadHelper
{
public static void SetText(TextBox sender, string text)
{
if (sender.InvokeRequired)
{
sender.Invoke(new MethodInvoker(() => {
sender.Text = text;
}));
}
else
{
sender.Text = text;
}
}
public static void SetText(MemoBox sender, string text)
{
if (sender.InvokeRequired)
{
sender.Invoke(new MethodInvoker(() => {
sender.Text = text;
}));
}
else
{
sender.Text = text;
}
}
public static void SetImage(PictureBox sender, Image image)
{
if (sender.InvokeRequired)
{
sender.Invoke(new MethodInvoker(() => {
sender.Image = image;
}));
}
else
{
sender.Image = image;
}
}
}
}

View File

@ -0,0 +1,53 @@
namespace RyzStudio.Windows.ThemedForms
{
using System;
using System.Drawing;
using System.Windows.Forms;
using RyzStudio.Drawing;
using System.ComponentModel;
public partial class UserControl : System.Windows.Forms.UserControl
{
protected ThemeStyle styleActive = new ThemeStyle(1, 3, 2, Color.FromArgb(112, 112, 112), Color.White);
public UserControl()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.BackColor = Color.Transparent;
}
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;
updateBackground(g, styleActive);
}
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public new Padding Padding { get { return base.Padding; } set { base.Padding = value; } }
protected virtual void updateBackground(Graphics g, ThemeStyle style)
{
int b = (styleActive.BorderWidth + 1) + styleActive.BorderPadding;
this.Padding = new Padding(b, b, (b - 1), (b - 1));
Rectangoid area = new Rectangoid(this.ClientRectangle, style.BorderRadius, style.BorderWidth);
g.FillPath(new SolidBrush(style.BackColour), area.ToGraphicsPath());
g.DrawPath(new Pen(new SolidBrush(style.BorderColour), style.BorderWidth), area.ToGraphicsPath());
}
}
}

View File

@ -0,0 +1,37 @@
namespace RyzStudio.Windows.ThemedForms
{
partial class UserControl
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
}
#endregion
}
}

View File

@ -1,11 +1,15 @@
using System;
using bzit.bomg;
using bzit.bomg.Models;
using System;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Resources = bzit.bomg.Properties.Resources;
namespace RyzStudio.Windows.Forms
{
public class MovableTreeView : System.Windows.Forms.TreeView
public class BookmarkTreeView : System.Windows.Forms.TreeView
{
public enum IconSet
{
@ -15,7 +19,18 @@ namespace RyzStudio.Windows.Forms
Default
}
public MovableTreeViewSelectedNode SNode { get; set; }
public enum NodeType
{
None = 0,
Root,
Folder,
Page
}
public BookmarkTreeViewSNode SNode { get; set; }
protected IconDatabase iconDatabase = null;
public delegate void NodeCountUpdated(ulong v);
@ -23,28 +38,34 @@ namespace RyzStudio.Windows.Forms
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 bool allowBeginEdit = false;
protected ulong nodeCount = 0;
protected bool hasChanged = false;
public MovableTreeView()
public BookmarkTreeView() : base()
{
this.SNode = new MovableTreeViewSelectedNode(this);
this.SNode = new BookmarkTreeViewSNode(this);
if (this.ImageList == null)
{
this.ImageList = new ImageList();
}
this.ImageList.ColorDepth = ColorDepth.Depth16Bit;
this.ImageList.ImageSize = new Size(16, 16);
this.ImageList.TransparentColor = Color.Transparent;
this.ImageList.Images.Clear();
this.ImageList.Images.Add(Resources.transmit_blue);
this.ImageList.Images.Add(Resources.folder);
this.ImageList.Images.Add(Resources.folder_explore);
this.ImageList.Images.Add(Resources.page_white_world_bw);
}
#region public properties
/* [Category("Data")]
public char CustomPathSeparator
{
get { return customPathSeparator; }
set { customPathSeparator = value; }
}*/
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ImageList ImageList { get => base.ImageList; set => base.ImageList = value; }
[Browsable(false)]
public TreeNode[] NodeList
@ -66,26 +87,6 @@ namespace RyzStudio.Windows.Forms
}
}
//[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
{
@ -127,237 +128,122 @@ namespace RyzStudio.Windows.Forms
}
}
#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()
public bool InitialiseIconDatabase(out string message, string filename)
{
this.HasChanged = true;
message = string.Empty;
if (this.SelectedNode == null)
if (string.IsNullOrWhiteSpace(filename))
{
return;
return false;
}
if (!this.SelectedNode.IsEditing)
if (iconDatabase == null)
{
allowBeginEdit = true;
this.SelectedNode.BeginEdit();
iconDatabase = new IconDatabase();
}
bool rv = false;
if (File.Exists(filename))
{
rv = iconDatabase.LoadFile(filename);
if (!rv)
{
rv = iconDatabase.Create(filename, true, null, true);
if (!rv)
{
message = iconDatabase.LastError;
return false;
}
}
}
else
{
rv = iconDatabase.Create(filename, true, null, true);
if (!rv)
{
message = iconDatabase.LastError;
return false;
}
}
return true;
}
public void AddItem(BookmarkItemViewModel viewModel)
{
int iconIndex = addIcon(viewModel);
TreeNode tn = new TreeNode(viewModel.SiteName, iconIndex, iconIndex);
tn.Tag = viewModel;
tn.ToolTipText = viewModel.ToString();
TreeNode tn2 = addFolderPath(viewModel.TreeviewPath);
tn2.Nodes.Add(tn);
}
public void AddOrUpdateItem_OnSelectedNode(BookmarkItemViewModel viewModel)
{
switch (this.SNode.GetNodeType())
{
case NodeType.Root:
case NodeType.Folder:
addItem_OnSelectedNode(viewModel);
break;
case NodeType.Page:
updateItem_OnSelectedNode(viewModel);
break;
default:
break;
}
}
//public void DeleteNode()
public NodeType GetNodeType(TreeNode node)
{
if (node.Tag == null)
{
if (node.Equals(this.Nodes[0]))
{
return NodeType.Root;
}
else
{
return NodeType.Folder;
}
}
else
{
if (node.Tag is BookmarkItemViewModel)
{
return NodeType.Page;
}
else
{
return NodeType.None;
}
}
}
//public void EditNode()
//{
// if (this.SelectedNode == null)
// {
// return;
// }
// this.SNode.
// if (this.Nodes.Count <= 0)
// {
// return;
// }
// //this.HasChanged = true;
// if (this.SelectedNode.Equals(this.Nodes[0]))
// {
// return;
// }
// //if (this.SelectedNode == null)
// //{
// // 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;
// //if (!this.SelectedNode.IsEditing)
// //{
// // allowBeginEdit = true;
// // this.SelectedNode.BeginEdit();
// //}
//}
public string GetNodeFullPath(TreeNode node)
@ -534,57 +420,57 @@ namespace RyzStudio.Windows.Forms
protected override void OnBeforeLabelEdit(NodeLabelEditEventArgs e)
{
if (!allowBeginEdit)
{
e.CancelEdit = true;
return;
}
//if (!allowBeginEdit)
//{
// e.CancelEdit = true;
// return;
//}
this.HasChanged = true;
//this.HasChanged = true;
base.OnBeforeLabelEdit(e);
//base.OnBeforeLabelEdit(e);
if (e.Node == null)
{
e.CancelEdit = true;
}
else
{
if (e.Node.Tag == null)
{
// do it
}
else
{
e.CancelEdit = true;
}
}
//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;
}
//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;
//allowBeginEdit = false;
}
protected override void OnPreviewKeyDown(PreviewKeyDownEventArgs e)
@ -616,11 +502,7 @@ namespace RyzStudio.Windows.Forms
break;
case Keys.F2:
if (tn.Tag == null)
{
this.EditNode();
}
this.SNode.Edit();
break;
case Keys.Up:
if (e.Modifiers == Keys.Control)
@ -639,7 +521,7 @@ namespace RyzStudio.Windows.Forms
default: break;
}
base.OnPreviewKeyDown(e);
//base.OnPreviewKeyDown(e);
}
protected virtual void NodeCountUpdate(ulong v)
@ -649,6 +531,117 @@ namespace RyzStudio.Windows.Forms
#endregion
protected int addIcon(BookmarkItemViewModel viewModel) => addIcon(viewModel.ToModel());
protected int addIcon(BookmarkItemModel model)
{
if (this.ImageList.Images.ContainsKey(model.SiteAddress))
{
return this.ImageList.Images.IndexOfKey(model.SiteAddress);
}
if (iconDatabase.HasIcon(model.SiteAddress))
{
Image rs = iconDatabase.GetIcon(model.SiteAddress);
if (rs == null)
{
return (int)IconSet.Default;
}
else
{
this.ImageList.Images.Add(model.SiteAddress, rs);
return this.ImageList.Images.IndexOfKey(model.SiteAddress);
}
}
Bitmap bmp = model.RetrieveFavicon();
if (bmp == null)
{
return (int)IconSet.Default;
}
this.ImageList.Images.Add(model.SiteAddress, bmp);
return this.ImageList.Images.IndexOfKey(model.SiteAddress);
}
protected TreeNode addFolderPath(string path)
{
TreeNode tn = this.Nodes[0];
if (tn == null)
{
return tn;
}
if (string.IsNullOrWhiteSpace(path))
{
return tn;
}
if (string.IsNullOrWhiteSpace(path.Trim('\\')))
{
return tn;
}
string[] folderList = path.Trim('\\').Split('\\');
if (folderList.Length <= 0)
{
return tn;
}
foreach (string item in folderList)
{
if (tn.Nodes.ContainsKey(item))
{
// do nothing
}
else
{
tn.Nodes.Add(item, item, (int)IconSet.Folder1, (int)IconSet.Folder2);
}
tn = tn.Nodes[item];
}
return tn;
}
protected void addItem_OnSelectedNode(BookmarkItemViewModel viewModel)
{
if (this.SelectedNode == null)
{
return;
}
int iconIndex = addIcon(viewModel);
TreeNode tn = new TreeNode(viewModel.SiteName, iconIndex, iconIndex);
tn.Tag = viewModel;
tn.ToolTipText = viewModel.ToString();
int n = this.SelectedNode.Nodes.Add(tn);
this.SelectedNode = this.SelectedNode.Nodes[n];
}
protected void updateItem_OnSelectedNode(BookmarkItemViewModel viewModel)
{
if (this.SelectedNode == null)
{
return;
}
int iconIndex = addIcon(viewModel);
this.SelectedNode.Text = viewModel.SiteName;
this.SelectedNode.ImageIndex = iconIndex;
this.SelectedNode.SelectedImageIndex = iconIndex;
this.SelectedNode.Tag = viewModel;
this.SelectedNode.ToolTipText = viewModel.ToString();
}
protected bool isNodeChild(TreeNode drag_node, TreeNode drop_node)
{
TreeNode tn = drop_node;
@ -686,22 +679,6 @@ namespace RyzStudio.Windows.Forms
}
}
//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)
@ -717,6 +694,12 @@ namespace RyzStudio.Windows.Forms
}
}
protected virtual void OnAddFolderNode(TreeNode node) { }
protected virtual void OnAddItemNode(TreeNode node) { }
@ -726,5 +709,10 @@ namespace RyzStudio.Windows.Forms
//protected string PathDecode(string text) { return RyzStudio.String.DecodeFrom64(text); }
protected string PathEncode(string text) { return System.Web.HttpUtility.UrlEncode(text); }
protected string PathDecode(string text) { return System.Web.HttpUtility.UrlDecode(text); }
}
}

View File

@ -1,18 +1,23 @@
using System;
using bzit.bomg.Models;
using System;
using System.Windows.Forms;
namespace RyzStudio.Windows.Forms
{
public class MovableTreeViewSelectedNode
public class BookmarkTreeViewSNode
{
protected MovableTreeView Treeview = null;
protected BookmarkTreeView Treeview = null;
public MovableTreeViewSelectedNode(MovableTreeView treeview)
public BookmarkTreeViewSNode(BookmarkTreeView treeview)
{
Treeview = treeview;
}
protected TreeNode SelectedNode { get => this.Treeview.SelectedNode; set => this.Treeview.SelectedNode = value; }
protected TreeNode SelectedNode
{
get => this.Treeview.SelectedNode;
set => this.Treeview.SelectedNode = value;
}
protected string encodeName(string name) => Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(name));
@ -34,7 +39,7 @@ namespace RyzStudio.Windows.Forms
return null;
}
return this.SelectedNode.Nodes.Add(encodeName(name), name, (int)MovableTreeView.IconSet.Folder1, (int)MovableTreeView.IconSet.Folder2);
return this.SelectedNode.Nodes.Add(encodeName(name), name, (int)BookmarkTreeView.IconSet.Folder1, (int)BookmarkTreeView.IconSet.Folder2);
}
public TreeNode AddItem(string name, object tag)
@ -49,7 +54,7 @@ namespace RyzStudio.Windows.Forms
return null;
}
TreeNode tn = new TreeNode(name, (int)MovableTreeView.IconSet.Default, (int)MovableTreeView.IconSet.Default);
TreeNode tn = new TreeNode(name, (int)BookmarkTreeView.IconSet.Default, (int)BookmarkTreeView.IconSet.Default);
tn.Tag = tag;
this.SelectedNode.Nodes.Add(tn);
@ -57,35 +62,6 @@ namespace RyzStudio.Windows.Forms
return tn;
}
//public TreeNode AddPage() => this.AddPage("New Page (" + DateTime.Now.ToString("yyyy-MM-dd-HHmmss") + ")");
//public TreeNode AddPage(string name)
//{
// if (this.SelectedNode == null)
// {
// return null;
// }
// if (this.SelectedNode.Tag != null)
// {
// return null;
// }
// TreeNode tn = this.SelectedNode.Nodes.Add(encodeName(name), name, (int)MovableTreeView.IconSet.Default, (int)MovableTreeView.IconSet.Default);
// tn.Tag = new object();
// tn.ToolTipText = name;
// nodeCount++;
// NodeCountUpdate(nodeCount);
// this.SelectedNode = tn;
// OnAddItemNode(tn);
// return tn;
//}
public void Delete()
{
if (this.SelectedNode == null)
@ -106,6 +82,48 @@ namespace RyzStudio.Windows.Forms
this.SelectedNode.Remove();
}
public void Edit()
{
if (this.SelectedNode == null)
{
return;
}
if (this.SelectedNode.IsEditing)
{
return;
}
switch (this.GetNodeType())
{
case BookmarkTreeView.NodeType.Root:
case BookmarkTreeView.NodeType.Folder:
this.SelectedNode.BeginEdit();
break;
case BookmarkTreeView.NodeType.Page:
this.SelectedNode.BeginEdit();
break;
default:
break;
}
//this.HasChanged = true;
//if (this.SelectedNode == null)
//{
// return;
//}
//if (!this.SelectedNode.IsEditing)
//{
// allowBeginEdit = true;
// this.SelectedNode.BeginEdit();
//}
}
public BookmarkTreeView.NodeType GetNodeType() => this.Treeview.GetNodeType(this.SelectedNode);
public void MoveDown()
{
if (this.SelectedNode == null)

View File

@ -97,7 +97,59 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Models\BookmarkItemModel.cs" />
<Compile Include="RyzStudio\Windows\Forms\MovableTreeViewSelectedNode.cs" />
<Compile Include="Windows\Forms\BookmarkTreeViewSNode.cs" />
<Compile Include="RyzStudio\Windows\Forms\HorizontalSeparator.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="RyzStudio\Windows\Forms\HorizontalSeparator.Designer.cs">
<DependentUpon>HorizontalSeparator.cs</DependentUpon>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\ThreadHelper.cs" />
<Compile Include="RyzStudio\Windows\ThemedForms\MemoBox.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\MemoBox.designer.cs">
<DependentUpon>MemoBox.cs</DependentUpon>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\TextBox.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\TextBox.designer.cs">
<DependentUpon>TextBox.cs</DependentUpon>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\Button.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\Button.designer.cs">
<DependentUpon>Button.cs</DependentUpon>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\ButtonState.cs" />
<Compile Include="RyzStudio\Windows\ThemedForms\ButtonStyle.cs" />
<Compile Include="RyzStudio\Windows\ThemedForms\Form.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\Form.Designer.cs">
<DependentUpon>Form.cs</DependentUpon>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\ProgressBar.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\ProgressBar.Designer.cs">
<DependentUpon>ProgressBar.cs</DependentUpon>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\ProgressBarInner.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\ProgressBarInner.Designer.cs">
<DependentUpon>ProgressBarInner.cs</DependentUpon>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\ThemeStyle.cs" />
<Compile Include="RyzStudio\Windows\ThemedForms\UserControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="RyzStudio\Windows\ThemedForms\UserControl.designer.cs">
<DependentUpon>UserControl.cs</DependentUpon>
</Compile>
<Compile Include="ViewModels\BookmarkItemViewModel.cs" />
<Compile Include="RyzStudio\Data\SQLite\SQLiteDatabase2.cs" />
<Compile Include="UpdateIconForm.cs">
@ -157,15 +209,27 @@
<Compile Include="RyzStudio\Windows\Forms\BigUserControl.Designer.cs">
<DependentUpon>BigUserControl.cs</DependentUpon>
</Compile>
<Compile Include="RyzStudio\Windows\Forms\MovableTreeView.cs">
<Compile Include="Windows\Forms\BookmarkTreeView.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="BookmarkTreeView.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="BookmarkTreeView.Designer.cs">
<DependentUpon>BookmarkTreeView.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="RyzStudio\Windows\ThemedForms\MemoBox.resx">
<DependentUpon>MemoBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RyzStudio\Windows\ThemedForms\TextBox.resx">
<DependentUpon>TextBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RyzStudio\Windows\ThemedForms\Button.resx">
<DependentUpon>Button.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RyzStudio\Windows\ThemedForms\Form.resx">
<DependentUpon>Form.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RyzStudio\Windows\ThemedForms\ProgressBar.resx">
<DependentUpon>ProgressBar.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="RyzStudio\Windows\ThemedForms\ProgressBarInner.resx">
<DependentUpon>ProgressBarInner.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UpdateIconForm.resx">
<DependentUpon>UpdateIconForm.cs</DependentUpon>
</EmbeddedResource>