Restore SEBPatch

This commit is contained in:
2025-06-01 11:44:20 +02:00
commit 8c656e3137
1297 changed files with 142172 additions and 0 deletions

View File

@@ -0,0 +1,661 @@
namespace SebWindowsConfig.Controls
{
partial class AdditionalResources
{
/// <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.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AdditionalResources));
this.buttonAdditionalResourcesAddSubResource = new System.Windows.Forms.Button();
this.buttonAdditionalResourcesMoveDown = new System.Windows.Forms.Button();
this.buttonAdditionalResourcesMoveUp = new System.Windows.Forms.Button();
this.buttonAdditionalResourcesAdd = new System.Windows.Forms.Button();
this.buttonadditionalResourcesRemove = new System.Windows.Forms.Button();
this.groupBoxAdditionalResourceDetails = new System.Windows.Forms.GroupBox();
this.UrlFilterGroupBox = new System.Windows.Forms.GroupBox();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.checkBoxShowButton = new System.Windows.Forms.CheckBox();
this.checkBoxAdditionalResourceAutoOpen = new System.Windows.Forms.CheckBox();
this.textBoxLinkURL = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.comboBoxModifiers = new System.Windows.Forms.ComboBox();
this.textBoxKey = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.textBoxRefererFilter = new System.Windows.Forms.TextBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.textBoxConfirmBoxText = new System.Windows.Forms.TextBox();
this.checkBoxConfirm = new System.Windows.Forms.CheckBox();
this.label10 = new System.Windows.Forms.Label();
this.labelAdditionalResourcesFilename = new System.Windows.Forms.Label();
this.checkBoxResetSession = new System.Windows.Forms.CheckBox();
this.comboBoxAdditionalResourcesChooseFileToLaunch = new System.Windows.Forms.ComboBox();
this.buttonAdditionalResourcesChooseEmbeddedFolder = new System.Windows.Forms.Button();
this.labelAdditionalResourceUrl = new System.Windows.Forms.Label();
this.labelAdditionalResourcesResourceDataLaunchWith = new System.Windows.Forms.Label();
this.textBoxAdditionalResourceUrl = new System.Windows.Forms.TextBox();
this.comboBoxAdditionalResourcesResourceDataLauncher = new System.Windows.Forms.ComboBox();
this.buttonAdditionalResourceRemoveResourceData = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.buttonAdditionalResourceEmbededResourceOpen = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.buttonAdditionalResourceChooseEmbededResource = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.textBoxAdditionalResourcesTitle = new System.Windows.Forms.TextBox();
this.label9 = new System.Windows.Forms.Label();
this.buttonAdditionalResourcesChooseIcon = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label();
this.pictureBoxAdditionalResourceIcon = new System.Windows.Forms.PictureBox();
this.checkBoxAdditionalResourceActive = new System.Windows.Forms.CheckBox();
this.treeViewAdditionalResources = new System.Windows.Forms.TreeView();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.groupBoxAdditionalResourceDetails.SuspendLayout();
this.groupBox3.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAdditionalResourceIcon)).BeginInit();
this.SuspendLayout();
//
// buttonAdditionalResourcesAddSubResource
//
this.buttonAdditionalResourcesAddSubResource.Location = new System.Drawing.Point(179, 568);
this.buttonAdditionalResourcesAddSubResource.Name = "buttonAdditionalResourcesAddSubResource";
this.buttonAdditionalResourcesAddSubResource.Size = new System.Drawing.Size(26, 26);
this.buttonAdditionalResourcesAddSubResource.TabIndex = 14;
this.buttonAdditionalResourcesAddSubResource.Text = "↳";
this.toolTip1.SetToolTip(this.buttonAdditionalResourcesAddSubResource, "Create a submenu");
this.buttonAdditionalResourcesAddSubResource.UseVisualStyleBackColor = true;
this.buttonAdditionalResourcesAddSubResource.Click += new System.EventHandler(this.buttonAdditionalResourcesAddSubResource_Click);
//
// buttonAdditionalResourcesMoveDown
//
this.buttonAdditionalResourcesMoveDown.Location = new System.Drawing.Point(35, 568);
this.buttonAdditionalResourcesMoveDown.Name = "buttonAdditionalResourcesMoveDown";
this.buttonAdditionalResourcesMoveDown.Size = new System.Drawing.Size(26, 26);
this.buttonAdditionalResourcesMoveDown.TabIndex = 13;
this.buttonAdditionalResourcesMoveDown.Text = "↓";
this.toolTip1.SetToolTip(this.buttonAdditionalResourcesMoveDown, "Move resource down in the list");
this.buttonAdditionalResourcesMoveDown.UseVisualStyleBackColor = true;
this.buttonAdditionalResourcesMoveDown.Click += new System.EventHandler(this.buttonAdditionalResourcesMoveDown_Click);
//
// buttonAdditionalResourcesMoveUp
//
this.buttonAdditionalResourcesMoveUp.Location = new System.Drawing.Point(3, 568);
this.buttonAdditionalResourcesMoveUp.Name = "buttonAdditionalResourcesMoveUp";
this.buttonAdditionalResourcesMoveUp.Size = new System.Drawing.Size(26, 26);
this.buttonAdditionalResourcesMoveUp.TabIndex = 12;
this.buttonAdditionalResourcesMoveUp.Text = "↑";
this.toolTip1.SetToolTip(this.buttonAdditionalResourcesMoveUp, "Move resource up in the list");
this.buttonAdditionalResourcesMoveUp.UseVisualStyleBackColor = true;
this.buttonAdditionalResourcesMoveUp.Click += new System.EventHandler(this.buttonAdditionalResourcesMoveUp_Click);
//
// buttonAdditionalResourcesAdd
//
this.buttonAdditionalResourcesAdd.Location = new System.Drawing.Point(221, 568);
this.buttonAdditionalResourcesAdd.Name = "buttonAdditionalResourcesAdd";
this.buttonAdditionalResourcesAdd.Size = new System.Drawing.Size(26, 26);
this.buttonAdditionalResourcesAdd.TabIndex = 11;
this.buttonAdditionalResourcesAdd.Text = "+";
this.toolTip1.SetToolTip(this.buttonAdditionalResourcesAdd, "Add resource");
this.buttonAdditionalResourcesAdd.UseVisualStyleBackColor = true;
this.buttonAdditionalResourcesAdd.Click += new System.EventHandler(this.buttonAdditionalResourcesAdd_Click);
//
// buttonadditionalResourcesRemove
//
this.buttonadditionalResourcesRemove.Location = new System.Drawing.Point(254, 568);
this.buttonadditionalResourcesRemove.Name = "buttonadditionalResourcesRemove";
this.buttonadditionalResourcesRemove.Size = new System.Drawing.Size(26, 26);
this.buttonadditionalResourcesRemove.TabIndex = 10;
this.buttonadditionalResourcesRemove.Text = "-";
this.toolTip1.SetToolTip(this.buttonadditionalResourcesRemove, "Remove resource");
this.buttonadditionalResourcesRemove.UseVisualStyleBackColor = true;
this.buttonadditionalResourcesRemove.Click += new System.EventHandler(this.buttonadditionalResourcesRemove_Click);
//
// groupBoxAdditionalResourceDetails
//
this.groupBoxAdditionalResourceDetails.Controls.Add(this.UrlFilterGroupBox);
this.groupBoxAdditionalResourceDetails.Controls.Add(this.groupBox3);
this.groupBoxAdditionalResourceDetails.Controls.Add(this.groupBox2);
this.groupBoxAdditionalResourceDetails.Controls.Add(this.groupBox1);
this.groupBoxAdditionalResourceDetails.Controls.Add(this.checkBoxAdditionalResourceActive);
this.groupBoxAdditionalResourceDetails.Location = new System.Drawing.Point(285, 3);
this.groupBoxAdditionalResourceDetails.Name = "groupBoxAdditionalResourceDetails";
this.groupBoxAdditionalResourceDetails.Size = new System.Drawing.Size(932, 591);
this.groupBoxAdditionalResourceDetails.TabIndex = 9;
this.groupBoxAdditionalResourceDetails.TabStop = false;
this.groupBoxAdditionalResourceDetails.Text = "Selected Resource";
//
// UrlFilterGroupBox
//
this.UrlFilterGroupBox.Location = new System.Drawing.Point(9, 337);
this.UrlFilterGroupBox.Margin = new System.Windows.Forms.Padding(2);
this.UrlFilterGroupBox.Name = "UrlFilterGroupBox";
this.UrlFilterGroupBox.Padding = new System.Windows.Forms.Padding(2);
this.UrlFilterGroupBox.Size = new System.Drawing.Size(918, 249);
this.UrlFilterGroupBox.TabIndex = 34;
this.UrlFilterGroupBox.TabStop = false;
this.UrlFilterGroupBox.Text = "URL Filter";
//
// groupBox3
//
this.groupBox3.Controls.Add(this.checkBoxShowButton);
this.groupBox3.Controls.Add(this.checkBoxAdditionalResourceAutoOpen);
this.groupBox3.Controls.Add(this.textBoxLinkURL);
this.groupBox3.Controls.Add(this.label5);
this.groupBox3.Controls.Add(this.comboBoxModifiers);
this.groupBox3.Controls.Add(this.textBoxKey);
this.groupBox3.Controls.Add(this.label7);
this.groupBox3.Controls.Add(this.label6);
this.groupBox3.Controls.Add(this.label8);
this.groupBox3.Controls.Add(this.textBoxRefererFilter);
this.groupBox3.Location = new System.Drawing.Point(439, 38);
this.groupBox3.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Padding = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.groupBox3.Size = new System.Drawing.Size(484, 127);
this.groupBox3.TabIndex = 33;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "Activation";
//
// checkBoxShowButton
//
this.checkBoxShowButton.AutoSize = true;
this.checkBoxShowButton.Location = new System.Drawing.Point(172, 16);
this.checkBoxShowButton.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxShowButton.Name = "checkBoxShowButton";
this.checkBoxShowButton.Size = new System.Drawing.Size(102, 17);
this.checkBoxShowButton.TabIndex = 21;
this.checkBoxShowButton.Text = "Show button (B)";
this.toolTip1.SetToolTip(this.checkBoxShowButton, "Shows the icon for the resource or its pop-up menu entry. If you\'re using a link " +
"URL to open the resource, you might not want users to be able to manually open t" +
"he resource.");
this.checkBoxShowButton.UseVisualStyleBackColor = true;
this.checkBoxShowButton.CheckedChanged += new System.EventHandler(this.checkBoxShowButton_CheckedChanged);
//
// checkBoxAdditionalResourceAutoOpen
//
this.checkBoxAdditionalResourceAutoOpen.AutoSize = true;
this.checkBoxAdditionalResourceAutoOpen.Location = new System.Drawing.Point(77, 16);
this.checkBoxAdditionalResourceAutoOpen.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxAdditionalResourceAutoOpen.Name = "checkBoxAdditionalResourceAutoOpen";
this.checkBoxAdditionalResourceAutoOpen.Size = new System.Drawing.Size(91, 17);
this.checkBoxAdditionalResourceAutoOpen.TabIndex = 5;
this.checkBoxAdditionalResourceAutoOpen.Text = "Auto open (A)";
this.toolTip1.SetToolTip(this.checkBoxAdditionalResourceAutoOpen, "SEB opens the resource after starting automatically.");
this.checkBoxAdditionalResourceAutoOpen.UseVisualStyleBackColor = true;
this.checkBoxAdditionalResourceAutoOpen.CheckedChanged += new System.EventHandler(this.checkBoxAdditionalResourceAutoOpen_CheckedChanged);
//
// textBoxLinkURL
//
this.textBoxLinkURL.Location = new System.Drawing.Point(77, 38);
this.textBoxLinkURL.Name = "textBoxLinkURL";
this.textBoxLinkURL.Size = new System.Drawing.Size(403, 20);
this.textBoxLinkURL.TabIndex = 19;
this.textBoxLinkURL.TextChanged += new System.EventHandler(this.textBoxLinkURL_TextChanged);
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(26, 40);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(49, 13);
this.label5.TabIndex = 20;
this.label5.Text = "LinkURL";
//
// comboBoxModifiers
//
this.comboBoxModifiers.FormattingEnabled = true;
this.comboBoxModifiers.Items.AddRange(new object[] {
"control",
"alt",
"control + alt"});
this.comboBoxModifiers.Location = new System.Drawing.Point(158, 90);
this.comboBoxModifiers.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.comboBoxModifiers.Name = "comboBoxModifiers";
this.comboBoxModifiers.Size = new System.Drawing.Size(92, 21);
this.comboBoxModifiers.TabIndex = 27;
this.toolTip1.SetToolTip(this.comboBoxModifiers, "This modifier key has to be pressed together with the key.");
this.comboBoxModifiers.SelectedIndexChanged += new System.EventHandler(this.comboBoxModifiers_SelectedIndexChanged);
//
// textBoxKey
//
this.textBoxKey.Location = new System.Drawing.Point(77, 90);
this.textBoxKey.MaxLength = 1;
this.textBoxKey.Name = "textBoxKey";
this.textBoxKey.Size = new System.Drawing.Size(23, 20);
this.textBoxKey.TabIndex = 25;
this.toolTip1.SetToolTip(this.textBoxKey, "This key shortcut can be used to open the resource.");
this.textBoxKey.TextChanged += new System.EventHandler(this.textBoxKey_TextChanged);
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(47, 92);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(25, 13);
this.label7.TabIndex = 26;
this.label7.Text = "Key";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(5, 65);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(67, 13);
this.label6.TabIndex = 23;
this.label6.Text = "Referrer filter";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(104, 92);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(49, 13);
this.label8.TabIndex = 26;
this.label8.Text = "Modifiers";
//
// textBoxRefererFilter
//
this.textBoxRefererFilter.Location = new System.Drawing.Point(77, 62);
this.textBoxRefererFilter.Name = "textBoxRefererFilter";
this.textBoxRefererFilter.Size = new System.Drawing.Size(403, 20);
this.textBoxRefererFilter.TabIndex = 22;
this.toolTip1.SetToolTip(this.textBoxRefererFilter, "The activation link URL works only on a web page with this referrer filter URL. Y" +
"ou can also use the \'*\' wildcard character in this referrer filter.");
this.textBoxRefererFilter.TextChanged += new System.EventHandler(this.textBoxRefererFilter_TextChanged);
//
// groupBox2
//
this.groupBox2.Controls.Add(this.textBoxConfirmBoxText);
this.groupBox2.Controls.Add(this.checkBoxConfirm);
this.groupBox2.Controls.Add(this.label10);
this.groupBox2.Controls.Add(this.labelAdditionalResourcesFilename);
this.groupBox2.Controls.Add(this.checkBoxResetSession);
this.groupBox2.Controls.Add(this.comboBoxAdditionalResourcesChooseFileToLaunch);
this.groupBox2.Controls.Add(this.buttonAdditionalResourcesChooseEmbeddedFolder);
this.groupBox2.Controls.Add(this.labelAdditionalResourceUrl);
this.groupBox2.Controls.Add(this.labelAdditionalResourcesResourceDataLaunchWith);
this.groupBox2.Controls.Add(this.textBoxAdditionalResourceUrl);
this.groupBox2.Controls.Add(this.comboBoxAdditionalResourcesResourceDataLauncher);
this.groupBox2.Controls.Add(this.buttonAdditionalResourceRemoveResourceData);
this.groupBox2.Controls.Add(this.label1);
this.groupBox2.Controls.Add(this.buttonAdditionalResourceEmbededResourceOpen);
this.groupBox2.Controls.Add(this.label2);
this.groupBox2.Controls.Add(this.buttonAdditionalResourceChooseEmbededResource);
this.groupBox2.Location = new System.Drawing.Point(9, 165);
this.groupBox2.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Padding = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.groupBox2.Size = new System.Drawing.Size(918, 167);
this.groupBox2.TabIndex = 32;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Behavior";
//
// textBoxConfirmBoxText
//
this.textBoxConfirmBoxText.Location = new System.Drawing.Point(119, 97);
this.textBoxConfirmBoxText.Name = "textBoxConfirmBoxText";
this.textBoxConfirmBoxText.Size = new System.Drawing.Size(301, 20);
this.textBoxConfirmBoxText.TabIndex = 29;
this.toolTip1.SetToolTip(this.textBoxConfirmBoxText, "Optional custom confirm text");
this.textBoxConfirmBoxText.TextChanged += new System.EventHandler(this.textBoxConfirmBoxText_TextChanged);
//
// checkBoxConfirm
//
this.checkBoxConfirm.AutoSize = true;
this.checkBoxConfirm.Location = new System.Drawing.Point(30, 67);
this.checkBoxConfirm.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxConfirm.Name = "checkBoxConfirm";
this.checkBoxConfirm.Size = new System.Drawing.Size(110, 17);
this.checkBoxConfirm.TabIndex = 28;
this.checkBoxConfirm.Text = "Show confirm box";
this.toolTip1.SetToolTip(this.checkBoxConfirm, "Before opening the resource, the user has to confirm this in a message box.");
this.checkBoxConfirm.UseVisualStyleBackColor = true;
this.checkBoxConfirm.CheckedChanged += new System.EventHandler(this.checkBoxConfirm_CheckedChanged);
//
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(27, 99);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(82, 13);
this.label10.TabIndex = 30;
this.label10.Text = "Confirm box text";
this.toolTip1.SetToolTip(this.label10, "Custom text for the confirm message box.");
//
// labelAdditionalResourcesFilename
//
this.labelAdditionalResourcesFilename.AutoSize = true;
this.labelAdditionalResourcesFilename.Location = new System.Drawing.Point(503, 62);
this.labelAdditionalResourcesFilename.Name = "labelAdditionalResourcesFilename";
this.labelAdditionalResourcesFilename.Size = new System.Drawing.Size(70, 26);
this.labelAdditionalResourcesFilename.TabIndex = 18;
this.labelAdditionalResourcesFilename.Text = "Filename / \r\nFile to launch";
//
// checkBoxResetSession
//
this.checkBoxResetSession.AutoSize = true;
this.checkBoxResetSession.Location = new System.Drawing.Point(30, 128);
this.checkBoxResetSession.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxResetSession.Name = "checkBoxResetSession";
this.checkBoxResetSession.Size = new System.Drawing.Size(132, 17);
this.checkBoxResetSession.TabIndex = 24;
this.checkBoxResetSession.Text = "Reset browser session";
this.toolTip1.SetToolTip(this.checkBoxResetSession, "When opening the resource, the browser session is reset, which for example logs o" +
"ur users.");
this.checkBoxResetSession.UseVisualStyleBackColor = true;
this.checkBoxResetSession.CheckedChanged += new System.EventHandler(this.checkBoxResetSession_CheckedChanged);
//
// comboBoxAdditionalResourcesChooseFileToLaunch
//
this.comboBoxAdditionalResourcesChooseFileToLaunch.FormattingEnabled = true;
this.comboBoxAdditionalResourcesChooseFileToLaunch.Location = new System.Drawing.Point(578, 66);
this.comboBoxAdditionalResourcesChooseFileToLaunch.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.comboBoxAdditionalResourcesChooseFileToLaunch.Name = "comboBoxAdditionalResourcesChooseFileToLaunch";
this.comboBoxAdditionalResourcesChooseFileToLaunch.Size = new System.Drawing.Size(331, 21);
this.comboBoxAdditionalResourcesChooseFileToLaunch.TabIndex = 17;
this.toolTip1.SetToolTip(this.comboBoxAdditionalResourcesChooseFileToLaunch, resources.GetString("comboBoxAdditionalResourcesChooseFileToLaunch.ToolTip"));
this.comboBoxAdditionalResourcesChooseFileToLaunch.SelectedIndexChanged += new System.EventHandler(this.comboBoxAdditionalResourcesChooseFileToLaunch_SelectedIndexChanged);
//
// buttonAdditionalResourcesChooseEmbeddedFolder
//
this.buttonAdditionalResourcesChooseEmbeddedFolder.Location = new System.Drawing.Point(634, 21);
this.buttonAdditionalResourcesChooseEmbeddedFolder.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.buttonAdditionalResourcesChooseEmbeddedFolder.Name = "buttonAdditionalResourcesChooseEmbeddedFolder";
this.buttonAdditionalResourcesChooseEmbeddedFolder.Size = new System.Drawing.Size(100, 25);
this.buttonAdditionalResourcesChooseEmbeddedFolder.TabIndex = 16;
this.buttonAdditionalResourcesChooseEmbeddedFolder.Text = "Choose Folder";
this.toolTip1.SetToolTip(this.buttonAdditionalResourcesChooseEmbeddedFolder, resources.GetString("buttonAdditionalResourcesChooseEmbeddedFolder.ToolTip"));
this.buttonAdditionalResourcesChooseEmbeddedFolder.UseVisualStyleBackColor = true;
this.buttonAdditionalResourcesChooseEmbeddedFolder.Click += new System.EventHandler(this.buttonAdditionalResourcesChooseEmbeddedFolder_Click);
//
// labelAdditionalResourceUrl
//
this.labelAdditionalResourceUrl.AutoSize = true;
this.labelAdditionalResourceUrl.Location = new System.Drawing.Point(25, 27);
this.labelAdditionalResourceUrl.Name = "labelAdditionalResourceUrl";
this.labelAdditionalResourceUrl.Size = new System.Drawing.Size(46, 13);
this.labelAdditionalResourceUrl.TabIndex = 4;
this.labelAdditionalResourceUrl.Text = "URL (U)";
//
// labelAdditionalResourcesResourceDataLaunchWith
//
this.labelAdditionalResourcesResourceDataLaunchWith.AutoSize = true;
this.labelAdditionalResourcesResourceDataLaunchWith.Location = new System.Drawing.Point(503, 99);
this.labelAdditionalResourcesResourceDataLaunchWith.Name = "labelAdditionalResourcesResourceDataLaunchWith";
this.labelAdditionalResourcesResourceDataLaunchWith.Size = new System.Drawing.Size(68, 13);
this.labelAdditionalResourcesResourceDataLaunchWith.TabIndex = 12;
this.labelAdditionalResourcesResourceDataLaunchWith.Text = "Launch with:";
//
// textBoxAdditionalResourceUrl
//
this.textBoxAdditionalResourceUrl.Location = new System.Drawing.Point(77, 25);
this.textBoxAdditionalResourceUrl.Name = "textBoxAdditionalResourceUrl";
this.textBoxAdditionalResourceUrl.Size = new System.Drawing.Size(343, 20);
this.textBoxAdditionalResourceUrl.TabIndex = 3;
this.toolTip1.SetToolTip(this.textBoxAdditionalResourceUrl, "Enter the URL of an external resource here. SEB will create a matching URL filter" +
" rule (see below) and activate URL filtering in the Network / Filter Pane.");
this.textBoxAdditionalResourceUrl.TextChanged += new System.EventHandler(this.textBoxAdditionalResourceUrl_TextChanged);
this.textBoxAdditionalResourceUrl.Leave += new System.EventHandler(this.textBoxAdditionalResourceUrl_Leave);
//
// comboBoxAdditionalResourcesResourceDataLauncher
//
this.comboBoxAdditionalResourcesResourceDataLauncher.FormattingEnabled = true;
this.comboBoxAdditionalResourcesResourceDataLauncher.Location = new System.Drawing.Point(578, 96);
this.comboBoxAdditionalResourcesResourceDataLauncher.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.comboBoxAdditionalResourcesResourceDataLauncher.Name = "comboBoxAdditionalResourcesResourceDataLauncher";
this.comboBoxAdditionalResourcesResourceDataLauncher.Size = new System.Drawing.Size(331, 21);
this.comboBoxAdditionalResourcesResourceDataLauncher.TabIndex = 11;
this.toolTip1.SetToolTip(this.comboBoxAdditionalResourcesResourceDataLauncher, resources.GetString("comboBoxAdditionalResourcesResourceDataLauncher.ToolTip"));
this.comboBoxAdditionalResourcesResourceDataLauncher.SelectedIndexChanged += new System.EventHandler(this.comboBoxAdditionalResourcesResourceDataLauncher_SelectedIndexChanged);
//
// buttonAdditionalResourceRemoveResourceData
//
this.buttonAdditionalResourceRemoveResourceData.Location = new System.Drawing.Point(644, 128);
this.buttonAdditionalResourceRemoveResourceData.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.buttonAdditionalResourceRemoveResourceData.Name = "buttonAdditionalResourceRemoveResourceData";
this.buttonAdditionalResourceRemoveResourceData.Size = new System.Drawing.Size(56, 25);
this.buttonAdditionalResourceRemoveResourceData.TabIndex = 10;
this.buttonAdditionalResourceRemoveResourceData.Text = "Remove";
this.buttonAdditionalResourceRemoveResourceData.UseVisualStyleBackColor = true;
this.buttonAdditionalResourceRemoveResourceData.Click += new System.EventHandler(this.buttonAdditionalResourceRemoveResourceData_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(431, 18);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(69, 26);
this.label1.TabIndex = 6;
this.label1.Text = "Embedded\r\nResource (E)";
this.label1.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// buttonAdditionalResourceEmbededResourceOpen
//
this.buttonAdditionalResourceEmbededResourceOpen.Location = new System.Drawing.Point(578, 128);
this.buttonAdditionalResourceEmbededResourceOpen.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.buttonAdditionalResourceEmbededResourceOpen.Name = "buttonAdditionalResourceEmbededResourceOpen";
this.buttonAdditionalResourceEmbededResourceOpen.Size = new System.Drawing.Size(56, 25);
this.buttonAdditionalResourceEmbededResourceOpen.TabIndex = 9;
this.buttonAdditionalResourceEmbededResourceOpen.Text = "Open";
this.buttonAdditionalResourceEmbededResourceOpen.UseVisualStyleBackColor = true;
this.buttonAdditionalResourceEmbededResourceOpen.Click += new System.EventHandler(this.buttonAdditionalResourceEmbededResourceOpen_Click);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(612, 27);
this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(16, 13);
this.label2.TabIndex = 7;
this.label2.Text = "or";
//
// buttonAdditionalResourceChooseEmbededResource
//
this.buttonAdditionalResourceChooseEmbededResource.Location = new System.Drawing.Point(506, 21);
this.buttonAdditionalResourceChooseEmbededResource.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.buttonAdditionalResourceChooseEmbededResource.Name = "buttonAdditionalResourceChooseEmbededResource";
this.buttonAdditionalResourceChooseEmbededResource.Size = new System.Drawing.Size(100, 25);
this.buttonAdditionalResourceChooseEmbededResource.TabIndex = 8;
this.buttonAdditionalResourceChooseEmbededResource.Text = "Choose File";
this.toolTip1.SetToolTip(this.buttonAdditionalResourceChooseEmbededResource, "Select a single file to embed into the SEB Config File. After choosing a file, th" +
"e filename and the setting Lauch with is displayed.");
this.buttonAdditionalResourceChooseEmbededResource.UseVisualStyleBackColor = true;
this.buttonAdditionalResourceChooseEmbededResource.Click += new System.EventHandler(this.buttonAdditionalResourceChooseEmbededResource_Click);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.textBoxAdditionalResourcesTitle);
this.groupBox1.Controls.Add(this.label9);
this.groupBox1.Controls.Add(this.buttonAdditionalResourcesChooseIcon);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.pictureBoxAdditionalResourceIcon);
this.groupBox1.Location = new System.Drawing.Point(9, 38);
this.groupBox1.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(2, 3, 2, 3);
this.groupBox1.Size = new System.Drawing.Size(424, 127);
this.groupBox1.TabIndex = 31;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Appearance";
//
// textBoxAdditionalResourcesTitle
//
this.textBoxAdditionalResourcesTitle.Location = new System.Drawing.Point(41, 20);
this.textBoxAdditionalResourcesTitle.Name = "textBoxAdditionalResourcesTitle";
this.textBoxAdditionalResourcesTitle.Size = new System.Drawing.Size(378, 20);
this.textBoxAdditionalResourcesTitle.TabIndex = 0;
this.toolTip1.SetToolTip(this.textBoxAdditionalResourcesTitle, resources.GetString("textBoxAdditionalResourcesTitle.ToolTip"));
this.textBoxAdditionalResourcesTitle.TextChanged += new System.EventHandler(this.textBoxAdditionalResourcesTitle_TextChanged);
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(8, 22);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(27, 13);
this.label9.TabIndex = 1;
this.label9.Text = "Title";
//
// buttonAdditionalResourcesChooseIcon
//
this.buttonAdditionalResourcesChooseIcon.Location = new System.Drawing.Point(41, 43);
this.buttonAdditionalResourcesChooseIcon.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.buttonAdditionalResourcesChooseIcon.Name = "buttonAdditionalResourcesChooseIcon";
this.buttonAdditionalResourcesChooseIcon.Size = new System.Drawing.Size(100, 25);
this.buttonAdditionalResourcesChooseIcon.TabIndex = 14;
this.buttonAdditionalResourcesChooseIcon.Text = "Choose...";
this.toolTip1.SetToolTip(this.buttonAdditionalResourcesChooseIcon, resources.GetString("buttonAdditionalResourcesChooseIcon.ToolTip"));
this.buttonAdditionalResourcesChooseIcon.UseVisualStyleBackColor = true;
this.buttonAdditionalResourcesChooseIcon.Click += new System.EventHandler(this.buttonAdditionalResourcesChooseIcon_Click);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(11, 49);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(28, 13);
this.label4.TabIndex = 13;
this.label4.Text = "Icon";
//
// pictureBoxAdditionalResourceIcon
//
this.pictureBoxAdditionalResourceIcon.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBoxAdditionalResourceIcon.Location = new System.Drawing.Point(68, 71);
this.pictureBoxAdditionalResourceIcon.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.pictureBoxAdditionalResourceIcon.Name = "pictureBoxAdditionalResourceIcon";
this.pictureBoxAdditionalResourceIcon.Size = new System.Drawing.Size(38, 41);
this.pictureBoxAdditionalResourceIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBoxAdditionalResourceIcon.TabIndex = 15;
this.pictureBoxAdditionalResourceIcon.TabStop = false;
//
// checkBoxAdditionalResourceActive
//
this.checkBoxAdditionalResourceActive.AutoSize = true;
this.checkBoxAdditionalResourceActive.Location = new System.Drawing.Point(16, 17);
this.checkBoxAdditionalResourceActive.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.checkBoxAdditionalResourceActive.Name = "checkBoxAdditionalResourceActive";
this.checkBoxAdditionalResourceActive.Size = new System.Drawing.Size(56, 17);
this.checkBoxAdditionalResourceActive.TabIndex = 2;
this.checkBoxAdditionalResourceActive.Text = "Active";
this.toolTip1.SetToolTip(this.checkBoxAdditionalResourceActive, "By deactivating a resource, it won\'t be displayed, also its child resources (if s" +
"ome exist) won\'t be visible. URL filter rules (see below) defined for the deacti" +
"vated resource also won\'t be active.");
this.checkBoxAdditionalResourceActive.UseVisualStyleBackColor = true;
this.checkBoxAdditionalResourceActive.CheckedChanged += new System.EventHandler(this.checkBoxAdditionalResourceActive_CheckedChanged);
//
// treeViewAdditionalResources
//
this.treeViewAdditionalResources.Location = new System.Drawing.Point(3, 3);
this.treeViewAdditionalResources.Name = "treeViewAdditionalResources";
this.treeViewAdditionalResources.Size = new System.Drawing.Size(276, 559);
this.treeViewAdditionalResources.TabIndex = 8;
this.treeViewAdditionalResources.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewAdditionalResources_AfterSelect);
//
// toolTip1
//
this.toolTip1.AutoPopDelay = 15000;
this.toolTip1.InitialDelay = 500;
this.toolTip1.ReshowDelay = 100;
//
// AdditionalResources
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.buttonAdditionalResourcesAddSubResource);
this.Controls.Add(this.buttonAdditionalResourcesMoveDown);
this.Controls.Add(this.buttonAdditionalResourcesMoveUp);
this.Controls.Add(this.buttonAdditionalResourcesAdd);
this.Controls.Add(this.buttonadditionalResourcesRemove);
this.Controls.Add(this.groupBoxAdditionalResourceDetails);
this.Controls.Add(this.treeViewAdditionalResources);
this.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1);
this.Name = "AdditionalResources";
this.Size = new System.Drawing.Size(1222, 599);
this.groupBoxAdditionalResourceDetails.ResumeLayout(false);
this.groupBoxAdditionalResourceDetails.PerformLayout();
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAdditionalResourceIcon)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button buttonAdditionalResourcesAddSubResource;
private System.Windows.Forms.Button buttonAdditionalResourcesMoveDown;
private System.Windows.Forms.Button buttonAdditionalResourcesMoveUp;
private System.Windows.Forms.Button buttonAdditionalResourcesAdd;
private System.Windows.Forms.Button buttonadditionalResourcesRemove;
private System.Windows.Forms.GroupBox groupBoxAdditionalResourceDetails;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.TextBox textBoxAdditionalResourcesTitle;
private System.Windows.Forms.TreeView treeViewAdditionalResources;
private System.Windows.Forms.CheckBox checkBoxAdditionalResourceActive;
private System.Windows.Forms.Label labelAdditionalResourceUrl;
private System.Windows.Forms.TextBox textBoxAdditionalResourceUrl;
private System.Windows.Forms.CheckBox checkBoxAdditionalResourceAutoOpen;
private System.Windows.Forms.Button buttonAdditionalResourceChooseEmbededResource;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button buttonAdditionalResourceEmbededResourceOpen;
private System.Windows.Forms.Button buttonAdditionalResourceRemoveResourceData;
private System.Windows.Forms.Label labelAdditionalResourcesResourceDataLaunchWith;
private System.Windows.Forms.ComboBox comboBoxAdditionalResourcesResourceDataLauncher;
private System.Windows.Forms.Button buttonAdditionalResourcesChooseIcon;
private System.Windows.Forms.PictureBox pictureBoxAdditionalResourceIcon;
private System.Windows.Forms.Button buttonAdditionalResourcesChooseEmbeddedFolder;
private System.Windows.Forms.ComboBox comboBoxAdditionalResourcesChooseFileToLaunch;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label labelAdditionalResourcesFilename;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox textBoxLinkURL;
private System.Windows.Forms.CheckBox checkBoxShowButton;
private System.Windows.Forms.CheckBox checkBoxResetSession;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox textBoxRefererFilter;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.TextBox textBoxConfirmBoxText;
private System.Windows.Forms.CheckBox checkBoxConfirm;
private System.Windows.Forms.ComboBox comboBoxModifiers;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox textBoxKey;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox UrlFilterGroupBox;
private System.Windows.Forms.ToolTip toolTip1;
}
}

