Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 19a7059

Browse files
Start of an InitProjectView
1 parent ccfeef3 commit 19a7059

File tree

3 files changed

+107
-0
lines changed

3 files changed

+107
-0
lines changed

src/UnityExtension/Assets/Editor/GitHub.Unity/GitHub.Unity.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@
102102
<Compile Include="UI\HistoryView.cs" />
103103
<Compile Include="UI\IView.cs" />
104104
<Compile Include="UI\PublishView.cs" />
105+
<Compile Include="UI\InitProjectView.cs" />
105106
<Compile Include="UI\SettingsView.cs" />
106107
<Compile Include="UI\Subview.cs" />
107108
<Compile Include="UI\Window.cs" />
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
#pragma warning disable 649
2+
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using UnityEditor;
7+
using UnityEngine;
8+
using Object = UnityEngine.Object;
9+
10+
namespace GitHub.Unity
11+
{
12+
[Serializable]
13+
class InitProjectView : Subview
14+
{
15+
private const string NoRepoTitle = "No Git repository found for this project";
16+
private const string NoRepoDescription = "Initialize a Git repository to track changes and collaborate with others.";
17+
18+
[SerializeField]
19+
private bool isBusy;
20+
[SerializeField]
21+
private bool isPublished;
22+
23+
public override void OnDataUpdate()
24+
{
25+
base.OnDataUpdate();
26+
MaybeUpdateData();
27+
}
28+
29+
public override void OnRepositoryChanged(IRepository oldRepository)
30+
{
31+
base.OnRepositoryChanged(oldRepository);
32+
Refresh();
33+
}
34+
35+
public override void OnGUI()
36+
{
37+
DoOfferToInitializeRepositoryGUI();
38+
}
39+
40+
private void MaybeUpdateData()
41+
{
42+
isPublished = Repository != null && Repository.CurrentRemote.HasValue;
43+
}
44+
45+
private void DoOfferToInitializeRepositoryGUI()
46+
{
47+
var headerRect = EditorGUILayout.BeginHorizontal(Styles.HeaderBoxStyle);
48+
{
49+
GUILayout.Space(5);
50+
GUILayout.BeginVertical(GUILayout.Width(16));
51+
{
52+
GUILayout.Space(5);
53+
54+
var iconRect = GUILayoutUtility.GetRect(new GUIContent(Styles.BigLogo), GUIStyle.none, GUILayout.Height(20), GUILayout.Width(20));
55+
iconRect.y = headerRect.center.y - (iconRect.height / 2);
56+
GUI.DrawTexture(iconRect, Styles.BigLogo, ScaleMode.ScaleToFit);
57+
58+
GUILayout.Space(5);
59+
}
60+
GUILayout.EndVertical();
61+
62+
GUILayout.Space(5);
63+
64+
GUILayout.BeginVertical();
65+
{
66+
var headerContent = new GUIContent(NoRepoTitle);
67+
var headerTitleRect = GUILayoutUtility.GetRect(headerContent, Styles.HeaderTitleStyle);
68+
headerTitleRect.y = headerRect.center.y - (headerTitleRect.height / 2);
69+
70+
GUI.Label(headerTitleRect, headerContent, Styles.HeaderTitleStyle);
71+
}
72+
GUILayout.EndVertical();
73+
}
74+
EditorGUILayout.EndHorizontal();
75+
76+
GUILayout.BeginVertical(Styles.GenericBoxStyle);
77+
{
78+
GUILayout.FlexibleSpace();
79+
80+
GUILayout.Label(NoRepoDescription, Styles.CenteredLabel);
81+
82+
GUILayout.BeginHorizontal();
83+
GUILayout.FlexibleSpace();
84+
85+
EditorGUI.BeginDisabledGroup(isBusy);
86+
{
87+
if (GUILayout.Button(Localization.InitializeRepositoryButtonText, "Button"))
88+
{
89+
isBusy = true;
90+
Manager.InitializeRepository()
91+
.FinallyInUI(() => isBusy = false)
92+
.Start();
93+
}
94+
}
95+
EditorGUI.EndDisabledGroup();
96+
97+
GUILayout.FlexibleSpace();
98+
GUILayout.EndHorizontal();
99+
100+
GUILayout.FlexibleSpace();
101+
}
102+
GUILayout.EndVertical();
103+
}
104+
}
105+
}

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Window.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class Window : BaseWindow
2929
[NonSerialized] private double notificationClearTime = -1;
3030

3131
[SerializeField] private SubTab activeTab = SubTab.History;
32+
[SerializeField] private InitProjectView initProjectTab = new InitProjectView();
3233
[SerializeField] private BranchesView branchesTab = new BranchesView();
3334
[SerializeField] private ChangesView changesTab = new ChangesView();
3435
[SerializeField] private HistoryView historyTab = new HistoryView();

0 commit comments

Comments
 (0)