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