View File

@@ -0,0 +1,811 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using SebWindowsConfig.Entities;
using SebWindowsConfig.Utilities;
using DictObj = System.Collections.Generic.Dictionary<string, object>;
using ListObj = System.Collections.Generic.List<object>;
namespace SebWindowsConfig.Controls
{
public partial class AdditionalResources : UserControl
{
private IFileCompressor _fileCompressor;
private SEBURLFilter urlFilter;
public AdditionalResources()
{
InitializeComponent();
_fileCompressor = new FileCompressor();
groupBoxAdditionalResourceDetails.Visible = false;
SEBSettings.additionalResourcesList = (ListObj)SEBSettings.settingsCurrent[SEBSettings.KeyAdditionalResources];
textBoxAdditionalResourcesTitle.Text = "";
treeViewAdditionalResources.Nodes.Clear();
foreach (DictObj l0Resource in SEBSettings.additionalResourcesList)
{
var l0Node = treeViewAdditionalResources.Nodes.Add(l0Resource[SEBSettings.KeyAdditionalResourcesIdentifier].ToString(), GetDisplayTitle(l0Resource));
foreach (DictObj l1Resource in (ListObj)l0Resource[SEBSettings.KeyAdditionalResources])
{
var l1Node = l0Node.Nodes.Add(l1Resource[SEBSettings.KeyAdditionalResourcesIdentifier].ToString(), GetDisplayTitle(l1Resource));
foreach (DictObj l2Resource in (ListObj)l1Resource[SEBSettings.KeyAdditionalResources])
{
l1Node.Nodes.Add(l2Resource[SEBSettings.KeyAdditionalResourcesIdentifier].ToString(), GetDisplayTitle(l2Resource));
}
}
}
urlFilter = new SEBURLFilter();
}
private string GetDisplayTitle(DictObj resource)
{
return string.Concat(
resource[SEBSettings.KeyAdditionalResourcesTitle],
(bool) resource[SEBSettings.KeyAdditionalResourcesActive] ? "" : " (inactive)",
(bool) resource[SEBSettings.KeyAdditionalResourcesAutoOpen] ? " (A)" : "",
resource.ContainsKey(SEBSettings.KeyAdditionalResourcesShowButton) ? (bool) resource[SEBSettings.KeyAdditionalResourcesShowButton] ? " (B)" : "" : "",
!string.IsNullOrEmpty((string)resource[SEBSettings.KeyAdditionalResourcesResourceData]) ? " (E)" : "",
!string.IsNullOrEmpty((string)resource[SEBSettings.KeyAdditionalResourcesUrl]) ? " (U)" : "");
}
private void buttonAdditionalResourcesAdd_Click(object sender, EventArgs e)
{
// Get the process list
SEBSettings.additionalResourcesList = (ListObj)SEBSettings.settingsCurrent[SEBSettings.KeyAdditionalResources];
int newIndex = treeViewAdditionalResources.Nodes.Count;
SEBSettings.additionalResourcesList.Insert(newIndex, CreateNewResource(newIndex.ToString()));
treeViewAdditionalResources.SelectedNode = treeViewAdditionalResources.Nodes.Add(newIndex.ToString(), "New Resource");
treeViewAdditionalResources.Focus();
}
private DictObj CreateNewResource(string identifier)
{
DictObj resourceData = new DictObj();
resourceData[SEBSettings.KeyAdditionalResourcesIdentifier] = identifier;
return SetDefaultValuesOnResource(resourceData);
}
private void buttonAdditionalResourcesAddSubResource_Click(object sender, EventArgs e)
{
var node = treeViewAdditionalResources.SelectedNode;
if (node == null)
{
MessageBox.Show("No node selected");
return;
}
if (node.Level == 2)
{
MessageBox.Show("Maximum 3 levels");
return;
}
var selectedResource = GetSelectedResource();
ListObj resourceList = (ListObj)selectedResource[SEBSettings.KeyAdditionalResources];
var newIndex = node.Nodes.Count;
if (node.Level == 0)
{
resourceList.Add(CreateNewResource(node.Index + "." + newIndex));
treeViewAdditionalResources.SelectedNode = treeViewAdditionalResources.SelectedNode.Nodes.Add(node.Index + "." + newIndex, "New Resource");
}
if (node.Level == 1)
{
resourceList.Add(CreateNewResource(node.Parent.Index + "." + node.Index + "." + newIndex));
treeViewAdditionalResources.SelectedNode = treeViewAdditionalResources.SelectedNode.Nodes.Add(node.Parent.Index + "." + node.Index + "." + newIndex, "New Resource");
}
treeViewAdditionalResources.Focus();
}
private void treeViewAdditionalResources_AfterSelect(object sender, TreeViewEventArgs e)
{
DictObj selectedResource = GetSelectedResource();
if (selectedResource != null)
{
textBoxAdditionalResourcesTitle.Text = (string)selectedResource[SEBSettings.KeyAdditionalResourcesTitle];
checkBoxAdditionalResourceActive.Checked = (bool)selectedResource[SEBSettings.KeyAdditionalResourcesActive];
textBoxAdditionalResourceUrl.Text = (string)selectedResource[SEBSettings.KeyAdditionalResourcesUrl];
checkBoxAdditionalResourceAutoOpen.Checked = (bool)selectedResource[SEBSettings.KeyAdditionalResourcesAutoOpen];
textBoxLinkURL.Text = (string)selectedResource[SEBSettings.KeyAdditionalResourcesLinkUrl];
textBoxRefererFilter.Text = (string) selectedResource[SEBSettings.KeyAdditionalResourcesRefererFilter];
checkBoxResetSession.Checked = (bool) selectedResource[SEBSettings.KeyAdditionalResourcesResetSession];
textBoxKey.Text = (string) selectedResource[SEBSettings.KeyAdditionalResourcesKey];
checkBoxConfirm.Checked = (bool)selectedResource[SEBSettings.KeyAdditionalResourcesConfirm];
textBoxConfirmBoxText.Text = (string) selectedResource[SEBSettings.KeyAdditionalResourcesConfirmText];
checkBoxShowButton.Checked = (bool) selectedResource[SEBSettings.KeyAdditionalResourcesShowButton];
comboBoxModifiers.SelectedItem = string.IsNullOrEmpty((string) selectedResource[SEBSettings.KeyAdditionalResourcesModifiers]) ? null : (string)selectedResource[SEBSettings.KeyAdditionalResourcesModifiers];
InitializeUrlFilters(selectedResource);
if (!string.IsNullOrEmpty((string)selectedResource[SEBSettings.KeyAdditionalResourcesResourceData]))
{
buttonAdditionalResourceRemoveResourceData.Visible = true;
buttonAdditionalResourceEmbededResourceOpen.Visible = true;
labelAdditionalResourcesResourceDataLaunchWith.Visible = true;
labelAdditionalResourcesFilename.Visible = true;
comboBoxAdditionalResourcesResourceDataLauncher.Visible = true;
textBoxAdditionalResourceUrl.Enabled = false;
comboBoxAdditionalResourcesChooseFileToLaunch.Visible = true;
comboBoxAdditionalResourcesChooseFileToLaunch.Enabled = false;
var indexBefore = (int) selectedResource[SEBSettings.KeyAdditionalResourcesResourceDataLauncher];
comboBoxAdditionalResourcesResourceDataLauncher.DataSource = GetLaunchers();
comboBoxAdditionalResourcesResourceDataLauncher.SelectedIndex = indexBefore;
comboBoxAdditionalResourcesChooseFileToLaunch.Text =
selectedResource[SEBSettings.KeyAdditionalResourcesResourceDataFilename].ToString();
}
else
{
buttonAdditionalResourceRemoveResourceData.Visible = false;
buttonAdditionalResourceEmbededResourceOpen.Visible = false;
labelAdditionalResourcesResourceDataLaunchWith.Visible = false;
labelAdditionalResourcesFilename.Visible = false;
comboBoxAdditionalResourcesResourceDataLauncher.Visible = false;
textBoxAdditionalResourceUrl.Enabled = true;
comboBoxAdditionalResourcesChooseFileToLaunch.Visible = false;
}
if (!string.IsNullOrEmpty((string) selectedResource[SEBSettings.KeyAdditionalResourcesUrl]))
{
buttonAdditionalResourceChooseEmbededResource.Enabled = false;
}
else
{
buttonAdditionalResourceChooseEmbededResource.Enabled = true;
}
if (((ListObj) selectedResource[SEBSettings.KeyAdditionalResourcesResourceIcons]).Count > 0)
{
var icon =
(DictObj) ((ListObj) selectedResource[SEBSettings.KeyAdditionalResourcesResourceIcons])[0];
var memoryStream =
_fileCompressor.DeCompressAndDecode(
(string) icon[SEBSettings.KeyAdditionalResourcesResourceIconsIconData]);
var image = Image.FromStream(memoryStream);
pictureBoxAdditionalResourceIcon.Image = image;
}
else
{
pictureBoxAdditionalResourceIcon.Image = null;
}
}
groupBoxAdditionalResourceDetails.Visible = selectedResource != null;
}
public void InitializeUrlFilters(DictObj resourceConfig)
{
var filterControl = new FilterRuleControl();
if (resourceConfig.ContainsKey(SEBSettings.KeyURLFilterRules))
{
foreach (DictObj config in resourceConfig[SEBSettings.KeyURLFilterRules] as ListObj)
{
var rule = FilterRule.FromConfig(config);
filterControl.AddRule(rule);
}
}
filterControl.Dock = DockStyle.Fill;
filterControl.DataChanged += (rules) =>
{
var configs = new ListObj();
foreach (var rule in rules)
{
var config = FilterRule.ToConfig(rule);
configs.Add(config);
}
resourceConfig[SEBSettings.KeyURLFilterRules] = configs;
};
UrlFilterGroupBox.Controls.Clear();
UrlFilterGroupBox.Controls.Add(filterControl);
}
private List<string> GetLaunchers()
{
var res = new List<string>();
foreach (DictObj permittedProcess in SEBSettings.permittedProcessList)
{
res.Add((string)permittedProcess[SEBSettings.KeyTitle]);
}
return res;
}
private DictObj GetSelectedResource()
{
var node = treeViewAdditionalResources.SelectedNode;
if (node.Level == 0)
{
return SetDefaultValuesOnResource((DictObj)SEBSettings.additionalResourcesList[node.Index]);
}
else if (node.Level == 1)
{
DictObj rootResource = (DictObj)SEBSettings.additionalResourcesList[node.Parent.Index];
ListObj level1List = (ListObj)rootResource[SEBSettings.KeyAdditionalResources];
return SetDefaultValuesOnResource((DictObj)level1List[node.Index]);
}
else if (node.Level == 2)
{
DictObj rootResource = (DictObj)SEBSettings.additionalResourcesList[treeViewAdditionalResources.SelectedNode.Parent.Parent.Index];
ListObj level1List = (ListObj)rootResource[SEBSettings.KeyAdditionalResources];
DictObj level1Resource = (DictObj)level1List[treeViewAdditionalResources.SelectedNode.Parent.Index];
ListObj level2List = (ListObj)level1Resource[SEBSettings.KeyAdditionalResources];
return SetDefaultValuesOnResource((DictObj)level2List[node.Index]);
}
return null;
}
private DictObj SetDefaultValuesOnResource(DictObj resourceData)
{
if(!resourceData.ContainsKey(SEBSettings.KeyAdditionalResources))
resourceData[SEBSettings.KeyAdditionalResources] = new ListObj();
if(!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesActive))
resourceData[SEBSettings.KeyAdditionalResourcesActive] = true;
if(!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesAutoOpen))
resourceData[SEBSettings.KeyAdditionalResourcesAutoOpen] = false;
if(!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesIdentifier))
resourceData[SEBSettings.KeyAdditionalResourcesIdentifier] = "";
if(!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesResourceIcons))
resourceData[SEBSettings.KeyAdditionalResourcesResourceIcons] = new ListObj();
if(!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesTitle))
resourceData[SEBSettings.KeyAdditionalResourcesTitle] = "New Resource";
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesUrl))
resourceData[SEBSettings.KeyAdditionalResourcesUrl] = "";
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesURLFilterRules))
resourceData[SEBSettings.KeyAdditionalResourcesURLFilterRules] = new ListObj();
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesResourceData))
resourceData[SEBSettings.KeyAdditionalResourcesResourceData] = "";
if(!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesResourceDataFilename))
resourceData[SEBSettings.KeyAdditionalResourcesResourceDataFilename] = "";
if(!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesResourceDataLauncher))
resourceData[SEBSettings.KeyAdditionalResourcesResourceDataLauncher] = 0;
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesLinkUrl))
resourceData[SEBSettings.KeyAdditionalResourcesLinkUrl] = "";
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesRefererFilter))
resourceData[SEBSettings.KeyAdditionalResourcesRefererFilter] = "";
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesResetSession))
resourceData[SEBSettings.KeyAdditionalResourcesResetSession] = false;
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesKey))
resourceData[SEBSettings.KeyAdditionalResourcesKey] = "";
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesModifiers))
resourceData[SEBSettings.KeyAdditionalResourcesModifiers] = "";
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesConfirm))
resourceData[SEBSettings.KeyAdditionalResourcesConfirm] = false;
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesConfirmText))
resourceData[SEBSettings.KeyAdditionalResourcesConfirmText] = "";
if (!resourceData.ContainsKey(SEBSettings.KeyAdditionalResourcesShowButton))
resourceData[SEBSettings.KeyAdditionalResourcesShowButton] = true;
return resourceData;
}
private void UpdateAdditionalResourceIdentifiers()
{
foreach (TreeNode l0Node in treeViewAdditionalResources.Nodes)
{
DictObj l0resource = (DictObj)SEBSettings.additionalResourcesList[l0Node.Index];
l0resource[SEBSettings.KeyAdditionalResourcesIdentifier] = l0Node.Index.ToString();
foreach (TreeNode l1Node in l0Node.Nodes)
{
ListObj l1resources = (ListObj)l0resource[SEBSettings.KeyAdditionalResources];
DictObj l1resource = (DictObj) l1resources[l1Node.Index];
l1resource[SEBSettings.KeyAdditionalResourcesIdentifier] = l0Node.Index + "." + l1Node.Index;
foreach (TreeNode l2Node in l1Node.Nodes)
{
ListObj l2resources = (ListObj)l1resource[SEBSettings.KeyAdditionalResources];
DictObj l2resource = (DictObj)l2resources[l2Node.Index];
l2resource[SEBSettings.KeyAdditionalResourcesIdentifier] = l0Node.Index + "." + l1Node.Index + "." + l2Node.Index;
}
}
}
}
private void buttonAdditionalResourcesMoveUp_Click(object sender, EventArgs e)
{
var nodeToMove = treeViewAdditionalResources.SelectedNode;
if (nodeToMove.Index == 0)
return;
var oldIndex = nodeToMove.Index;
var parent = treeViewAdditionalResources.SelectedNode.Parent;
if (parent == null)
{
var nodeToMoveDown = treeViewAdditionalResources.Nodes[oldIndex - 1];
treeViewAdditionalResources.Nodes.RemoveAt(oldIndex - 1);
treeViewAdditionalResources.Nodes.Insert(oldIndex, nodeToMoveDown);
DictObj resourceToMoveDown = (DictObj)SEBSettings.additionalResourcesList[oldIndex - 1];
SEBSettings.additionalResourcesList.RemoveAt(oldIndex -1);
SEBSettings.additionalResourcesList.Insert(oldIndex, resourceToMoveDown);
}
else
{
var nodeToMoveDown = parent.Nodes[oldIndex - 1];
parent.Nodes.RemoveAt(oldIndex - 1);
parent.Nodes.Insert(oldIndex, nodeToMoveDown);
DictObj parentResource = new DictObj();
if (parent.Level == 0)
{
parentResource = (DictObj)SEBSettings.additionalResourcesList[parent.Index];
}
if (parent.Level == 1)
{
DictObj l0Resource = (DictObj)SEBSettings.additionalResourcesList[parent.Parent.Index];
ListObj l0ResourcesList = (ListObj)l0Resource[SEBSettings.KeyAdditionalResources];
parentResource = (DictObj)l0ResourcesList[parent.Index];
}
ListObj parentResourceList = (ListObj) parentResource[SEBSettings.KeyAdditionalResources];
DictObj resourceToMoveDown = (DictObj)parentResourceList[oldIndex - 1];
parentResourceList.RemoveAt(oldIndex -1);
parentResourceList.Insert(oldIndex, resourceToMoveDown);
}
UpdateAdditionalResourceIdentifiers();
}
private void buttonAdditionalResourcesMoveDown_Click(object sender, EventArgs e)
{
var nodeToMove = treeViewAdditionalResources.SelectedNode;
var oldIndex = nodeToMove.Index;
var parent = treeViewAdditionalResources.SelectedNode.Parent;
if (parent == null)
{
if (nodeToMove.Index == treeViewAdditionalResources.Nodes.Count -1)
return;
var nodeToMoveUp = treeViewAdditionalResources.Nodes[oldIndex + 1];
treeViewAdditionalResources.Nodes.RemoveAt(oldIndex + 1);
treeViewAdditionalResources.Nodes.Insert(oldIndex, nodeToMoveUp);
DictObj resourceToMoveUp = (DictObj) SEBSettings.additionalResourcesList[oldIndex + 1];
SEBSettings.additionalResourcesList.RemoveAt(oldIndex + 1);
SEBSettings.additionalResourcesList.Insert(oldIndex, resourceToMoveUp);
}
else
{
if (nodeToMove.Index == parent.Nodes.Count -1 )
return;
var nodeToMoveUp = parent.Nodes[nodeToMove.Index + 1];
parent.Nodes.RemoveAt(nodeToMove.Index + 1);
parent.Nodes.Insert(oldIndex, nodeToMoveUp);
DictObj parentResource = new DictObj();
if (parent.Level == 0)
{
parentResource = (DictObj)SEBSettings.additionalResourcesList[parent.Index];
}
if (parent.Level == 1)
{
DictObj l0Resource = (DictObj)SEBSettings.additionalResourcesList[parent.Parent.Index];
ListObj l0ResourcesList = (ListObj)l0Resource[SEBSettings.KeyAdditionalResources];
parentResource = (DictObj)l0ResourcesList[parent.Index];
}
ListObj parentResourceList = (ListObj)parentResource[SEBSettings.KeyAdditionalResources];
DictObj resourceToMoveDown = (DictObj)parentResourceList[oldIndex + 1];
parentResourceList.RemoveAt(oldIndex + 1);
parentResourceList.Insert(oldIndex, resourceToMoveDown);
}
UpdateAdditionalResourceIdentifiers();
}
private void buttonadditionalResourcesRemove_Click(object sender, EventArgs e)
{
var node = treeViewAdditionalResources.SelectedNode;
if (node != null)
{
if (node.Level == 0)
{
SEBSettings.additionalResourcesList.RemoveAt(node.Index);
}
else if (node.Level == 1)
{
DictObj rootResource = (DictObj)SEBSettings.additionalResourcesList[node.Parent.Index];
ListObj level1List = (ListObj)rootResource[SEBSettings.KeyAdditionalResources];
level1List.RemoveAt(node.Index);
}
else if (node.Level == 2)
{
DictObj rootResource = (DictObj)SEBSettings.additionalResourcesList[treeViewAdditionalResources.SelectedNode.Parent.Parent.Index];
ListObj level1List = (ListObj)rootResource[SEBSettings.KeyAdditionalResources];
DictObj level1Resource = (DictObj)level1List[treeViewAdditionalResources.SelectedNode.Parent.Index];
ListObj level2List = (ListObj)level1Resource[SEBSettings.KeyAdditionalResources];
level2List.RemoveAt(node.Index);
}
node.Remove();
UpdateAdditionalResourceIdentifiers();
}
groupBoxAdditionalResourceDetails.Visible = treeViewAdditionalResources.SelectedNode != null;
}
private void checkBoxAdditionalResourceActive_CheckedChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesActive] = checkBoxAdditionalResourceActive.Checked;
treeViewAdditionalResources.SelectedNode.Text = GetDisplayTitle(selectedResource);
}
private void checkBoxAdditionalResourceAutoOpen_CheckedChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesAutoOpen] = checkBoxAdditionalResourceAutoOpen.Checked;
treeViewAdditionalResources.SelectedNode.Text = GetDisplayTitle(selectedResource);
}
private void textBoxAdditionalResourcesTitle_TextChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesTitle] = textBoxAdditionalResourcesTitle.Text;
treeViewAdditionalResources.SelectedNode.Text = GetDisplayTitle(selectedResource);
}
private void textBoxAdditionalResourceUrl_TextChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesUrl] = textBoxAdditionalResourceUrl.Text;
treeViewAdditionalResources.SelectedNode.Text = GetDisplayTitle(selectedResource);
buttonAdditionalResourcesChooseEmbeddedFolder.Enabled =
buttonAdditionalResourceChooseEmbededResource.Enabled = string.IsNullOrEmpty(textBoxAdditionalResourceUrl.Text);
}
private void buttonAdditionalResourceChooseEmbededResource_Click(object sender, EventArgs e)
{
var openFileDialog = new OpenFileDialog
{
CheckFileExists = true,
CheckPathExists = true,
Multiselect = false
};
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
var fileInfo = new FileInfo(openFileDialog.FileName);
var resourceData = _fileCompressor.CompressAndEncodeFile(openFileDialog.FileName);
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesResourceDataFilename] = fileInfo.Name;
selectedResource[SEBSettings.KeyAdditionalResourcesResourceData] = resourceData;
comboBoxAdditionalResourcesChooseFileToLaunch.Visible = true;
comboBoxAdditionalResourcesChooseFileToLaunch.Enabled = false;
comboBoxAdditionalResourcesChooseFileToLaunch.Text = fileInfo.Name;
SetIconFromFile(openFileDialog.FileName);
treeViewAdditionalResources.SelectedNode.Text = GetDisplayTitle(selectedResource);
EmbeddedResourceChosen();
}
catch (OutOfMemoryException)
{
MessageBox.Show("The chosen resource file is too large!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void buttonAdditionalResourcesChooseEmbeddedFolder_Click(object sender, EventArgs e)
{
var chooseFolderDialog = new FolderBrowserDialog
{
ShowNewFolderButton = false,
Description = "Choose a folder to embed, including subdirectories. Afterwards you can select the file to start when the resource is selected"
};
if (chooseFolderDialog.ShowDialog() == DialogResult.OK)
{
try
{
var resourceData = _fileCompressor.CompressAndEncodeDirectory(chooseFolderDialog.SelectedPath, out List<string> containingFilenames);
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesResourceData] = resourceData;
treeViewAdditionalResources.SelectedNode.Text = GetDisplayTitle(selectedResource);
comboBoxAdditionalResourcesChooseFileToLaunch.DataSource = containingFilenames;
comboBoxAdditionalResourcesChooseFileToLaunch.Visible = true;
comboBoxAdditionalResourcesChooseFileToLaunch.Enabled = true;
EmbeddedResourceChosen();
}
catch (OutOfMemoryException)
{
MessageBox.Show("The chosen resource folder is too large!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void SetIconFromUrl(string url)
{
if (!Uri.IsWellFormedUriString(url, UriKind.Absolute))
return;
try
{
var uri = new Uri(textBoxAdditionalResourceUrl.Text);
DictObj selectedResource = GetSelectedResource();
var ic = new DictObj();
ic[SEBSettings.KeyAdditionalResourcesResourceIconsIconData] =
_fileCompressor.CompressAndEncodeFavicon(uri);
ic[SEBSettings.KeyAdditionalResourcesResourceIconsFormat] = "png";
var icons = (ListObj)selectedResource[SEBSettings.KeyAdditionalResourcesResourceIcons];
if (icons.Count > 0)
{
icons[0] = ic;
}
else
{
icons.Add(ic);
}
var memoryStream = _fileCompressor.DeCompressAndDecode((string)ic[SEBSettings.KeyAdditionalResourcesResourceIconsIconData]);
var image = Image.FromStream(memoryStream);
pictureBoxAdditionalResourceIcon.Image = image;
}
catch (Exception ex)
{
Logger.AddError(string.Format("Unable to extract Icon of Url {0}", url), this, ex);
}
}
private void comboBoxAdditionalResourcesChooseFileToLaunch_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBoxAdditionalResourcesChooseFileToLaunch.SelectedItem != null)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesResourceDataFilename] = comboBoxAdditionalResourcesChooseFileToLaunch.SelectedItem;
}
}
private void SetIconFromFile(string filename)
{
if (!File.Exists(filename))
return;
try
{
var icon = Icon.ExtractAssociatedIcon(filename);
if (icon != null)
{
DictObj selectedResource = GetSelectedResource();
var ic = new DictObj();
ic[SEBSettings.KeyAdditionalResourcesResourceIconsIconData] =
_fileCompressor.CompressAndEncodeIcon(icon);
ic[SEBSettings.KeyAdditionalResourcesResourceIconsFormat] = "png";
var icons = (ListObj)selectedResource[SEBSettings.KeyAdditionalResourcesResourceIcons];
if (icons.Count > 0)
{
icons[0] = ic;
}
else
{
icons.Add(ic);
}
var memoryStream = _fileCompressor.DeCompressAndDecode((string)ic[SEBSettings.KeyAdditionalResourcesResourceIconsIconData]);
var image = Image.FromStream(memoryStream);
pictureBoxAdditionalResourceIcon.Image = image;
}
}
catch (Exception ex)
{
Logger.AddError(string.Format("Unable to extract Icon of File {0}",filename),this,ex);
}
}
private void EmbeddedResourceChosen()
{
buttonAdditionalResourceRemoveResourceData.Visible = true;
buttonAdditionalResourceEmbededResourceOpen.Visible = true;
labelAdditionalResourcesResourceDataLaunchWith.Visible = true;
labelAdditionalResourcesFilename.Visible = true;
comboBoxAdditionalResourcesResourceDataLauncher.Visible = true;
textBoxAdditionalResourceUrl.Text = "";
textBoxAdditionalResourceUrl.Enabled = false;
comboBoxAdditionalResourcesResourceDataLauncher.DataSource = GetLaunchers();
}
private void buttonAdditionalResourceEmbededResourceOpen_Click(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
var filename = (string) selectedResource[SEBSettings.KeyAdditionalResourcesResourceDataFilename];
var path =
_fileCompressor.DecompressDecodeAndSaveFile(
(string)selectedResource[SEBSettings.KeyAdditionalResourcesResourceData], filename, selectedResource[SEBSettings.KeyAdditionalResourcesIdentifier].ToString());
Process.Start(path + filename);
}
private void buttonAdditionalResourceRemoveResourceData_Click(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesResourceData] = "";
selectedResource[SEBSettings.KeyAdditionalResourcesResourceIconsIconData] = "";
selectedResource[SEBSettings.KeyAdditionalResourcesResourceDataFilename] = "";
selectedResource[SEBSettings.KeyAdditionalResourcesResourceDataLauncher] = 0;
treeViewAdditionalResources.SelectedNode.Text = GetDisplayTitle(selectedResource);
buttonAdditionalResourceRemoveResourceData.Visible = false;
buttonAdditionalResourceEmbededResourceOpen.Visible = false;
labelAdditionalResourcesResourceDataLaunchWith.Visible = false;
labelAdditionalResourcesFilename.Visible = false;
comboBoxAdditionalResourcesResourceDataLauncher.Visible = false;
comboBoxAdditionalResourcesChooseFileToLaunch.Visible = false;
pictureBoxAdditionalResourceIcon.Image = null;
textBoxAdditionalResourceUrl.Enabled = true;
}
private void comboBoxAdditionalResourcesResourceDataLauncher_SelectedIndexChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
if ((int) selectedResource[SEBSettings.KeyAdditionalResourcesResourceDataLauncher] !=
comboBoxAdditionalResourcesResourceDataLauncher.SelectedIndex)
{
selectedResource[SEBSettings.KeyAdditionalResourcesResourceDataLauncher] =
comboBoxAdditionalResourcesResourceDataLauncher.SelectedIndex;
}
}
private void buttonAdditionalResourcesChooseIcon_Click(object sender, EventArgs e)
{
var openFileDialog = new OpenFileDialog
{
CheckFileExists = true,
CheckPathExists = true,
Multiselect = false,
Filter = "PNG Images|*.png"
};
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
DictObj selectedResource = GetSelectedResource();
var icon = new DictObj();
icon[SEBSettings.KeyAdditionalResourcesResourceIconsIconData] =
_fileCompressor.CompressAndEncodeFile(openFileDialog.FileName);
icon[SEBSettings.KeyAdditionalResourcesResourceIconsFormat] = "png";
var icons = (ListObj)selectedResource[SEBSettings.KeyAdditionalResourcesResourceIcons];
if (icons.Count > 0)
{
icons[0] = icon;
}
else
{
icons.Add(icon);
}
var memoryStream = _fileCompressor.DeCompressAndDecode((string)icon[SEBSettings.KeyAdditionalResourcesResourceIconsIconData]);
var image = Image.FromStream(memoryStream);
pictureBoxAdditionalResourceIcon.Image = image;
}
}
private void textBoxAdditionalResourceUrl_Leave(object sender, EventArgs e)
{
SetIconFromUrl(textBoxAdditionalResourceUrl.Text);
CreateURLFilterRule(textBoxAdditionalResourceUrl.Text);
// Make sure URL filter is enabled and show message box if not
if ((Boolean)SEBSettings.settingsCurrent[SEBSettings.KeyURLFilterEnable] == false)
{
SEBSettings.settingsCurrent[SEBSettings.KeyURLFilterEnable] = true;
MessageBox.Show("URL Filter Enabled", "When adding an external additional resource, an according URL filter must be defined " +
"and URL filtering enabled. You can edit the filter(s) for the resource in its URL Filter list. " +
"You may also have to create filter rules for your exam in Network/Filter settings (SEB internally only creates a rule exactly matching the Start URL). " +
"For full control of displayed content, 'Filter also embedded content' (Network/Filter tab) should be activated as well.", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void CreateURLFilterRule(string resourceURLString)
{
urlFilter.UpdateFilterRules();
// Check if resource URL gets allowed by current filter rules and if not, add a rule for the resource URL
if (Uri.TryCreate(resourceURLString, UriKind.Absolute, out Uri resourceURL))
{
if (urlFilter.TestURLAllowed(resourceURL) != URLFilterRuleActions.allow)
{
// If resource URL is not allowed: Create one using the full resource URL
DictObj selectedResource = GetSelectedResource();
ListObj resourceURLFilterRules;
if (selectedResource.TryGetValue(SEBSettings.KeyURLFilterRules, out object keyURLFilterRulesValue))
{
resourceURLFilterRules = (ListObj)keyURLFilterRulesValue;
} else
{
resourceURLFilterRules = new ListObj();
}
DictObj newURLFilterRule = new DictObj();
newURLFilterRule.Add(SEBSettings.KeyURLFilterRuleAction, (int)URLFilterRuleActions.allow);
newURLFilterRule.Add(SEBSettings.KeyURLFilterRuleActive, true);
newURLFilterRule.Add(SEBSettings.KeyURLFilterRuleExpression, resourceURLString);
newURLFilterRule.Add(SEBSettings.KeyURLFilterRuleRegex, false);
// Add this resource URL allow rule to the URL filters of this additional resource
resourceURLFilterRules.Add(newURLFilterRule);
selectedResource[SEBSettings.KeyURLFilterRules] = resourceURLFilterRules;
// Update UI
InitializeUrlFilters(selectedResource);
}
}
}
private void checkBoxShowButton_CheckedChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesShowButton] = checkBoxShowButton.Checked;
treeViewAdditionalResources.SelectedNode.Text = GetDisplayTitle(selectedResource);
}
private void textBoxLinkURL_TextChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesLinkUrl] = textBoxLinkURL.Text;
}
private void checkBoxResetSession_CheckedChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesResetSession] = checkBoxResetSession.Checked;
}
private void textBoxRefererFilter_TextChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesRefererFilter] = textBoxRefererFilter.Text;
}
private void textBoxKey_TextChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesKey] = textBoxKey.Text;
}
private void comboBoxModifiers_SelectedIndexChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesModifiers] = comboBoxModifiers.SelectedItem;
}
private void checkBoxConfirm_CheckedChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesConfirm] = checkBoxConfirm.Checked;
}
private void textBoxConfirmBoxText_TextChanged(object sender, EventArgs e)
{
DictObj selectedResource = GetSelectedResource();
selectedResource[SEBSettings.KeyAdditionalResourcesConfirmText] = textBoxConfirmBoxText.Text;
}
}
}

