string ResolveToken(string token) { string value = ""; // Make sure this token starts with the '{'? if (token.StartsWith("{")) { // Get the name of this token string[] parts = token.Split("{}.".ToCharArray(), 3); // Make sure this resembled a real token? if (parts.Length == 3) { // Check for any contained commands? string testToken = "{" + parts[1] + "}"; // Determine which token we have? switch (testToken) { // Repository Tokens case TOKEN_Repository_Path: value = MOG_ControllerSystem.GetSystemRepositoryPath(); break; case TOKEN_Repository_ProjectsPath: value = MOG_ControllerSystem.GetSystemProjectsPath(); break; case TOKEN_Repository_ToolsPath: value = MOG_ControllerSystem.GetSystemRepositoryPath() + "\\Tools"; break; case TOKEN_Repository_Project_Path: value = MOG_ControllerProject.GetProjectPath(); break; case TOKEN_Repository_Project_ToolsPath: value = MOG_ControllerProject.GetProjectPath() + "\\Tools"; break; case TOKEN_Repository_Project_AssetsPath: value = MOG_ControllerRepository.GetRepositoryPath(); break; case TOKEN_Repository_Project_ArchivePath: value = MOG_ControllerRepository.GetArchivePath(); break; case TOKEN_Repository_Project_UsersPath: value = MOG_ControllerProject.GetProjectPath() + "\\Users"; break; // Project Tokens case TOKEN_Project_Name: value = MOG_ControllerProject.GetProjectName(); break; case TOKEN_Project_BranchName: value = MOG_ControllerProject.GetBranchName(); break; case TOKEN_Project_UserName: value = MOG_ControllerProject.GetUserName_DefaultAdmin(); break; case TOKEN_Project_PlatformName: value = MOG_ControllerProject.GetPlatformName(); break; case TOKEN_Project_WorkspaceDirectory: value = MOG_ControllerProject.GetWorkspaceDirectory(); break; // Ripper Tokens case TOKEN_Ripper_SourcePath: value = mRipperSourcePath; break; case TOKEN_Ripper_SourceFilePattern: value = mRipperSourceFilePattern; break; case TOKEN_Ripper_DestinationPath: value = mRipperDestinationPath; break; // Package Tokens case TOKEN_Package_WorkspaceDirectory: if (mPackageFileInfo != null) { value = mPackageFileInfo.mPackageWorkspaceDirectory; } break; case TOKEN_Package_DataDirectory: if (mPackageFileInfo != null) { value = mPackageFileInfo.mPackageDataDirectory; } break; case TOKEN_Package_PackageFile_Filename: if (mPackageFileInfo != null) { value = mPackageFileInfo.mPackageFile; } break; case TOKEN_Package_PackageFile_FullName: { MOG_Filename packageFilename = (mPackageFileInfo != null) ? mPackageFileInfo.mPackageAssetFilename : new MOG_Filename(MOG_ControllerPackage.GetPackageName(mPackageAssignment)); value = packageFilename.GetAssetFullName(); } break; case TOKEN_Package_PackageFile_Classification: { MOG_Filename packageFilename = (mPackageFileInfo != null) ? mPackageFileInfo.mPackageAssetFilename : new MOG_Filename(MOG_ControllerPackage.GetPackageName(mPackageAssignment)); value = packageFilename.GetAssetClassification(); } break; case TOKEN_Package_PackageFile_Label: { MOG_Filename packageFilename = (mPackageFileInfo != null) ? mPackageFileInfo.mPackageAssetFilename : new MOG_Filename(MOG_ControllerPackage.GetPackageName(mPackageAssignment)); value = packageFilename.GetAssetLabel(); } break; case TOKEN_Package_PackageFile_Platform: { MOG_Filename packageFilename = (mPackageFileInfo != null) ? mPackageFileInfo.mPackageAssetFilename : new MOG_Filename(MOG_ControllerPackage.GetPackageName(mPackageAssignment)); value = packageFilename.GetAssetPlatform(); } break; case TOKEN_Package_PackageFile_Group: value = MOG_ControllerPackage.GetPackageGroups(mPackageAssignment); break; case TOKEN_Package_PackageFile_Object: value = MOG_ControllerPackage.GetPackageObjects(mPackageAssignment); break; // Inbox Tokens case TOKEN_Inbox_UserName: value = mAssetFilename.GetUserName(); break; case TOKEN_Inbox_UserPath: value = mAssetFilename.GetUserPath(); break; case TOKEN_Inbox_BoxName: value = mAssetFilename.GetBoxName(); break; case TOKEN_Inbox_BoxPath: value = mAssetFilename.GetBoxPath(); break; // Asset Tokens case TOKEN_Asset_AssetName_Path: value = mAssetFilename.GetPath(); break; case TOKEN_Asset_AssetName_FullName: value = mAssetFilename.GetAssetFullName(); break; case TOKEN_Asset_AssetName_Classification: value = mAssetFilename.GetAssetClassification(); break; case TOKEN_Asset_AssetName_Name: value = mAssetFilename.GetAssetName(); break; case TOKEN_Asset_AssetName_PlatformName: value = mAssetFilename.GetAssetPlatform(); break; case TOKEN_Asset_AssetName_Label: value = mAssetFilename.GetAssetLabel(); break; case TOKEN_Asset_ImportedFile: case TOKEN_Asset_RippedFile: value = ResolveToken_AssetFile(token); break; case TOKEN_Asset_Property: value = ResolveToken_Property(token); break; case TOKEN_Asset_ClassificationPath: value = MOG_Filename.GetClassificationPath(mAssetFilename.GetAssetClassification()); break; case TOKEN_Asset_VersionTimeStamp: value = mAssetFilename.GetVersionTimeStamp(); break; } // Check if we have a command? if (parts[2] != ".") { } } } return(value); }
public void RefreshInbox(MOG_Command asset, MOG_Filename source, MOG_Filename destination) { // Skip this if we don't have an active project if (!mParent.mMog.IsProject()) { return; } // Check for remove if (destination.GetFullFilename().Length == 0) { // We are removing int index = mParent.ListViewItemFindItem(source.GetFilename(), mParent.mainForm.AssetManagerInboxMessagesListViewFilter); if (index != -1) { // Remove it from our list mParent.mainForm.AssetManagerInboxAssetListView.Items[index].Remove(); } } // Check for new message else if (source.GetFullFilename().Length == 0) { // We are importing MOG_Controller assetController = MOG_Controller.CreateController(mParent.mMog, destination.GetFullFilename()); if (!assetController.Open(destination.GetFullFilename())) { return; } // Check if this message is to go to the outbox or inbox if (string.Compare(destination.GetBoxName(), "Outbox", true) == 0) { // Create the newly added node ListViewItem item = mParent.CreateListViewNode(assetController.GetPropertiesFile().GetString("MESSAGE", "SUBJECT"), assetController.GetPropertiesFile().GetString("MESSAGE", "FROM"), assetController.GetPropertiesFile().GetString("ASSET", "TIME"), "ATTACHMENTS", assetController.GetPropertiesFile().GetString("MESSAGE", "CC"), "", assetController.GetAssetFilename().GetFullFilename(), assetController.GetAssetFilename().GetBoxName(), Color.Black); // Add it to our listView mParent.mainForm.AssetManagerOutboxMessagesListViewFilter.Items.Add(item); } else { // Create the newly added node ListViewItem item = mParent.CreateListViewNode(assetController.GetPropertiesFile().GetString("MESSAGE", "SUBJECT"), assetController.GetPropertiesFile().GetString("MESSAGE", "TO"), assetController.GetPropertiesFile().GetString("ASSET", "TIME"), "ATTACHMENTS", assetController.GetPropertiesFile().GetString("MESSAGE", "CC"), "", assetController.GetAssetFilename().GetFullFilename(), assetController.GetAssetFilename().GetBoxName(), Color.Blue); // Add it to our listView mParent.mainForm.AssetManagerInboxMessagesListViewFilter.Items.Add(item); } assetController.Close(); } }
public void RefreshBox(MOG_Filename add, MOG_Filename del, MOG_Command command) { Color textColorAdd = Color.Black; Color textColorDel = Color.Black; ListView currentViewAdd = mParent.IsolateListView(add.GetBoxName(), add.GetType(), add.GetUserName(), ref textColorAdd); ListView currentViewDel = mParent.IsolateListView(del.GetBoxName(), del.GetType(), del.GetUserName(), ref textColorDel); if (currentViewAdd == currentViewDel) { // Check to see if this item already exists? int index = ListViewItemMessagesFindItem(add.GetFullFilename(), currentViewAdd); if (index != -1) { currentViewAdd.Items[index].SubItems[(int)guiAssetManager.MessageBoxColumns.STATUS].Text = command.GetDescription(); currentViewAdd.Items[index].SubItems[(int)guiAssetManager.MessageBoxColumns.BOX].Text = add.GetBoxName(); currentViewAdd.Items[index].SubItems[(int)guiAssetManager.MessageBoxColumns.FULLNAME].Text = add.GetFullFilename(); currentViewAdd.Items[index].ForeColor = textColorAdd; for (int x = 0; x < currentViewAdd.Items[index].SubItems.Count; x++) { currentViewAdd.Items[index].SubItems[x].ForeColor = textColorAdd; } } } else { if (currentViewDel != null) { int index = ListViewItemMessagesFindItem(del.GetFullFilename(), currentViewDel); if (index != -1) { currentViewDel.Items[index].Remove(); } } if (currentViewAdd != null) { // Check to see if this item already exists? int index = ListViewItemMessagesFindItem(add.GetFullFilename(), currentViewAdd); if (index != -1) { currentViewAdd.Items[index].SubItems[(int)guiAssetManager.MessageBoxColumns.STATUS].Text = command.GetDescription(); currentViewAdd.Items[index].SubItems[(int)guiAssetManager.MessageBoxColumns.FULLNAME].Text = add.GetFullFilename(); currentViewAdd.Items[index].ForeColor = textColorAdd; for (int x = 0; x < currentViewAdd.Items[index].SubItems.Count; x++) { currentViewAdd.Items[index].SubItems[x].ForeColor = textColorAdd; } } else { MOG_ControllerMessage assetController = new MOG_ControllerMessage(mParent.mMog); if (!assetController.Open(add.GetFullFilename())) { return; } // Create the newly added node ListViewItem item = mParent.CreateListViewNode(assetController.GetSubject(), assetController.GetFrom(), assetController.GetFileInfo().LastWriteTime.ToString(), assetController.GetTo(), assetController.GetStatus(), "", assetController.GetAssetFilename().GetFullFilename(), assetController.GetAssetFilename().GetBoxName(), Color.Black); currentViewAdd.Items.Add(item); assetController.Close(); } } } // Update the Tab RefreshTab(command); }
public void RefreshBox(MOG_Filename add, MOG_Filename del, MOG_Command command) { Color textColorAdd = Color.Black; Color textColorDel = Color.Black; // Dont add if we dont have a valid box if (add.GetBoxName().Length == 0 && del.GetBoxName().Length == 0) { return; } ListView currentViewAdd = mParent.IsolateListView(add.GetBoxName(), add.GetType(), add.GetUserName(), ref textColorAdd); ListView currentViewDel = mParent.IsolateListView(del.GetBoxName(), del.GetType(), del.GetUserName(), ref textColorDel); if (currentViewAdd == currentViewDel) { // Check to see if this item already exists? int index = mParent.ListViewItemFindItem(add.GetFilename(), currentViewAdd); if (index != -1) { currentViewAdd.Items[index].SubItems[(int)guiAssetManager.TaskBoxColumns.STATUS].Text = command.GetDescription(); currentViewAdd.Items[index].SubItems[(int)guiAssetManager.TaskBoxColumns.FULLNAME].Text = add.GetFullFilename(); currentViewAdd.Items[index].ForeColor = textColorAdd; for (int x = 0; x < currentViewAdd.Items[index].SubItems.Count; x++) { currentViewAdd.Items[index].SubItems[x].ForeColor = textColorAdd; } } } else { if (currentViewDel != null) { int index = mParent.ListViewItemFindItem(del.GetFilename(), currentViewDel); if (index != -1) { currentViewDel.Items[index].Remove(); } } if (currentViewAdd != null) { // Check to see if this item already exists? int index = mParent.ListViewItemFindItem(add.GetFilename(), currentViewAdd); if (index != -1) { currentViewAdd.Items[index].SubItems[(int)guiAssetManager.TaskBoxColumns.STATUS].Text = command.GetDescription(); currentViewAdd.Items[index].SubItems[(int)guiAssetManager.TaskBoxColumns.FULLNAME].Text = add.GetFullFilename(); currentViewAdd.Items[index].ForeColor = textColorAdd; for (int x = 0; x < currentViewAdd.Items[index].SubItems.Count; x++) { currentViewAdd.Items[index].SubItems[x].ForeColor = textColorAdd; } } else { MOG_ControllerTask assetController = new MOG_ControllerTask(mParent.mMog); if (!assetController.Open(add.GetFullFilename())) { return; } ListViewItem item = new ListViewItem(); item.Text = assetController.GetTitle(); MOG_Time t = new MOG_Time(); t.SetTimeStamp(assetController.GetDueDate()); item.SubItems.Add(t.ToDateTime().ToString()); item.SubItems.Add(assetController.GetFileInfo().LastWriteTime.ToString()); item.SubItems.Add(assetController.GetCreator()); item.SubItems.Add(assetController.GetPriority()); item.SubItems.Add(assetController.GetStatus()); item.SubItems.Add(assetController.GetAsset()); item.SubItems.Add(assetController.GetAssetFilename().GetFullFilename()); item.SubItems.Add(assetController.GetAssetFilename().GetBoxName()); item.ForeColor = Color.Black; for (int x = 0; x < item.SubItems.Count; x++) { item.SubItems[x].ForeColor = textColorAdd; } item.ImageIndex = 0; //SetAssetIcon(String.Concat(mParent.mMog.GetActiveUser().GetUserPath(), "\\", box, "\\", assetName)); currentViewAdd.Items.Add(item); assetController.Close(); } } } // Update the tab RefreshTab(command); }
/// <summary> /// Update an existing ListView node for the asset manager inboxes /// </summary> /// <param name="pProperties"></param> /// <param name="nodeColor"></param> /// <returns></returns> public static void UpdateListViewItem(ListViewItem item, MOG_Filename asset, string status, MOG_Properties pProperties) { string date = ""; string size = ""; string creator = ""; string owner = ""; string group = ""; string target = ""; // Check if we have a properties? if (pProperties != null) { // If we have a valid gameDataController, set our platform scope if (MOG_ControllerProject.GetCurrentSyncDataController() != null) { // Set our current platform pProperties.SetScope(MOG_ControllerProject.GetCurrentSyncDataController().GetPlatformName()); } // Gather the following info from our properties date = MOG_Time.FormatTimestamp(pProperties.CreatedTime, ""); size = guiAssetController.FormatSize(pProperties.Size); creator = pProperties.Creator; owner = pProperties.Owner; group = pProperties.Group; // Check if this is a packaged asset? if (pProperties.IsPackagedAsset) { // Check if we have have any package assignments in our propeerties? ArrayList packages = pProperties.GetPackages(); if (packages.Count == 0) { // Indicate this is a packaged asset w/o any package assignments target = "Missing package assignment..."; } else if (packages.Count == 1) { MOG_Property package = packages[0] as MOG_Property; MOG_Filename packageName = new MOG_Filename(MOG_ControllerPackage.GetPackageName(package.mPropertyKey)); string packageGroupPath = MOG_ControllerPackage.GetPackageGroups(package.mPropertyKey); string displayString = MOG_ControllerPackage.CombinePackageAssignment(packageName.GetAssetLabel(), packageGroupPath, ""); target = "{Package} " + displayString + " in " + MOG_Filename.GetAdamlessClassification(packageName.GetAssetClassification()); } else { target = "{Package} " + packages.Count + " Assignments..."; } } else if (pProperties.SyncFiles) { // Get the formatted SyncTarget of this asset target = MOG_Tokens.GetFormattedString("{Workspace}\\" + pProperties.SyncTargetPath, asset, pProperties.GetPropertyList()); } } item.Text = asset.GetAssetLabel(); // Populate the item's SubItems // I tried for a long time to be smart here and use ColumnNameFind(thisListView.Columns, "Name") but // I kept running into walls because this function is used by a lot of workers outside of the ListView's thread. // So, I gave up and am just going to do it the ugly brute force way! YUCK!! item.SubItems[(int)AssetBoxColumns.NAME].Text = asset.GetAssetLabel(); item.SubItems[(int)AssetBoxColumns.CLASS].Text = asset.GetAssetClassification(); item.SubItems[(int)AssetBoxColumns.TARGETPATH].Text = target; item.SubItems[(int)AssetBoxColumns.DATE].Text = date; item.SubItems[(int)AssetBoxColumns.SIZE].Text = size; item.SubItems[(int)AssetBoxColumns.PLATFORM].Text = asset.GetAssetPlatform(); item.SubItems[(int)AssetBoxColumns.STATE].Text = status; item.SubItems[(int)AssetBoxColumns.CREATOR].Text = creator; item.SubItems[(int)AssetBoxColumns.RESPPARTY].Text = owner; item.SubItems[(int)AssetBoxColumns.OPTIONS].Text = ""; item.SubItems[(int)AssetBoxColumns.FULLNAME].Text = asset.GetEncodedFilename(); item.SubItems[(int)AssetBoxColumns.BOX].Text = asset.GetBoxName(); item.SubItems[(int)AssetBoxColumns.GROUP].Text = group; // Set the item's Icons item.ImageIndex = MogUtil_AssetIcons.GetFileIconIndex(asset.GetEncodedFilename(), pProperties); if (MogMainForm.MainApp != null && MogMainForm.MainApp.mAssetManager != null) { // mAssetStatus.GetStatusInfo() is sort of a black sheep and should maybe become static item.StateImageIndex = MogMainForm.MainApp.mAssetManager.mAssetStatus.GetStatusInfo(status).IconIndex; } // Set the item's color item.ForeColor = MOG_AssetStatus.GetColor(status); // Check if this is a local item that has been blessed? if (asset.IsLocal() && string.Compare(status, MOG_AssetStatus.GetText(MOG_AssetStatusType.Blessed), true) == 0) { // Mark local blessed items with light gray item.ForeColor = Color.LightGray; } }
/// <summary> /// Refresh an assets status from a ViewUpdate Command /// </summary> public void RefreshBox(MOG_Filename add, MOG_Filename del, MOG_Command command) { lock (mAssetManager) { ListView currentViewAdd = mAssetManager.IsolateListView(add.GetBoxName(), add.GetFilenameType(), add.GetUserName()); ListView currentViewDel = mAssetManager.IsolateListView(del.GetBoxName(), del.GetFilenameType(), del.GetUserName()); // Don't continue if we don't have a valid add and del box if ((currentViewAdd == null) && (currentViewDel == null)) { return; } // Begin the update if (currentViewAdd != null) { currentViewAdd.BeginUpdate(); } if (currentViewDel != null) { currentViewDel.BeginUpdate(); } string status = command.GetDescription(); mAssetManager.mainForm.mSoundManager.PlayStatusSound("AssetEvents", status); try { // Obtain the properties from the command MOG_Properties pProperties = null; string[] commandProps = command.GetVeriables().Split("$".ToCharArray()); if (commandProps != null) { ArrayList realProps = new ArrayList(); // Convert the commandProps into a list of real Properties for (int i = 0; i < commandProps.Length; i++) { // Confirm this appears to be a valid prop? if (commandProps[i].StartsWith("[")) { MOG_Property commandProp = new MOG_Property(commandProps[i]); // Make sure the property was initialized correctly? if (commandProp.mSection.Length > 0 && commandProp.mKey.Length > 0) { // Add this realProp realProps.Add(commandProp); } } } // Construct the pProperties from the realProps pProperties = new MOG_Properties(realProps); // If we have a valid gameDataController, set our platform scope if (MOG_ControllerProject.GetCurrentSyncDataController() != null) { pProperties.SetScope(MOG_ControllerProject.GetCurrentSyncDataController().GetPlatformName()); } } // Check if we are just updating an item in the same list? if (currentViewAdd == currentViewDel) { // Check to see if this item already exists? int targetIndex = mAssetManager.ListViewItemFindFullItem(del, currentViewDel); int sourceIndex = mAssetManager.ListViewItemFindFullItem(add, currentViewAdd); if (sourceIndex != -1) { // Update the existing item ListViewItem item = currentViewAdd.Items[sourceIndex]; guiAssetManager.UpdateListViewItem(item, add, status, pProperties); // If there was also a target index, we need to delete it because the source became the target. if (targetIndex != -1 && targetIndex != sourceIndex) { ListViewItem removeItem = currentViewAdd.Items[targetIndex]; // Make sure to clear our stateImage index which will clear the checked state before we attempt to remove the node or we will throw removeItem.StateImageIndex = 0; currentViewAdd.Items.Remove(removeItem); } } // Special case when we are dealing with a renamed file else if (targetIndex != -1 && sourceIndex == -1) { // Get the old item ListViewItem item = currentViewDel.Items[targetIndex]; // Update it to the new renamed item guiAssetManager.UpdateListViewItem(item, add, status, pProperties); } else { // Add a new item CreateListViewItem(currentViewAdd, add, status, pProperties); // Make sure we always keep our tab's text up-to-date mAssetManager.UpdateAssetManagerTabText(add); } } else { // Looks like we may need to do both the add and the remove // Check if we have the currentViewDel? if (currentViewDel != null) { int index = mAssetManager.ListViewItemFindFullItem(del, currentViewDel); if (index != -1) { ListViewItem item = currentViewDel.Items[index]; // Make sure to clear our stateImage index which will clear the checked state before we attempt to remove the node or we will throw item.StateImageIndex = 0; // Remove the item from the list currentViewDel.Items.Remove(item); // Make sure we always keep our tab's text up-to-date mAssetManager.UpdateAssetManagerTabText(del); } } // Check if we have the currentViewAdd? if (currentViewAdd != null) { // Check to see if this item already exists? int sourceIndex = mAssetManager.ListViewItemFindFullItem(add, currentViewAdd); if (sourceIndex != -1) { // Update the existing item ListViewItem item = currentViewAdd.Items[sourceIndex]; guiAssetManager.UpdateListViewItem(item, add, status, pProperties); } else { // Add a new item CreateListViewItem(currentViewAdd, add, status, pProperties); // Make sure we always keep our tab's text up-to-date mAssetManager.UpdateAssetManagerTabText(add); } } } } catch (Exception ex) { MOG_Report.ReportSilent("RefreshBox", ex.Message, ex.StackTrace); } // End the update if (currentViewAdd != null) { currentViewAdd.EndUpdate(); } if (currentViewDel != null) { currentViewDel.EndUpdate(); } } }