private string FormatString(guiAssetTreeTag tag, string format) { // Replace out any string options {} if (format.IndexOf("{projectRoot}") != -1) { format = format.Replace("{projectRoot}", MOG_ControllerProject.GetCurrentSyncDataController().GetSyncDirectory()); } // Replace out any string options {} if (format.IndexOf("{projectName}") != -1) { format = format.Replace("{projectName}", MOG_ControllerProject.GetProjectName()); } // Replace out any string options {} if (format.IndexOf("{LoginUserName}") != -1) { format = format.Replace("{LoginUserName}", MOG_ControllerProject.GetActiveUser().GetUserName()); } // Replace out any string options {} if (format.IndexOf("{SelectedItem}") != -1) { format = format.Replace("{SelectedItem}", tag.FullFilename); } return(format); }
private ArrayList ControlGetSelectedItems() { ArrayList nodes = new ArrayList(); // Get the list nodes if (mView != null && mTree == null) { string [] columnNames = (string[])mView.Tag; foreach (ListViewItem item in mView.SelectedItems) { string text = item.SubItems[ColumnNameFind(columnNames, "Fullname")].Text; guiAssetTreeTag Tag = new guiAssetTreeTag(text, guiAssetTreeTag.TREE_FOCUS.LABEL, true); Tag.mItemPtr = item; nodes.Add(Tag); } } // Get the tree nodes else if (mView == null && mTree != null) { guiAssetTreeTag Tag = (guiAssetTreeTag)mTree.SelectedNode.Tag; Tag.mItemPtr = mTree.SelectedNode; nodes.Add(Tag); } else { // No valid nodes return(null); } return(nodes); }
static protected void assetTreeViewCreate_AddIndividualNodes(string versionInfoFilename, string name, TreeView tree, TreeNode parent, guiAssetGamedataTreeTag.TREE_FOCUS level, int defaultImageIndex, bool createChildNode) { // Set the imageIndex for a new TreeNode, create the TreeNode, and create a blank tag for the new node TreeNode node = assetTreeViewCreate_GetTreeNodeWithIcon(name, defaultImageIndex); guiAssetTreeTag tag = null; // If `name` already has the project and projectpath, we need to get rid of it. string projectPath = MOG_ControllerProject.GetProject().GetProjectPath() + "\\"; string newName = name.Replace(projectPath, ""); // Get the blessed path for this assetname MOG_Filename asset = new MOG_Filename(projectPath + newName); if (asset.GetFilenameType() == MOG_FILENAME_TYPE.MOG_FILENAME_Asset) { MOG_Filename fullname = GetAssetFullname(asset, versionInfoFilename); tag = new guiAssetGamedataTreeTag(fullname.GetEncodedFilename(), level, true); } else { tag = new guiAssetGamedataTreeTag(asset.GetEncodedFilename(), level, false); } // Save the type of node this is (Key, Class, Group...) node.Tag = tag; // Don't add an extra child if we are at the end of the chain if (/*level != guiAssetGamedataTreeTag.TREE_FOCUS.LABEL ||*/ createChildNode) { // Add a blank for this keys child node.Nodes.Add(""); } // Check if we should add to the base or to a child if (parent == null) { tree.Nodes.Add(node); } else { parent.Nodes.Add(node); } }
static protected void assetTreeViewCreate_AddPackagesNodes(TreeNode parent, int defaultIndex) { // Clear any ghost node(s) parent.Nodes.Clear(); // Create a tag for local use guiAssetTreeTag parentTag = (guiAssetTreeTag)parent.Tag; // Populate packages node ArrayList packages = MOG_DBPackageAPI.GetPackageGroupsForAsset(new MOG_Filename(parentTag.FullFilename)); foreach (string package in packages) { TreeNode packageNode = new TreeNode(package, defaultIndex, 0); packageNode.Tag = parentTag; // Needs to be LABEL for recursion ((guiAssetTreeTag)packageNode.Tag).Level = guiAssetTreeTag.TREE_FOCUS.LABEL; assetTreeViewCreate_AddIndividualNodes("", package, null, parent, guiAssetTreeTag.TREE_FOCUS.LABEL, defaultIndex, true); } }
private void ExecucteCustomToolWindow(string toolGroup, string toolName, guiAssetTreeTag tag) { string infoFilename = mCustomToolsInfo.Replace("*", toolGroup); MOG_Ini customTools = new MOG_Ini(infoFilename); string command = ""; string argAsset = ""; System.Diagnostics.ProcessWindowStyle windowMode = System.Diagnostics.ProcessWindowStyle.Normal; bool createWindow = false; if (customTools.SectionExist(toolName)) { // Get command if (customTools.KeyExist(toolName, "Command")) { command = FormatString(tag, customTools.GetString(toolName, "Command")); } // Get argAsset if (customTools.KeyExist(toolName, "argAsset")) { argAsset = FormatString(tag, customTools.GetString(toolName, "argAsset")); } // Get window mode if (customTools.KeyExist(toolName, "windowMode")) { string mode = FormatString(tag, customTools.GetString(toolName, "windowMode")); if (string.Compare(mode, "Hidden", true) == 0) { windowMode = System.Diagnostics.ProcessWindowStyle.Hidden; } else if (string.Compare(mode, "Maximise", true) == 0) { windowMode = System.Diagnostics.ProcessWindowStyle.Maximized; } else if (string.Compare(mode, "Minimized", true) == 0) { windowMode = System.Diagnostics.ProcessWindowStyle.Minimized; } else if (string.Compare(mode, "Normal", true) == 0) { windowMode = System.Diagnostics.ProcessWindowStyle.Normal; } else { windowMode = System.Diagnostics.ProcessWindowStyle.Normal; } } // Get Toggle Options if (customTools.KeyExist(toolName, "ToggleOptions")) { createWindow = true; } // Get Numerical Options if (customTools.KeyExist(toolName, "NumericalOptions")) { createWindow = true; } // Get String Options if (customTools.KeyExist(toolName, "StringOptions")) { createWindow = true; } if (createWindow) { //CustomToolOptionsForm form = new CustomToolOptionsForm(); //form.Text = toolName; //if (form.ShowDialog() == DialogResult.OK) //{ // Do stuff //} } else { string output = ""; Report outputForm = new Report(mainForm); if (windowMode == System.Diagnostics.ProcessWindowStyle.Hidden) { outputForm.LogRichTextBox.Text = "GENERATING REPORT. PLEASE WAIT..."; outputForm.LogOkButton.Enabled = false; // Load saved positions //mainForm.mUserPrefs.Load("ReportForm", outputForm); guiUserPrefs.LoadDynamic_LayoutPrefs("ReportForm", outputForm); outputForm.Show(mainForm); Application.DoEvents(); } guiCommandLine.ShellSpawn(command.Trim(), argAsset.Trim(), windowMode, ref output); if (windowMode == System.Diagnostics.ProcessWindowStyle.Hidden) { outputForm.LogRichTextBox.Text = output; outputForm.LogOkButton.Enabled = true; } } } }
static protected void assetTreeViewCreate_AddVersionNodes(TreeView tree, TreeNode parent, int defaultIndex) { // Add version nodes TreeNode versionRoot = new TreeNode(VERSION_TOKEN, defaultIndex, 0); versionRoot.Tag = parent.Tag; parent.Nodes.Clear(); // Date format string string dateFormat = MOG_Tokens.GetMonth_1() + "/" + MOG_Tokens.GetDay_1() + "/" + MOG_Tokens.GetYear_4() + " " + MOG_Tokens.GetHour_1() + ":" + MOG_Tokens.GetMinute_2() + " " + MOG_Tokens.GetAMPM(); // Create a tag for ease of use guiAssetTreeTag parentTag = (guiAssetTreeTag)parent.Tag; // Get the lastest version string string versionStr = MOG_DBAssetAPI.GetAssetVersion(new MOG_Filename(parentTag.FullFilename)); // Populate HDD versions DirectoryInfo[] hddVersions = DosUtils.DirectoryGetList(parentTag.FullFilename, ""); // Arrange it latest date first Array.Reverse(hddVersions); // Populate DB versions ArrayList dbVersions = MOG_DBAssetAPI.GetAllAssetRevisions(new MOG_Filename(parentTag.FullFilename)); // Turn off sorting for this part of the tree tree.Sorted = false; foreach (DirectoryInfo version in hddVersions) { // Create a new versionNode MOG_Filename versionFile = new MOG_Filename(version.FullName); string textLabel = "<" + versionFile.GetVersionTimeStampString(dateFormat) + ">"; TreeNode versionNode = new TreeNode(textLabel, defaultIndex, 0); // Add guiAssetTreeTag and change color to indicate HDD-only status versionNode.Tag = new guiAssetTreeTag(version.FullName, guiAssetTreeTag.TREE_FOCUS.VERSION, true); // If this is a version matched in the DB, color is black if (assetTreeViewCreate_IsAssetVersionInDB(dbVersions, version.Name)) { versionNode.ForeColor = Color.Black; } // Else, turn color gray else { versionNode.ForeColor = Color.DarkGray; } //glk: This still needs to be tested against the case where there is no directory that matches the verion in versionStr // If this is the most recent asset, display it as such if (versionStr == versionFile.GetVersionTimeStamp()) { versionNode.ForeColor = Color.Blue; // Create a currentVersion node, manually cloning versionNode // glk: object.Clone() does not function properly TreeNode currentVersion = new TreeNode(textLabel, versionNode.ImageIndex, versionNode.SelectedImageIndex); currentVersion.ForeColor = Color.Blue; currentVersion.Tag = new guiAssetTreeTag(version.FullName, guiAssetTreeTag.TREE_FOCUS.VERSION, true); // Keep tree from drawing itself for a bit tree.BeginUpdate(); // Document the horizontal and vertical // positions of tree's scrollbar using extern functions int horizPos = GetHScrollPosition(tree); int vertPos = GetVScrollPosition(tree); // Expand the tree: This is the operation which causes // really erratic behavior from TreeView Control currentVersion.Expand(); // Add ghost node for further expansion currentVersion.Nodes.Add(new TreeNode("")); parent.Nodes.Add(currentVersion); // Set the scrollbar horizontal and vertical positions // back to what they were. SetHScrollPosition(tree, horizPos); SetVScrollPosition(tree, vertPos); // Allow tree to draw itself tree.EndUpdate(); } // Add new placeholder for further expansion versionNode.Nodes.Add(new TreeNode("")); versionRoot.Nodes.Add(versionNode); } parent.Nodes.Add(versionRoot); // Turn sorting back on tree.Sorted = true; }
static protected void assetTreeViewCreate_AddFilesNodes(TreeNode parent, int defaultIndex) { // Create files node TreeNode filesRoot = new TreeNode("Files", defaultIndex, 0); guiAssetTreeTag parentTag = (guiAssetTreeTag)parent.Tag; filesRoot.Tag = parentTag; ((guiAssetTreeTag)filesRoot.Tag).Level = guiAssetTreeTag.TREE_FOCUS.SUBVERSION; // Populate files TreeNode sourceRoot = new TreeNode("Imported Files", defaultIndex, 0); sourceRoot.Tag = filesRoot.Tag; TreeNode gameDataRoot = new TreeNode("Processed Files", defaultIndex, 0); gameDataRoot.Tag = filesRoot.Tag; DirectoryInfo[] directories = DosUtils.DirectoryGetList(parentTag.FullFilename, ""); // Go through each platform only for the asset of this parent node foreach (DirectoryInfo directory in directories) { // If this is a gamedata, add it with its subnode and file(s) if (directory.Name.ToLower().IndexOf("gamedata") > -1) { // Get rid of gamedata from directory.Name string gamedataName = directory.Name.ToLower().Replace("files.", ""); // Create a new node for each platform TreeNode platformNode = new TreeNode(gamedataName, defaultIndex, 0); platformNode.Tag = filesRoot.Tag; FileInfo[] files = DosUtils.FileGetList(directory.FullName, ""); // Add files in gamedata directory to platformNode if (files != null) { // Add each file to each gamedata<platform> node foreach (FileInfo file in files) { TreeNode fileNode = assetTreeViewCreate_GetTreeNodeWithIcon(file.Name, defaultIndex); fileNode.Tag = filesRoot.Tag; platformNode.Nodes.Add(fileNode); } } gameDataRoot.Nodes.Add(platformNode); } // Else if this is a files folder, add it to the source node else if (directory.Name.ToLower().IndexOf("files") > -1) { FileInfo[] files = DosUtils.FileGetList(directory.FullName, ""); if (files != null) { foreach (FileInfo file in files) { TreeNode fileNode = assetTreeViewCreate_GetTreeNodeWithIcon(file.Name, defaultIndex); fileNode.Tag = filesRoot.Tag; sourceRoot.Nodes.Add(fileNode); } } } } filesRoot.Nodes.Clear(); filesRoot.Nodes.AddRange(new TreeNode[] { sourceRoot, gameDataRoot }); parent.Nodes.Add(filesRoot); }