void AddFilePathVars(IVariableValueSetter var_value_setter, ref string path, bool user_forward_slashes, string var_name_prefix)
 {
     Util.FilenameParts parts = new Util.FilenameParts();
     Util.ProcessFilePath(path, user_forward_slashes, ref parts);
     var_value_setter.SetVariable(var_name_prefix + "path", parts.path);
     var_value_setter.SetVariable(var_name_prefix + "dir", parts.dir);
     var_value_setter.SetVariable(var_name_prefix + "file", parts.file);
     var_value_setter.SetVariable(var_name_prefix + "filename", parts.filename);
     var_value_setter.SetVariable(var_name_prefix + "ext", parts.ext);
     path = parts.path;
 }
        void SetVariableValuesFromIDEState(IVariableValueSetter var_value_setter, VSMultiInstanceInfo multi_instance_info)
        {
            VarValues var_values = new VarValues();
            try
            {
                GetVariableValues(var_values);
            }
            catch (System.Exception ex)
            {
                var_values.exceptions.Add(ex);
            }

            if (var_values.exceptions.Count > 0 && m_Package.IsDebugEnabled())
            {
                DebugOutput.WriteLine("----- Exceptions: GetVariableValues:");
                foreach (Exception ex in var_values.exceptions)
                    DebugOutput.WriteLine("EX: " + ex.ToString());
            }

            AddFilePathVars(var_value_setter, ref var_values.sln_path, SlashPathSeparator, "sln_");
            var_value_setter.SetVariable("sln_open", var_values.sln_path.Length > 0);
            var_value_setter.SetVariable("sln_dirty", var_values.sln_dirty ? "*" : "");

            AddFilePathVars(var_value_setter, ref var_values.doc_path, SlashPathSeparator, "doc_");
            var_value_setter.SetVariable("doc_open", var_values.doc_path.Length > 0);
            var_value_setter.SetVariable("doc_dirty", var_values.doc_dirty ? "*" : "");
            var_value_setter.SetVariable("any_doc_dirty", var_values.any_doc_dirty ? "*" : "");

            AddFilePathVars(var_value_setter, ref var_values.startup_proj_path, SlashPathSeparator, "startup_proj_");
            var_value_setter.SetVariable("startup_proj", var_values.startup_proj);
            var_value_setter.SetVariable("startup_proj_dirty", var_values.startup_proj_dirty ? "*" : "");

            var_value_setter.SetVariable("any_proj_dirty", var_values.any_proj_dirty ? "*" : "");
            var_value_setter.SetVariable("anything_dirty", (var_values.sln_dirty || var_values.any_proj_dirty || var_values.any_doc_dirty) ? "*" : "");

            var_value_setter.SetVariable("wnd_minimized", var_values.wnd_minimized);
            var_value_setter.SetVariable("wnd_foreground", var_values.wnd_foreground);
            var_value_setter.SetVariable("app_active", var_values.app_active);

            bool debugging = false;
            string debug_mode = "";
            switch (var_values.dbgmode)
            {
                case DBGMODE.DBGMODE_Run:
                    debugging = true;
                    debug_mode = "running";
                    break;
                case DBGMODE.DBGMODE_Break:
                    debugging = true;
                    debug_mode = "debugging";
                    break;
            }

            var_value_setter.SetVariable("debugging", debugging);
            var_value_setter.SetVariable("debug_mode", debug_mode);

            var_value_setter.SetVariable("configuration", var_values.configuration);
            var_value_setter.SetVariable("platform", var_values.platform);

            var_value_setter.SetVariable("orig_title", var_values.orig_title);

            var_value_setter.SetVariable("multi_instances", multi_instance_info.multiple_instances);
            var_value_setter.SetVariable("multi_instances_same_ver", multi_instance_info.multiple_instances_same_version);

            var_value_setter.SetVariable("active_wnd_title", var_values.active_wnd_title);
            var_value_setter.SetVariable("active_wnd_class", var_values.active_wnd_class);

            var_value_setter.SetVariable("cmdline", var_values.cmdline);
        }
 void AddFilePathVars(IVariableValueSetter var_value_setter, ref string path, bool user_forward_slashes, string var_name_prefix)
 {
     Util.FilenameParts parts = new Util.FilenameParts();
     Util.ProcessFilePath(path, user_forward_slashes, ref parts);
     var_value_setter.SetVariable(var_name_prefix + "path", parts.path);
     var_value_setter.SetVariable(var_name_prefix + "dir", parts.dir);
     var_value_setter.SetVariable(var_name_prefix + "file", parts.file);
     var_value_setter.SetVariable(var_name_prefix + "filename", parts.filename);
     var_value_setter.SetVariable(var_name_prefix + "ext", parts.ext);
     path = parts.path;
 }
        void SetVariableValuesFromIDEState(IVariableValueSetter var_value_setter, VSMultiInstanceInfo multi_instance_info)
        {
            VarValues var_values = new VarValues();

            try
            {
                GetVariableValues(var_values);
            }
            catch (System.Exception ex)
            {
                var_values.exceptions.Add(ex);
            }

            if (var_values.exceptions.Count > 0 && m_Package.IsDebugEnabled())
            {
                DebugOutput.WriteLine("----- Exceptions: GetVariableValues:");
                foreach (Exception ex in var_values.exceptions)
                {
                    DebugOutput.WriteLine("EX: " + ex.ToString());
                }
            }

            AddFilePathVars(var_value_setter, ref var_values.sln_path, SlashPathSeparator, "sln_");
            var_value_setter.SetVariable("sln_open", var_values.sln_path.Length > 0);
            var_value_setter.SetVariable("sln_dirty", var_values.sln_dirty ? "*" : "");

            AddFilePathVars(var_value_setter, ref var_values.doc_path, SlashPathSeparator, "doc_");
            var_value_setter.SetVariable("doc_open", var_values.doc_path.Length > 0);
            var_value_setter.SetVariable("doc_dirty", var_values.doc_dirty ? "*" : "");
            var_value_setter.SetVariable("any_doc_dirty", var_values.any_doc_dirty ? "*" : "");

            AddFilePathVars(var_value_setter, ref var_values.startup_proj_path, SlashPathSeparator, "startup_proj_");
            var_value_setter.SetVariable("startup_proj", var_values.startup_proj);
            var_value_setter.SetVariable("startup_proj_dirty", var_values.startup_proj_dirty ? "*" : "");

            var_value_setter.SetVariable("any_proj_dirty", var_values.any_proj_dirty ? "*" : "");
            var_value_setter.SetVariable("anything_dirty", (var_values.sln_dirty || var_values.any_proj_dirty || var_values.any_doc_dirty) ? "*" : "");

            var_value_setter.SetVariable("wnd_minimized", var_values.wnd_minimized);
            var_value_setter.SetVariable("wnd_foreground", var_values.wnd_foreground);
            var_value_setter.SetVariable("app_active", var_values.app_active);

            bool   debugging  = false;
            string debug_mode = "";

            switch (var_values.dbgmode)
            {
            case DBGMODE.DBGMODE_Run:
                debugging  = true;
                debug_mode = "running";
                break;

            case DBGMODE.DBGMODE_Break:
                debugging  = true;
                debug_mode = "debugging";
                break;
            }

            var_value_setter.SetVariable("debugging", debugging);
            var_value_setter.SetVariable("debug_mode", debug_mode);

            var_value_setter.SetVariable("configuration", var_values.configuration);
            var_value_setter.SetVariable("platform", var_values.platform);

            var_value_setter.SetVariable("orig_title", var_values.orig_title);

            var_value_setter.SetVariable("multi_instances", multi_instance_info.multiple_instances);
            var_value_setter.SetVariable("multi_instances_same_ver", multi_instance_info.multiple_instances_same_version);

            var_value_setter.SetVariable("active_wnd_title", var_values.active_wnd_title);
            var_value_setter.SetVariable("active_wnd_class", var_values.active_wnd_class);

            var_value_setter.SetVariable("cmdline", var_values.cmdline);
        }