diff --git a/ShareX.ImageEffectsLib/ImageEffectPackagerForm.Designer.cs b/ShareX.ImageEffectsLib/ImageEffectPackagerForm.Designer.cs index 8268ae473..ddd27280c 100644 --- a/ShareX.ImageEffectsLib/ImageEffectPackagerForm.Designer.cs +++ b/ShareX.ImageEffectsLib/ImageEffectPackagerForm.Designer.cs @@ -28,58 +28,91 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.lblAssetsFolder = new System.Windows.Forms.Label(); - this.txtAssetsFolder = new System.Windows.Forms.TextBox(); this.btnPackage = new System.Windows.Forms.Button(); - this.btnAssetsFolderBrowse = new System.Windows.Forms.Button(); + this.lblAssetsFolderPath = new System.Windows.Forms.Label(); + this.lblPackageFilePath = new System.Windows.Forms.Label(); + this.txtPackageFilePath = new System.Windows.Forms.TextBox(); + this.btnPackageFilePathBrowse = new System.Windows.Forms.Button(); + this.txtAssetsFolderPath = new System.Windows.Forms.TextBox(); + this.btnAssetsFolderPathBrowse = new System.Windows.Forms.Button(); this.SuspendLayout(); // - // lblAssetsFolder - // - this.lblAssetsFolder.AutoSize = true; - this.lblAssetsFolder.Location = new System.Drawing.Point(13, 16); - this.lblAssetsFolder.Name = "lblAssetsFolder"; - this.lblAssetsFolder.Size = new System.Drawing.Size(118, 13); - this.lblAssetsFolder.TabIndex = 0; - this.lblAssetsFolder.Text = "Assets folder (Optional):"; - // - // txtAssetsFolder - // - this.txtAssetsFolder.Location = new System.Drawing.Point(16, 32); - this.txtAssetsFolder.Name = "txtAssetsFolder"; - this.txtAssetsFolder.Size = new System.Drawing.Size(336, 20); - this.txtAssetsFolder.TabIndex = 1; - this.txtAssetsFolder.TextChanged += new System.EventHandler(this.txtAssetsFolder_TextChanged); - // // btnPackage // - this.btnPackage.Location = new System.Drawing.Point(16, 64); + this.btnPackage.Location = new System.Drawing.Point(16, 112); this.btnPackage.Name = "btnPackage"; this.btnPackage.Size = new System.Drawing.Size(128, 23); - this.btnPackage.TabIndex = 3; - this.btnPackage.Text = "Package..."; + this.btnPackage.TabIndex = 0; + this.btnPackage.Text = "Package"; this.btnPackage.UseVisualStyleBackColor = true; this.btnPackage.Click += new System.EventHandler(this.btnPackage_Click); // - // btnAssetsFolderBrowse + // lblAssetsFolderPath // - this.btnAssetsFolderBrowse.Location = new System.Drawing.Point(360, 31); - this.btnAssetsFolderBrowse.Name = "btnAssetsFolderBrowse"; - this.btnAssetsFolderBrowse.Size = new System.Drawing.Size(32, 23); - this.btnAssetsFolderBrowse.TabIndex = 2; - this.btnAssetsFolderBrowse.Text = "..."; - this.btnAssetsFolderBrowse.UseVisualStyleBackColor = true; - this.btnAssetsFolderBrowse.Click += new System.EventHandler(this.btnAssetsFolderBrowse_Click); + this.lblAssetsFolderPath.AutoSize = true; + this.lblAssetsFolderPath.Location = new System.Drawing.Point(13, 16); + this.lblAssetsFolderPath.Name = "lblAssetsFolderPath"; + this.lblAssetsFolderPath.Size = new System.Drawing.Size(94, 13); + this.lblAssetsFolderPath.TabIndex = 1; + this.lblAssetsFolderPath.Text = "Assets folder path:"; + // + // lblPackageFilePath + // + this.lblPackageFilePath.AutoSize = true; + this.lblPackageFilePath.Location = new System.Drawing.Point(13, 64); + this.lblPackageFilePath.Name = "lblPackageFilePath"; + this.lblPackageFilePath.Size = new System.Drawing.Size(93, 13); + this.lblPackageFilePath.TabIndex = 4; + this.lblPackageFilePath.Text = "Package file path:"; + // + // txtPackageFilePath + // + this.txtPackageFilePath.Location = new System.Drawing.Point(16, 80); + this.txtPackageFilePath.Name = "txtPackageFilePath"; + this.txtPackageFilePath.Size = new System.Drawing.Size(344, 20); + this.txtPackageFilePath.TabIndex = 5; + this.txtPackageFilePath.TextChanged += new System.EventHandler(this.txtPackageFilePath_TextChanged); + // + // btnPackageFilePathBrowse + // + this.btnPackageFilePathBrowse.Location = new System.Drawing.Point(368, 79); + this.btnPackageFilePathBrowse.Name = "btnPackageFilePathBrowse"; + this.btnPackageFilePathBrowse.Size = new System.Drawing.Size(32, 23); + this.btnPackageFilePathBrowse.TabIndex = 6; + this.btnPackageFilePathBrowse.Text = "..."; + this.btnPackageFilePathBrowse.UseVisualStyleBackColor = true; + this.btnPackageFilePathBrowse.Click += new System.EventHandler(this.btnPackageFilePathBrowse_Click); + // + // txtAssetsFolderPath + // + this.txtAssetsFolderPath.Location = new System.Drawing.Point(16, 32); + this.txtAssetsFolderPath.Name = "txtAssetsFolderPath"; + this.txtAssetsFolderPath.Size = new System.Drawing.Size(344, 20); + this.txtAssetsFolderPath.TabIndex = 2; + this.txtAssetsFolderPath.TextChanged += new System.EventHandler(this.txtAssetsFolderPath_TextChanged); + // + // btnAssetsFolderPathBrowse + // + this.btnAssetsFolderPathBrowse.Location = new System.Drawing.Point(368, 31); + this.btnAssetsFolderPathBrowse.Name = "btnAssetsFolderPathBrowse"; + this.btnAssetsFolderPathBrowse.Size = new System.Drawing.Size(32, 23); + this.btnAssetsFolderPathBrowse.TabIndex = 3; + this.btnAssetsFolderPathBrowse.Text = "..."; + this.btnAssetsFolderPathBrowse.UseVisualStyleBackColor = true; + this.btnAssetsFolderPathBrowse.Click += new System.EventHandler(this.btnAssetsFolderPathBrowse_Click); // // ImageEffectPackagerForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(409, 98); - this.Controls.Add(this.btnAssetsFolderBrowse); + this.ClientSize = new System.Drawing.Size(417, 145); + this.Controls.Add(this.btnAssetsFolderPathBrowse); + this.Controls.Add(this.txtAssetsFolderPath); + this.Controls.Add(this.btnPackageFilePathBrowse); + this.Controls.Add(this.txtPackageFilePath); + this.Controls.Add(this.lblPackageFilePath); + this.Controls.Add(this.lblAssetsFolderPath); this.Controls.Add(this.btnPackage); - this.Controls.Add(this.txtAssetsFolder); - this.Controls.Add(this.lblAssetsFolder); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.Name = "ImageEffectPackagerForm"; @@ -91,10 +124,12 @@ private void InitializeComponent() } #endregion - - private System.Windows.Forms.Label lblAssetsFolder; - private System.Windows.Forms.TextBox txtAssetsFolder; private System.Windows.Forms.Button btnPackage; - private System.Windows.Forms.Button btnAssetsFolderBrowse; + private System.Windows.Forms.Label lblAssetsFolderPath; + private System.Windows.Forms.Label lblPackageFilePath; + private System.Windows.Forms.TextBox txtPackageFilePath; + private System.Windows.Forms.Button btnPackageFilePathBrowse; + private System.Windows.Forms.TextBox txtAssetsFolderPath; + private System.Windows.Forms.Button btnAssetsFolderPathBrowse; } } \ No newline at end of file diff --git a/ShareX.ImageEffectsLib/ImageEffectPackagerForm.cs b/ShareX.ImageEffectsLib/ImageEffectPackagerForm.cs index 799be3af9..a19ce63b6 100644 --- a/ShareX.ImageEffectsLib/ImageEffectPackagerForm.cs +++ b/ShareX.ImageEffectsLib/ImageEffectPackagerForm.cs @@ -36,6 +36,7 @@ public partial class ImageEffectPackagerForm : Form public string ImageEffectName { get; private set; } public string ShareXImageEffectsFolderPath { get; private set; } public string AssetsFolderPath { get; set; } + public string PackageFilePath { get; set; } public ImageEffectPackagerForm(string json, string name, string imageEffectsFolderPath) { @@ -45,24 +46,49 @@ public ImageEffectPackagerForm(string json, string name, string imageEffectsFold InitializeComponent(); ShareXResources.ApplyTheme(this); + + AssetsFolderPath = Path.Combine(ShareXImageEffectsFolderPath, ImageEffectName); + txtAssetsFolderPath.Text = AssetsFolderPath; + PackageFilePath = AssetsFolderPath + ".sxie"; + txtPackageFilePath.Text = PackageFilePath; } - private void txtAssetsFolder_TextChanged(object sender, EventArgs e) + private void txtAssetsFolderPath_TextChanged(object sender, EventArgs e) { - AssetsFolderPath = txtAssetsFolder.Text; + AssetsFolderPath = txtAssetsFolderPath.Text; } - private void btnAssetsFolderBrowse_Click(object sender, EventArgs e) + private void btnAssetsFolderPathBrowse_Click(object sender, EventArgs e) { - Helpers.BrowseFolder(txtAssetsFolder, ShareXImageEffectsFolderPath); + Helpers.BrowseFolder(txtAssetsFolderPath, ShareXImageEffectsFolderPath); + } + + private void txtPackageFilePath_TextChanged(object sender, EventArgs e) + { + PackageFilePath = txtPackageFilePath.Text; + } + + private void btnPackageFilePathBrowse_Click(object sender, EventArgs e) + { + using (SaveFileDialog sfd = new SaveFileDialog()) + { + sfd.DefaultExt = "sxie"; + sfd.FileName = ImageEffectName + ".sxie"; + sfd.Filter = "ShareX image effect (*.sxie)|*.sxie"; + sfd.InitialDirectory = ShareXImageEffectsFolderPath; + + if (sfd.ShowDialog() == DialogResult.OK) + { + txtPackageFilePath.Text = sfd.FileName; + } + } } private void btnPackage_Click(object sender, EventArgs e) { try { - if (!string.IsNullOrEmpty(AssetsFolderPath) && - !AssetsFolderPath.StartsWith(ShareXImageEffectsFolderPath + "\\", StringComparison.OrdinalIgnoreCase)) + if (!string.IsNullOrEmpty(AssetsFolderPath) && !AssetsFolderPath.StartsWith(ShareXImageEffectsFolderPath + "\\", StringComparison.OrdinalIgnoreCase)) { // TODO: Translate MessageBox.Show("Assets folder must be inside ShareX image effects folder.", "ShareX - " + "Invalid assets folder path", @@ -70,22 +96,11 @@ private void btnPackage_Click(object sender, EventArgs e) } else { - using (SaveFileDialog sfd = new SaveFileDialog()) + string outputFilePath = ImageEffectPackager.Package(PackageFilePath, ImageEffectJson, AssetsFolderPath); + + if (!string.IsNullOrEmpty(outputFilePath) && File.Exists(outputFilePath)) { - sfd.DefaultExt = "sxie"; - sfd.FileName = ImageEffectName + ".sxie"; - sfd.Filter = "ShareX image effect (*.sxie)|*.sxie"; - sfd.InitialDirectory = ShareXImageEffectsFolderPath; - - if (sfd.ShowDialog() == DialogResult.OK) - { - string outputFilePath = ImageEffectPackager.Package(sfd.FileName, ImageEffectJson, AssetsFolderPath); - - if (!string.IsNullOrEmpty(outputFilePath) && File.Exists(outputFilePath)) - { - Helpers.OpenFolderWithFile(outputFilePath); - } - } + Helpers.OpenFolderWithFile(outputFilePath); } } }