View File

@@ -0,0 +1,138 @@
<?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>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="comboBoxAdditionalResourcesChooseFileToLaunch.ToolTip" xml:space="preserve">
<value>Lists all files in the embedded folder (and its subfolders), you have to select one (for example an index.html file) which then is loaded by SEB or the permitted third party application selected in the Lauch with popup list.</value>
</data>
<data name="buttonAdditionalResourcesChooseEmbeddedFolder.ToolTip" xml:space="preserve">
<value>Select a folder to be embedded into the SEB Config File. After choosing a folder, a setting called Filename/File to launch and the setting Lauch with is displayed. In the File to launch popup list, all files in the embedded folder (and its subfolders) are listed, you have to select one which is opened first.</value>
</data>
<data name="comboBoxAdditionalResourcesResourceDataLauncher.ToolTip" xml:space="preserve">
<value>Select SEB (the internal SEB browser will be used to display the resource, this has to have a document type which can be displayed by the browser) or one of the permitted third party applications if there are some defined in the Permitted Processes Pane.</value>
</data>
<data name="textBoxAdditionalResourcesTitle.ToolTip" xml:space="preserve">
<value>Will be displayed either as a tool tip when hovering over the additional resource icon in the SEB task bar or as a menu entry in the additional resource popup menu if the resource is placed on the second or third hierarchy level.</value>
</data>
<data name="buttonAdditionalResourcesChooseIcon.ToolTip" xml:space="preserve">
<value>Select a image file used as an icon for the resource. If you define an external resource using its URL (see section Behavior), then the SEB Config Tool tries to load the Favicon of the website at that URL and uses it as the icon for the resource.</value>
</data>
</root>

