diff --git a/ModpackUpdater.Apps.Manager/Api/Model/IWorkspace.cs b/ModpackUpdater.Apps.Manager/Api/Model/IWorkspace.cs new file mode 100644 index 0000000..adc258b --- /dev/null +++ b/ModpackUpdater.Apps.Manager/Api/Model/IWorkspace.cs @@ -0,0 +1,5 @@ +namespace ModpackUpdater.Apps.Manager.Api.Model; + +public interface IWorkspace +{ +} diff --git a/ModpackUpdater.Apps.Manager/Api/Plugins/Params/WorkspaceInitParameters.cs b/ModpackUpdater.Apps.Manager/Api/Plugins/Params/WorkspaceInitParameters.cs new file mode 100644 index 0000000..1497f1a --- /dev/null +++ b/ModpackUpdater.Apps.Manager/Api/Plugins/Params/WorkspaceInitParameters.cs @@ -0,0 +1,7 @@ +using Pilz.Plugins.Advanced; + +namespace ModpackUpdater.Apps.Manager.Api.Plugins.Params; + +public class WorkspaceInitParameters : PluginFunctionParameter +{ +} diff --git a/ModpackUpdater.Apps.Manager/FeatureTypes.cs b/ModpackUpdater.Apps.Manager/FeatureTypes.cs new file mode 100644 index 0000000..bf857ce --- /dev/null +++ b/ModpackUpdater.Apps.Manager/FeatureTypes.cs @@ -0,0 +1,6 @@ +namespace ModpackUpdater.Apps.Manager; + +public static class FeatureTypes +{ + public static string Workspace => "workspace"; +} diff --git a/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspace.cs b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspace.cs new file mode 100644 index 0000000..522963c --- /dev/null +++ b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspace.cs @@ -0,0 +1,7 @@ +using ModpackUpdater.Apps.Manager.Api.Model; + +namespace ModpackUpdater.Apps.Manager.Features.Workspaces.GitLabRepo; + +internal class GitLabRepoWorkspace : IWorkspace +{ +} diff --git a/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceConfigEditor.Designer.cs b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceConfigEditor.Designer.cs new file mode 100644 index 0000000..121ee61 --- /dev/null +++ b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceConfigEditor.Designer.cs @@ -0,0 +1,36 @@ +namespace ModpackUpdater.Apps.Manager.Features.Workspaces.GitLabRepo; + +partial class GitLabRepoWorkspaceConfigEditor +{ + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Komponenten-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + } + + #endregion +} diff --git a/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceConfigEditor.cs b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceConfigEditor.cs new file mode 100644 index 0000000..039a2d8 --- /dev/null +++ b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceConfigEditor.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ModpackUpdater.Apps.Manager.Features.Workspaces.GitLabRepo; +public partial class GitLabRepoWorkspaceConfigEditor : UserControl +{ + public GitLabRepoWorkspaceConfigEditor() + { + InitializeComponent(); + } +} diff --git a/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceConfigEditor.resx b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceConfigEditor.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceConfigEditor.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceFeature.cs b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceFeature.cs new file mode 100644 index 0000000..47f2818 --- /dev/null +++ b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceFeature.cs @@ -0,0 +1,26 @@ +using ModpackUpdater.Apps.Manager.Api.Model; +using ModpackUpdater.Apps.Manager.Api.Plugins.Params; +using Pilz.Plugins.Advanced; + +namespace ModpackUpdater.Apps.Manager.Features.Workspaces.GitLabRepo; + +internal class GitLabRepoWorkspaceFeature : PluginFunction, IPluginFeatureProvider +{ + public static GitLabRepoWorkspaceFeature Instance { get; } = new(); + + public GitLabRepoWorkspaceFeature() : base(FeatureTypes.Workspace, "origin.gitlab", "GitLab repository") + { + Icon = AppGlobals.Symbols.GetSvgImage(AppSymbols.github, Pilz.UI.Symbols.SymbolSize.Small); + } + + protected override object? ExecuteFunction(PluginFunctionParameter? @params) + { + if (@params is not WorkspaceInitParameters p) + return null; + + /// Open config UI + /// ... + + return new GitLabRepoWorkspace(); + } +} diff --git a/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceSettings.cs b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceSettings.cs new file mode 100644 index 0000000..2a1b518 --- /dev/null +++ b/ModpackUpdater.Apps.Manager/Features/Workspaces/GitLabRepo/GitLabRepoWorkspaceSettings.cs @@ -0,0 +1,5 @@ +namespace ModpackUpdater.Apps.Manager.Features.Workspaces.GitLabRepo; + +internal class GitLabRepoWorkspaceSettings +{ +} diff --git a/ModpackUpdater.Apps.Manager/Form1.Designer.cs b/ModpackUpdater.Apps.Manager/Form1.Designer.cs index 4fc193f..295f55b 100644 --- a/ModpackUpdater.Apps.Manager/Form1.Designer.cs +++ b/ModpackUpdater.Apps.Manager/Form1.Designer.cs @@ -28,13 +28,30 @@ partial class Form1 /// private void InitializeComponent() { + var tableViewDefinition2 = new Telerik.WinControls.UI.TableViewDefinition(); radSplitContainer1 = new Telerik.WinControls.UI.RadSplitContainer(); splitPanel1 = new Telerik.WinControls.UI.SplitPanel(); + tableLayoutPanel2 = new TableLayoutPanel(); + radTreeView_Updates = new Telerik.WinControls.UI.RadTreeView(); splitPanel2 = new Telerik.WinControls.UI.SplitPanel(); + tableLayoutPanel1 = new TableLayoutPanel(); + radGridView_Actions = new Telerik.WinControls.UI.RadGridView(); + radMenuItem1 = new Telerik.WinControls.UI.RadMenuItem(); + radMenuItem_OpenWorkspace = new Telerik.WinControls.UI.RadMenuItem(); + radMenuItem2 = new Telerik.WinControls.UI.RadMenuItem(); + radMenu1 = new Telerik.WinControls.UI.RadMenu(); ((System.ComponentModel.ISupportInitialize)radSplitContainer1).BeginInit(); radSplitContainer1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)splitPanel1).BeginInit(); + splitPanel1.SuspendLayout(); + tableLayoutPanel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)radTreeView_Updates).BeginInit(); ((System.ComponentModel.ISupportInitialize)splitPanel2).BeginInit(); + splitPanel2.SuspendLayout(); + tableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)radGridView_Actions).BeginInit(); + ((System.ComponentModel.ISupportInitialize)radGridView_Actions.MasterTemplate).BeginInit(); + ((System.ComponentModel.ISupportInitialize)radMenu1).BeginInit(); ((System.ComponentModel.ISupportInitialize)this).BeginInit(); SuspendLayout(); // @@ -43,41 +60,118 @@ partial class Form1 radSplitContainer1.Controls.Add(splitPanel1); radSplitContainer1.Controls.Add(splitPanel2); radSplitContainer1.Dock = DockStyle.Fill; - radSplitContainer1.Location = new Point(0, 0); + radSplitContainer1.Location = new Point(0, 28); radSplitContainer1.Name = "radSplitContainer1"; // // // radSplitContainer1.RootElement.MinSize = new Size(25, 25); - radSplitContainer1.Size = new Size(800, 450); + radSplitContainer1.Size = new Size(800, 422); radSplitContainer1.TabIndex = 0; radSplitContainer1.TabStop = false; // // splitPanel1 // + splitPanel1.Controls.Add(tableLayoutPanel2); splitPanel1.Location = new Point(0, 0); splitPanel1.Name = "splitPanel1"; // // // splitPanel1.RootElement.MinSize = new Size(25, 25); - splitPanel1.Size = new Size(398, 450); + splitPanel1.Size = new Size(246, 422); + splitPanel1.SizeInfo.AutoSizeScale = new SizeF(-0.190954775F, 0F); + splitPanel1.SizeInfo.SplitterCorrection = new Size(-152, 0); splitPanel1.TabIndex = 0; splitPanel1.TabStop = false; - splitPanel1.Text = "splitPanel1"; + // + // tableLayoutPanel2 + // + tableLayoutPanel2.ColumnCount = 1; + tableLayoutPanel2.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); + tableLayoutPanel2.Controls.Add(radTreeView_Updates, 0, 0); + tableLayoutPanel2.Dock = DockStyle.Fill; + tableLayoutPanel2.Location = new Point(0, 0); + tableLayoutPanel2.Name = "tableLayoutPanel2"; + tableLayoutPanel2.RowCount = 1; + tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)); + tableLayoutPanel2.Size = new Size(246, 422); + tableLayoutPanel2.TabIndex = 1; + // + // radTreeView_Updates + // + radTreeView_Updates.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + radTreeView_Updates.ItemHeight = 24; + radTreeView_Updates.LineColor = Color.FromArgb(152, 152, 152); + radTreeView_Updates.LineStyle = Telerik.WinControls.UI.TreeLineStyle.Solid; + radTreeView_Updates.Location = new Point(3, 3); + radTreeView_Updates.Name = "radTreeView_Updates"; + radTreeView_Updates.Size = new Size(240, 416); + radTreeView_Updates.TabIndex = 0; // // splitPanel2 // - splitPanel2.Location = new Point(402, 0); + splitPanel2.Controls.Add(tableLayoutPanel1); + splitPanel2.Location = new Point(250, 0); splitPanel2.Name = "splitPanel2"; // // // splitPanel2.RootElement.MinSize = new Size(25, 25); - splitPanel2.Size = new Size(398, 450); + splitPanel2.Size = new Size(550, 422); + splitPanel2.SizeInfo.AutoSizeScale = new SizeF(0.190954745F, 0F); + splitPanel2.SizeInfo.SplitterCorrection = new Size(152, 0); splitPanel2.TabIndex = 1; splitPanel2.TabStop = false; - splitPanel2.Text = "splitPanel2"; + // + // tableLayoutPanel1 + // + tableLayoutPanel1.ColumnCount = 1; + tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); + tableLayoutPanel1.Controls.Add(radGridView_Actions, 0, 0); + tableLayoutPanel1.Dock = DockStyle.Fill; + tableLayoutPanel1.Location = new Point(0, 0); + tableLayoutPanel1.Name = "tableLayoutPanel1"; + tableLayoutPanel1.RowCount = 1; + tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)); + tableLayoutPanel1.Size = new Size(550, 422); + tableLayoutPanel1.TabIndex = 0; + // + // radGridView_Actions + // + radGridView_Actions.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + radGridView_Actions.Location = new Point(3, 3); + // + // + // + radGridView_Actions.MasterTemplate.ViewDefinition = tableViewDefinition2; + radGridView_Actions.Name = "radGridView_Actions"; + radGridView_Actions.Size = new Size(544, 416); + radGridView_Actions.TabIndex = 0; + // + // radMenuItem1 + // + radMenuItem1.Items.AddRange(new Telerik.WinControls.RadItem[] { radMenuItem_OpenWorkspace }); + radMenuItem1.Name = "radMenuItem1"; + radMenuItem1.Text = "File"; + // + // radMenuItem_OpenWorkspace + // + radMenuItem_OpenWorkspace.Name = "radMenuItem_OpenWorkspace"; + radMenuItem_OpenWorkspace.Text = "Open workspace"; + // + // radMenuItem2 + // + radMenuItem2.Name = "radMenuItem2"; + radMenuItem2.Text = "Tools"; + // + // radMenu1 + // + radMenu1.Items.AddRange(new Telerik.WinControls.RadItem[] { radMenuItem1, radMenuItem2 }); + radMenu1.Location = new Point(0, 0); + radMenu1.Name = "radMenu1"; + radMenu1.Size = new Size(800, 28); + radMenu1.TabIndex = 1; // // Form1 // @@ -86,14 +180,25 @@ partial class Form1 AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(800, 450); Controls.Add(radSplitContainer1); + Controls.Add(radMenu1); Name = "Form1"; - Text = "Form1"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Minecraft Modpack Updates Manager"; ((System.ComponentModel.ISupportInitialize)radSplitContainer1).EndInit(); radSplitContainer1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)splitPanel1).EndInit(); + splitPanel1.ResumeLayout(false); + tableLayoutPanel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)radTreeView_Updates).EndInit(); ((System.ComponentModel.ISupportInitialize)splitPanel2).EndInit(); + splitPanel2.ResumeLayout(false); + tableLayoutPanel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)radGridView_Actions.MasterTemplate).EndInit(); + ((System.ComponentModel.ISupportInitialize)radGridView_Actions).EndInit(); + ((System.ComponentModel.ISupportInitialize)radMenu1).EndInit(); ((System.ComponentModel.ISupportInitialize)this).EndInit(); ResumeLayout(false); + PerformLayout(); } #endregion @@ -101,4 +206,12 @@ partial class Form1 private Telerik.WinControls.UI.RadSplitContainer radSplitContainer1; private Telerik.WinControls.UI.SplitPanel splitPanel1; private Telerik.WinControls.UI.SplitPanel splitPanel2; + private Telerik.WinControls.UI.RadTreeView radTreeView_Updates; + private Telerik.WinControls.UI.RadMenu radMenu1; + private Telerik.WinControls.UI.RadMenuItem radMenuItem1; + private Telerik.WinControls.UI.RadMenuItem radMenuItem_OpenWorkspace; + private Telerik.WinControls.UI.RadMenuItem radMenuItem2; + private TableLayoutPanel tableLayoutPanel2; + private TableLayoutPanel tableLayoutPanel1; + private Telerik.WinControls.UI.RadGridView radGridView_Actions; } diff --git a/ModpackUpdater.Apps.Manager/ModpackUpdater.Apps.Manager.csproj b/ModpackUpdater.Apps.Manager/ModpackUpdater.Apps.Manager.csproj index 10afc38..b536b3a 100644 --- a/ModpackUpdater.Apps.Manager/ModpackUpdater.Apps.Manager.csproj +++ b/ModpackUpdater.Apps.Manager/ModpackUpdater.Apps.Manager.csproj @@ -9,8 +9,12 @@ + + + + diff --git a/ModpackUpdater.Apps.Manager/Program.cs b/ModpackUpdater.Apps.Manager/Program.cs index fdb001e..762a38f 100644 --- a/ModpackUpdater.Apps.Manager/Program.cs +++ b/ModpackUpdater.Apps.Manager/Program.cs @@ -1,3 +1,5 @@ +using Pilz.Plugins.Advanced; + namespace ModpackUpdater.Apps.Manager; internal static class Program @@ -12,6 +14,7 @@ internal static class Program // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); AppGlobals.Initialize(); + PluginFeatureController.Instance.RegisterAllOwn(); Application.Run(new Form1()); } } \ No newline at end of file diff --git a/ModpackUpdater.Apps/AppSymbols.cs b/ModpackUpdater.Apps/AppSymbols.cs index 11df4bd..0084720 100644 --- a/ModpackUpdater.Apps/AppSymbols.cs +++ b/ModpackUpdater.Apps/AppSymbols.cs @@ -17,4 +17,5 @@ public enum AppSymbols software_installer, update_done, wrench, + github, } diff --git a/ModpackUpdater.Apps/Symbols/github.svg b/ModpackUpdater.Apps/Symbols/github.svg new file mode 100644 index 0000000..b1ac899 --- /dev/null +++ b/ModpackUpdater.Apps/Symbols/github.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file