diff --git a/src/GitHub.Api/Localization.resx b/src/GitHub.Api/Localization.resx
index 6768713f9..ba8fc9667 100644
--- a/src/GitHub.Api/Localization.resx
+++ b/src/GitHub.Api/Localization.resx
@@ -1,17 +1,17 @@
-
@@ -286,7 +286,7 @@
Branch pushed
- Initialize repository
+ Initialize a git repository for this project
Switch branch
@@ -294,4 +294,4 @@
Could not switch to branch {0}
-
\ No newline at end of file
+
diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/GitHub.Unity.csproj b/src/UnityExtension/Assets/Editor/GitHub.Unity/GitHub.Unity.csproj
index c59eaeca6..ac26b427b 100644
--- a/src/UnityExtension/Assets/Editor/GitHub.Unity/GitHub.Unity.csproj
+++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/GitHub.Unity.csproj
@@ -151,6 +151,8 @@
+
+
@@ -207,7 +209,7 @@
-
-
\ No newline at end of file
+
diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/IconsAndLogos/empty-state-init.png b/src/UnityExtension/Assets/Editor/GitHub.Unity/IconsAndLogos/empty-state-init.png
new file mode 100644
index 000000000..09389a7dc
--- /dev/null
+++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/IconsAndLogos/empty-state-init.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ee3c66f73cbb96d92aef34f0ef7eb9e615db83fa83b810cbc2c4eea825bd1e4c
+size 5571
diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/IconsAndLogos/empty-state-init@2x.png b/src/UnityExtension/Assets/Editor/GitHub.Unity/IconsAndLogos/empty-state-init@2x.png
new file mode 100644
index 000000000..c73d5222f
--- /dev/null
+++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/IconsAndLogos/empty-state-init@2x.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea0086690444613755947b3bc2b25390f860a362126c4a92d222da9c65ed4790
+size 14242
diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/Misc/Styles.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/Misc/Styles.cs
index eb3b4489f..3fdcdc26b 100644
--- a/src/UnityExtension/Assets/Editor/GitHub.Unity/Misc/Styles.cs
+++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/Misc/Styles.cs
@@ -69,6 +69,7 @@ class Styles
commitFileAreaStyle,
commitButtonStyle,
textFieldStyle,
+ boldCenteredLabel,
centeredLabel,
commitDescriptionFieldStyle,
toggleMixedStyle,
@@ -94,6 +95,7 @@ class Styles
localCommitIcon,
repoIcon,
lockIcon,
+ emptyStateInit,
dropdownListIcon;
public static Texture2D GetFileStatusIcon(GitFileStatus status, bool isLocked)
@@ -556,6 +558,22 @@ public static GUIStyle CenteredLabel
}
}
+ public static GUIStyle BoldCenteredLabel
+ {
+ get
+ {
+ if (boldCenteredLabel == null)
+ {
+ boldCenteredLabel = new GUIStyle(EditorStyles.boldLabel);
+ boldCenteredLabel.name = "BoldCenteredLabelStyle";
+ boldCenteredLabel.alignment = TextAnchor.MiddleCenter;
+ boldCenteredLabel.wordWrap = true;
+ }
+ return boldCenteredLabel;
+ }
+ }
+
+
public static GUIStyle CommitDescriptionFieldStyle
{
get
@@ -787,6 +805,19 @@ public static Texture2D LockIcon
}
}
+ public static Texture2D EmptyStateInit
+ {
+ get
+ {
+ if (emptyStateInit == null)
+ {
+ emptyStateInit = Utility.GetIcon("empty-state-init.png", "empty-state-init@2x.png");
+ }
+ return emptyStateInit;
+ }
+
+ }
+
public static Texture2D DropdownListIcon
{
get
diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/InitProjectView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/InitProjectView.cs
index f21c7c93b..fa87e3454 100644
--- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/InitProjectView.cs
+++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/InitProjectView.cs
@@ -7,123 +7,73 @@ namespace GitHub.Unity
[Serializable]
class InitProjectView : Subview
{
- private const string NoRepoTitle = "No Git repository found for this project";
- private const string NoRepoDescription = "Initialize a Git repository to track changes and collaborate with others.";
- private const string NoUserOrEmailError = "Name and Email must be configured in Settings";
-
- [SerializeField] private UserSettingsView userSettingsView = new UserSettingsView();
- [SerializeField] private GitPathView gitPathView = new GitPathView();
+ private const string NoRepoTitle = "To begin using GitHub, initialize a git repository";
+ private const string NoUserOrEmailError = "Name and email not set in git. Go into the settings tab and enter the missing information";
[NonSerialized] private bool isBusy;
-
- [NonSerialized] private string errorMessage;
[NonSerialized] private bool isUserDataPresent;
+ [NonSerialized] private bool hasCompletedInitialCheck;
[NonSerialized] private bool userDataHasChanged;
- public override void InitializeView(IView parent)
- {
- base.InitializeView(parent);
-
- userSettingsView.InitializeView(this);
- gitPathView.InitializeView(this);
-
- if (!string.IsNullOrEmpty(Environment.GitExecutablePath))
- {
- CheckForUser();
- }
- }
-
public override void OnEnable()
{
base.OnEnable();
- gitPathView.OnEnable();
userDataHasChanged = Environment.GitExecutablePath != null;
}
- public override void OnDataUpdate()
- {
- base.OnDataUpdate();
- userSettingsView.OnDataUpdate();
- gitPathView.OnDataUpdate();
- }
-
public override void OnGUI()
{
- var headerRect = EditorGUILayout.BeginHorizontal(Styles.HeaderBoxStyle);
+ GUILayout.BeginVertical(Styles.GenericBoxStyle);
{
- GUILayout.Space(5);
- GUILayout.BeginVertical(GUILayout.Width(16));
- {
- GUILayout.Space(5);
-
- var iconRect = GUILayoutUtility.GetRect(new GUIContent(Styles.BigLogo), GUIStyle.none, GUILayout.Height(20), GUILayout.Width(20));
- iconRect.y = headerRect.center.y - (iconRect.height / 2);
- GUI.DrawTexture(iconRect, Styles.BigLogo, ScaleMode.ScaleToFit);
-
- GUILayout.Space(5);
- }
- GUILayout.EndVertical();
-
- GUILayout.Space(5);
+ GUILayout.FlexibleSpace();
+ GUILayout.Space(-140);
- GUILayout.BeginVertical();
+ GUILayout.BeginHorizontal();
{
- var headerContent = new GUIContent(NoRepoTitle);
- var headerTitleRect = GUILayoutUtility.GetRect(headerContent, Styles.HeaderTitleStyle);
- headerTitleRect.y = headerRect.center.y - (headerTitleRect.height / 2);
-
- GUI.Label(headerTitleRect, headerContent, Styles.HeaderTitleStyle);
+ GUILayout.FlexibleSpace();
+ GUILayout.Label(Styles.EmptyStateInit, GUILayout.MaxWidth(265), GUILayout.MaxHeight(136));
+ GUILayout.FlexibleSpace();
}
- GUILayout.EndVertical();
- }
- EditorGUILayout.EndHorizontal();
-
- gitPathView.OnGUI();
-
- userSettingsView.OnGUI();
-
- GUILayout.BeginVertical(Styles.GenericBoxStyle);
- {
- GUILayout.FlexibleSpace();
+ GUILayout.EndHorizontal();
- GUILayout.Label(NoRepoDescription, Styles.CenteredLabel);
+ GUILayout.Label(NoRepoTitle, Styles.BoldCenteredLabel);
+ GUILayout.Space(4);
GUILayout.BeginHorizontal();
- GUILayout.FlexibleSpace();
-
- EditorGUI.BeginDisabledGroup(IsBusy || !isUserDataPresent);
{
- if (GUILayout.Button(Localization.InitializeRepositoryButtonText, "Button"))
+ GUILayout.FlexibleSpace();
+
+ EditorGUI.BeginDisabledGroup(IsBusy || !isUserDataPresent);
{
- isBusy = true;
- Manager.InitializeRepository()
- .FinallyInUI(() => isBusy = false)
- .Start();
+ if (GUILayout.Button(Localization.InitializeRepositoryButtonText, "Button"))
+ {
+ isBusy = true;
+ Manager.InitializeRepository()
+ .FinallyInUI(() => isBusy = false)
+ .Start();
+ }
}
- }
- EditorGUI.EndDisabledGroup();
+ EditorGUI.EndDisabledGroup();
- GUILayout.FlexibleSpace();
+ GUILayout.FlexibleSpace();
+ }
GUILayout.EndHorizontal();
- ShowErrorMessage();
+ if (hasCompletedInitialCheck && !isUserDataPresent)
+ {
+ EditorGUILayout.Space();
+ EditorGUILayout.HelpBox(NoUserOrEmailError, MessageType.Error);
+ }
GUILayout.FlexibleSpace();
}
GUILayout.EndVertical();
}
- private void ShowErrorMessage()
+ public override void OnDataUpdate()
{
- if (errorMessage != null)
- {
- GUILayout.Space(Styles.BaseSpacing);
- GUILayout.BeginHorizontal();
- {
- GUILayout.Label(errorMessage, Styles.CenteredErrorLabel);
- }
- GUILayout.EndHorizontal();
- }
+ base.OnDataUpdate();
+ MaybeUpdateData();
}
private void MaybeUpdateData()
@@ -137,18 +87,24 @@ private void MaybeUpdateData()
private void CheckForUser()
{
+ if (string.IsNullOrEmpty(Environment.GitExecutablePath))
+ {
+ Logger.Warning("No git exec cannot check for user");
+ return;
+ }
+
+ Logger.Trace("Checking for user");
isBusy = true;
GitClient.GetConfigUserAndEmail().FinallyInUI((success, ex, strings) => {
var username = strings[0];
var email = strings[1];
-
isBusy = false;
isUserDataPresent = success && !String.IsNullOrEmpty(username) && !String.IsNullOrEmpty(email);
- errorMessage = isUserDataPresent ? null : NoUserOrEmailError;
+ hasCompletedInitialCheck = true;
- Logger.Trace("Finally: {0}", isUserDataPresent);
+ Logger.Trace("User Present: {0}", isUserDataPresent);
Redraw();
}).Start();
@@ -156,7 +112,7 @@ private void CheckForUser()
public override bool IsBusy
{
- get { return isBusy || userSettingsView.IsBusy || gitPathView.IsBusy; }
+ get { return isBusy; }
}
}
}