View File

@@ -0,0 +1,174 @@
namespace SebWindowsConfig.Controls
{
partial class FilterRuleControl
{
/// <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.components = new System.ComponentModel.Container();
this.SplitContainer = new System.Windows.Forms.SplitContainer();
this.RuleDataGridView = new System.Windows.Forms.DataGridView();
this.ActiveColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.RegexColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.ExpressionColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ActionColumn = new System.Windows.Forms.DataGridViewComboBoxColumn();
this.RemoveButton = new System.Windows.Forms.Button();
this.AddButton = new System.Windows.Forms.Button();
this.ToolTip = new System.Windows.Forms.ToolTip(this.components);
((System.ComponentModel.ISupportInitialize)(this.SplitContainer)).BeginInit();
this.SplitContainer.Panel1.SuspendLayout();
this.SplitContainer.Panel2.SuspendLayout();
this.SplitContainer.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.RuleDataGridView)).BeginInit();
this.SuspendLayout();
//
// SplitContainer
//
this.SplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.SplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.SplitContainer.IsSplitterFixed = true;
this.SplitContainer.Location = new System.Drawing.Point(0, 0);
this.SplitContainer.Name = "SplitContainer";
this.SplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// SplitContainer.Panel1
//
this.SplitContainer.Panel1.Controls.Add(this.RuleDataGridView);
//
// SplitContainer.Panel2
//
this.SplitContainer.Panel2.Controls.Add(this.RemoveButton);
this.SplitContainer.Panel2.Controls.Add(this.AddButton);
this.SplitContainer.Panel2MinSize = 50;
this.SplitContainer.Size = new System.Drawing.Size(940, 671);
this.SplitContainer.SplitterDistance = 617;
this.SplitContainer.TabIndex = 0;
//
// RuleDataGridView
//
this.RuleDataGridView.AllowUserToAddRows = false;
this.RuleDataGridView.AllowUserToResizeRows = false;
this.RuleDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.RuleDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.ActiveColumn,
this.RegexColumn,
this.ExpressionColumn,
this.ActionColumn});
this.RuleDataGridView.Dock = System.Windows.Forms.DockStyle.Fill;
this.RuleDataGridView.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter;
this.RuleDataGridView.Location = new System.Drawing.Point(0, 0);
this.RuleDataGridView.Name = "RuleDataGridView";
this.RuleDataGridView.Size = new System.Drawing.Size(940, 617);
this.RuleDataGridView.TabIndex = 0;
this.RuleDataGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.RuleDataGridView_CellContentClick);
this.RuleDataGridView.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.RuleDataGridView_CellValueChanged);
this.RuleDataGridView.CurrentCellDirtyStateChanged += new System.EventHandler(this.RuleDataGridView_CurrentCellDirtyStateChanged);
this.RuleDataGridView.RowsAdded += new System.Windows.Forms.DataGridViewRowsAddedEventHandler(this.RuleDataGridView_RowsAdded);
this.RuleDataGridView.RowsRemoved += new System.Windows.Forms.DataGridViewRowsRemovedEventHandler(this.RuleDataGridView_RowsRemoved);
this.RuleDataGridView.RowValidating += new System.Windows.Forms.DataGridViewCellCancelEventHandler(this.RuleDataGridView_RowValidating);
//
// ActiveColumn
//
this.ActiveColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.ColumnHeader;
this.ActiveColumn.HeaderText = "Active";
this.ActiveColumn.Name = "ActiveColumn";
this.ActiveColumn.Width = 58;
//
// RegexColumn
//
this.RegexColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.ColumnHeader;
this.RegexColumn.HeaderText = "Regex";
this.RegexColumn.Name = "RegexColumn";
this.RegexColumn.Width = 61;
//
// ExpressionColumn
//
this.ExpressionColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.ExpressionColumn.FillWeight = 80F;
this.ExpressionColumn.HeaderText = "Expression";
this.ExpressionColumn.Name = "ExpressionColumn";
//
// ActionColumn
//
this.ActionColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.ActionColumn.FillWeight = 20F;
this.ActionColumn.HeaderText = "Action";
this.ActionColumn.Items.AddRange(new object[] {
"Allow",
"Block"});
this.ActionColumn.Name = "ActionColumn";
//
// RemoveButton
//
this.RemoveButton.Location = new System.Drawing.Point(57, 3);
this.RemoveButton.Name = "RemoveButton";
this.RemoveButton.Size = new System.Drawing.Size(48, 45);
this.RemoveButton.TabIndex = 1;
this.RemoveButton.Text = "-";
this.ToolTip.SetToolTip(this.RemoveButton, "Removes all selected rules");
this.RemoveButton.UseVisualStyleBackColor = true;
this.RemoveButton.Click += new System.EventHandler(this.RemoveButton_Click);
//
// AddButton
//
this.AddButton.Location = new System.Drawing.Point(3, 3);
this.AddButton.Name = "AddButton";
this.AddButton.Size = new System.Drawing.Size(48, 44);
this.AddButton.TabIndex = 0;
this.AddButton.Text = "+";
this.ToolTip.SetToolTip(this.AddButton, "Adds a new rule");
this.AddButton.UseVisualStyleBackColor = true;
this.AddButton.Click += new System.EventHandler(this.AddButton_Click);
//
// FilterRuleControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.SplitContainer);
this.Name = "FilterRuleControl";
this.Size = new System.Drawing.Size(940, 671);
this.SplitContainer.Panel1.ResumeLayout(false);
this.SplitContainer.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.SplitContainer)).EndInit();
this.SplitContainer.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.RuleDataGridView)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer SplitContainer;
private System.Windows.Forms.DataGridView RuleDataGridView;
private System.Windows.Forms.DataGridViewCheckBoxColumn ActiveColumn;
private System.Windows.Forms.DataGridViewCheckBoxColumn RegexColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn ExpressionColumn;
private System.Windows.Forms.DataGridViewComboBoxColumn ActionColumn;
private System.Windows.Forms.Button RemoveButton;
private System.Windows.Forms.ToolTip ToolTip;
private System.Windows.Forms.Button AddButton;
}
}

