void Init() { _authorized = false; _unityLogo = (Texture2D)Resources.Load("Pwrd_By_Unity_Pri_In_sm", typeof(Texture2D)); _litteratusLogo = (Texture2D)Resources.Load("Litteratus_Logo_sm", typeof(Texture2D)); _separator = (Texture2D)Resources.Load("separator", typeof(Texture2D)); _helpButton = (Texture2D)Resources.Load("help", typeof(Texture2D)); _browseButton = (Texture2D)Resources.Load("folder", typeof(Texture2D)); _username = GetString("username", _username); _password = GetString("password", _password); _activeWorkbookname = GetString("activeworkbookname", _activeWorkbookname); _objDBResourcesDirectory = GetString("objDBResourcesDirectory", _objDBResourcesDirectory); _objDBEditorDirectory = GetString("objDBEditorDirectory", _objDBEditorDirectory); _staticDBResourcesDirectory = GetString("staticDBResourcesDirectory", _staticDBResourcesDirectory); _nguiDirectory = GetString("nguiDirectory", _nguiDirectory); _xmlDirectory = GetString("xmlDirectory", _xmlDirectory); _jsonDirectory = GetString("jsonDirectory", _jsonDirectory); _csvDirectory = GetString("csvDirectory", _csvDirectory); _playmakerDirectory = GetString("playmakerDirectory", _playmakerDirectory); _daikonforgeDirectory = GetString("daikonforgeDirectory", _daikonforgeDirectory); _editorLanguage = GetString("editorLanguage", _editorLanguage); _saveCredentials = GetBool("saveCredientials", _saveCredentials); _autoLogin = GetBool("autoLogin", _autoLogin); _useObjDB = GetBool("useObjDB", _useObjDB); _useStaticDB = GetBool("useStaticDB", _useStaticDB); _useNGUI = GetBool("useNGUI", _useNGUI); _useNGUILegacy = GetBool("useNGUILegacy", _useNGUILegacy); _useXML = GetBool("useXML", _useXML); _useJSON = GetBool("useJSON", _useJSON); _useCSV = GetBool("useCSV", _useCSV); _useDaikonForge = GetBool("useDaikonForge", _useDaikonForge); _usePlaymaker = GetBool("usePlaymaker", _usePlaymaker); _languagesIndex = GetInt("languagesIndex", _languagesIndex); _projectPath = Application.dataPath; _currentHelpDoc = string.Empty; _ArrayDelimiters = GetString("arrayDelimiters", _ArrayDelimiters); _StringArrayDelimiters = GetString("stringArrayDelimiters", _StringArrayDelimiters); _ComplexTypeDelimiters = GetString("complexTypeDelimiters", _ComplexTypeDelimiters); _ComplexTypeArrayDelimiters = GetString("complexTypeArrayDelimiters", _ComplexTypeArrayDelimiters); _TrimStrings = GetBool("trimStrings", _TrimStrings); _TrimStringArrays = GetBool("trimStringArrays", _TrimStringArrays); System.Net.ServicePointManager.ServerCertificateValidationCallback = Validator; _service = new Google.GData.Spreadsheets.SpreadsheetsService("UnityGoogleFu"); _authenticateTick = -1; if (System.IO.Directory.GetFiles(Application.dataPath, "NGUITools.cs", System.IO.SearchOption.AllDirectories).Length > 0) { _foundNGUI = true; } if (System.IO.Directory.GetFiles(Application.dataPath, "PlayMaker.dll", System.IO.SearchOption.AllDirectories).Length > 0) { _foundPlaymaker = true; } if (System.IO.Directory.GetFiles(Application.dataPath, "dfScriptLite.dll", System.IO.SearchOption.AllDirectories).Length > 0) { _foundDaikonForge = true; } if (_autoLogin == true) { DoRefreshWorkbooks = true; } else { string tmpManualWorkbooks = GetString("manualworkbookurls", System.String.Empty); string [] split_ManualWorkbooks = tmpManualWorkbooks.Split(new char[] { '|' }, System.StringSplitOptions.RemoveEmptyEntries); foreach (string s in split_ManualWorkbooks) { WorkBookInfo info = AddManualWorkbookByURL(s); if (info != null && info.Title == _activeWorkbookname) { _activeWorkbook = info; } } } }
void DrawAccountWorkbooksGUI() { EditorGUILayout.BeginHorizontal(); GUILayout.Label("", EditorStyles.miniLabel); if (GUILayout.Button(Localize("ID_MANUAL_REFRESH"), EditorStyles.toolbarButton, GUILayout.Width(135))) { var feed = _Service.Query(_Query); if (feed.Entries.Count == 0) { _EditorInfo = Localize("ID_NO_DB_ERROR"); } else { Debug.Log("Manually Refreshing Workbooks.. This could take a while"); _Workbooks.Clear(); foreach (var entry in feed.Entries.Cast<Google.GData.Spreadsheets.SpreadsheetEntry>()) { try { var info = _Workbooks.Find( in_i => GfuStrCmp(in_i.Title, entry.Feed.Title.Text) ); if (info == null) { info = new WorkBookInfo(entry); _Workbooks.Add(info); } if (GfuStrCmp(info.Title, _ActiveWorkbookname)) SetActiveWorkbook(info); } catch (System.Exception ex) { Debug.Log(Localize("ID_INACCESSIBLE_ERROR")); Debug.Log(ex.Message); } } Debug.Log("Manual Refresh Complete"); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); DrawHelpButtonGUI("ID_HELP_ACCOUNT_WORKBOOKS"); DrawLabelHeader("ID_ACCOUNT_WORKBOOK"); EditorGUILayout.EndHorizontal(); foreach (WorkBookInfo wbInfo in _Workbooks) { if (wbInfo == _ActiveWorkbook) GUI.enabled = false; EditorGUILayout.BeginHorizontal(); GUILayout.Label(wbInfo.Title, EditorStyles.miniLabel); if (GUILayout.Button(Localize("ID_OPEN_URL"), EditorStyles.miniButton, GUILayout.Width(65))) { ClearMessages(); Application.OpenURL(wbInfo.Url); } if (GUILayout.Button(Localize("ID_ACTIVATE"), EditorStyles.miniButton, GUILayout.Width(65))) { ClearMessages(); SetActiveWorkbook(wbInfo); SetString("activeworkbookname", wbInfo.Title); _CurrentPage = GfPage.Toolbox; } EditorGUILayout.EndHorizontal(); GUI.enabled = true; } }
void RefreshWorkbooks() { if (!string.IsNullOrEmpty(_Username) && !string.IsNullOrEmpty(_Password)) { Google.GData.Spreadsheets.SpreadsheetFeed feed = null; var doWorkbookQuery = false; try { _Service.setUserCredentials(_Username, _Password); var savedToken = GetString("AuthToken_" + _Username, string.Empty); if (savedToken != string.Empty) { _Service.SetAuthenticationToken(savedToken); } else { var token = _Service.QueryClientLoginToken(); SetString("AuthToken_" + _Username, token); _Service.SetAuthenticationToken(token); } //_Workbooks.Clear(); feed = _Service.Query(_Query); if (feed.Entries.Count == 0) { _EditorInfo = Localize("ID_NO_DB_ERROR"); } else if(_Workbooks.Count == 0) { doWorkbookQuery = true; } else { foreach (var info in _Workbooks.Where(in_info => GfuStrCmp(in_info.Title, _ActiveWorkbookname))) { SetActiveWorkbook(info); } _Authorized = true; } } catch (System.Exception ex) { Debug.Log(ex.Message); _EditorInfo = Localize("ID_AUTH_ERROR"); SetString("AuthToken", string.Empty); } if (doWorkbookQuery) { foreach (var entry in feed.Entries.Cast<Google.GData.Spreadsheets.SpreadsheetEntry>()) { try { var info = _Workbooks.Find( in_i => GfuStrCmp(in_i.Title, entry.Feed.Title.Text) ); if (info == null) { info = new WorkBookInfo(entry); _Workbooks.Add(info); } if (GfuStrCmp(info.Title, _ActiveWorkbookname)) SetActiveWorkbook(info); } catch (System.Exception ex) { Debug.Log(Localize("ID_INACCESSIBLE_ERROR")); Debug.Log(ex.Message); } } _Authorized = true; } } _Manualworkbookurls.Clear(); var tmpManualWorkbooks = GetString("manualworkbookurls", System.String.Empty); var splitManualWorkbooks = tmpManualWorkbooks.Split(new[] { '|' }, System.StringSplitOptions.RemoveEmptyEntries); foreach (var info in splitManualWorkbooks.Select(in_s => AddManualWorkbookByUrl(in_s)).Where(in_info => in_info != null && GfuStrCmp(in_info.Title, _ActiveWorkbookname))) { SetActiveWorkbook(info); } }
WorkBookInfo AddManualWorkbookByUrl(string in_manualUrl) { WorkBookInfo info = null; if (string.IsNullOrEmpty(in_manualUrl)) { _EditorInfo = Localize("ID_NO_URL_ERROR"); return null; } try { var key = in_manualUrl.Substring(in_manualUrl.IndexOf("key=", System.StringComparison.InvariantCultureIgnoreCase) + 4); key = key.Split(new[] { '&' })[0]; var singleQuery = new Google.GData.Spreadsheets.WorksheetQuery(key, "public", "values"); Google.GData.Spreadsheets.WorksheetFeed feed = _Service.Query(singleQuery); var finalUrl = in_manualUrl.Split(new[] { '&' })[0]; if (feed != null) { foreach (var atomEntry in feed.Entries) { var entry = (Google.GData.Spreadsheets.WorksheetEntry)atomEntry; info = _Manualworkbooks.Find( in_i => GfuStrCmp(in_i.Url, finalUrl) ) ?? _Workbooks.Find( in_i => GfuStrCmp(in_i.Url, finalUrl) ); if (info == null) { info = new WorkBookInfo(); _Manualworkbooks.Add(info); if (_Manualworkbookurls.Contains(in_manualUrl) == false) _Manualworkbookurls.Add(in_manualUrl); var newManualWorkbookUrls = _Manualworkbookurls.Aggregate(System.String.Empty, (in_current, in_s) => in_current + (in_s + "|")); SetString("manualworkbookurls", newManualWorkbookUrls); } info.AddWorksheetEntry(entry, finalUrl); } } } catch { try { var key = in_manualUrl.Substring(in_manualUrl.IndexOf("spreadsheets/d/", System.StringComparison.InvariantCultureIgnoreCase) + 15); key = key.Split(new[] { '/' })[0]; var singleQuery = new Google.GData.Spreadsheets.WorksheetQuery(key, "public", "values"); var feed = _Service.Query(singleQuery); var urlParts = in_manualUrl.Split(new[] { '/' }); var finalUrl = ""; var urlBuild = 0; string urlPart; do { urlPart = urlParts[urlBuild]; finalUrl += urlPart + '/'; urlBuild++; } while (urlPart != key); if (feed != null) { foreach (var atomEntry in feed.Entries) { var entry = (Google.GData.Spreadsheets.WorksheetEntry)atomEntry; info = _Manualworkbooks.Find( in_i => GfuStrCmp(in_i.Url, finalUrl) ) ?? _Workbooks.Find( in_i => GfuStrCmp(in_i.Url, finalUrl) ); if (info == null) { info = new WorkBookInfo(); _Manualworkbooks.Add(info); if (_Manualworkbookurls.Contains(in_manualUrl) == false) _Manualworkbookurls.Add(in_manualUrl); string newManualWorkbookUrls = _Manualworkbookurls.Aggregate(System.String.Empty, (in_current, in_s) => in_current + (in_s + "|")); SetString("manualworkbookurls", newManualWorkbookUrls); } info.AddWorksheetEntry(entry, finalUrl); } } } catch { _EditorInfo = Localize("ID_INVALID_URL_ERROR"); } } return info; }
void SetActiveWorkbook(WorkBookInfo in_workBook) { _ActiveWorkbook = in_workBook; if(_ActiveWorkbook == null) return; if (_Service == null) return; var feed = _Service.Query(new Google.GData.Spreadsheets.SpreadsheetQuery()); foreach (var entry in feed.Entries.Cast<Google.GData.Spreadsheets.SpreadsheetEntry>().Where(in_entry => in_entry.Title.Text.Equals(in_workBook.Title))) { _ActiveWorkbook.SetupFromSpreadsheetEntry(entry); _CurrentPage = GfPage.Toolbox; } }