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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
        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;
                    }
                }
            }
        }
Exemple #6
0
        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;
        }
Exemple #7
0
        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);
        }