View File

@@ -0,0 +1,165 @@
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using SebWindowsConfig.Entities;
using SebWindowsConfig.Utilities;
namespace SebWindowsConfig.Controls
{
public partial class FilterRuleControl : UserControl
{
public FilterRuleControl()
{
InitializeComponent();
}
internal delegate void DataChangedHandler(IEnumerable<FilterRule> rules);
internal event DataChangedHandler DataChanged;
internal void AddRule(FilterRule rule)
{
RuleDataGridView.Rows.Add(rule.IsActive, rule.IsRegex, rule.Expression, rule.Action.ToString());
}
internal IEnumerable<FilterRule> GetRules()
{
foreach (DataGridViewRow row in RuleDataGridView.Rows)
{
var isValid = true;
isValid &= row.Cells[ActiveColumn.Index].Value != null;
isValid &= row.Cells[RegexColumn.Index].Value != null;
isValid &= row.Cells[ActionColumn.Index].Value != null;
if (row.Cells[RegexColumn.Index].Value as bool? == true)
{
isValid &= IsValidRegexRule(row.Cells[ExpressionColumn.Index].Value as string);
}
else
{
isValid &= IsValidUrlRule(row.Cells[ExpressionColumn.Index].Value as string);
}
if (isValid)
{
yield return new FilterRule
{
IsActive = (bool) row.Cells[ActiveColumn.Index].Value,
IsRegex = (bool) row.Cells[RegexColumn.Index].Value,
Expression = row.Cells[ExpressionColumn.Index].Value as string,
Action = (FilterAction) Enum.Parse(typeof(FilterAction), row.Cells[ActionColumn.Index].Value as string)
};
}
}
}
private void AddButton_Click(object sender, EventArgs e)
{
var isActive = true;
var isRegex = false;
RuleDataGridView.Rows.Add(isActive, isRegex);
}
private void RemoveButton_Click(object sender, EventArgs e)
{
if (RuleDataGridView.SelectedRows.Count != 0)
{
foreach (DataGridViewRow row in RuleDataGridView.SelectedRows)
{
RuleDataGridView.Rows.Remove(row);
}
} else
{
if (RuleDataGridView.CurrentRow != null)
{
RuleDataGridView.Rows.RemoveAt(RuleDataGridView.CurrentRow.Index);
}
}
}
private void RuleDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex == ExpressionColumn.Index)
{
var row = RuleDataGridView.Rows[e.RowIndex];
var expression = row.Cells[ExpressionColumn.Index].Value as string;
if (expression == null)
{
RuleDataGridView.Rows.Remove(row);
}
}
DataChanged?.Invoke(GetRules());
}
private void RuleDataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
DataChanged?.Invoke(GetRules());
}
private void RuleDataGridView_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
DataChanged?.Invoke(GetRules());
}
private void RuleDataGridView_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
if (e.RowIndex >= 0)
{
var row = RuleDataGridView.Rows[e.RowIndex];
var expression = (row.Cells[ExpressionColumn.Index].Value as string)?.Trim();
var isRegex = row.Cells[RegexColumn.Index].Value as bool? == true;
var isValidExpression = isRegex ? IsValidRegexRule(expression) : IsValidUrlRule(expression);
var isValidAction = !String.IsNullOrWhiteSpace(row.Cells[ActionColumn.Index].Value as string);
row.Cells[ActionColumn.Index].ErrorText = isValidAction ? null : "Please choose an action!";
row.Cells[ExpressionColumn.Index].ErrorText = isValidExpression ? null : (isRegex ? "Invalid regular expression!" : "Invalid URL rule!");
row.Cells[ExpressionColumn.Index].Value = expression;
}
}
private void RuleDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
// The row should be updated as soon as the checkbox is changed, not just when the cell looses focus...
if (e.ColumnIndex == ActiveColumn.Index || e.ColumnIndex == RegexColumn.Index)
{
RuleDataGridView.EndEdit();
}
}
private void RuleDataGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
// If the current cell has changes, they need to be commited immediately. Otherwise, changes can be lost if the user
// chooses to save the settings via menu or key command since in that case the CellValueChanged event won't fire.
// See: https://stackoverflow.com/questions/963601/datagridview-value-does-not-gets-saved-if-selection-is-not-lost-from-a-cell
if (RuleDataGridView.IsCurrentCellDirty)
{
RuleDataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
private bool IsValidRegexRule(string regex)
{
try
{
new Regex(regex);
}
catch
{
return false;
}
return true;
}
private bool IsValidUrlRule(string rule)
{
return new SEBURLFilterExpression(rule) != null;
}
}
}

View File

@@ -0,0 +1,138 @@
<?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>
<metadata name="ActiveColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="RegexColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ExpressionColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ActionColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="ToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>