Ejemplo n.º 1
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int           ifrom = 0;
            int           ito   = 0;
            KeyConfigData KD    = (KeyConfigData)value;
            ObservableCollection <string> dist = new ObservableCollection <string>();

            if (value == null)
            {
                return(dist);
            }
            while (ito < KD.assign.Length)
            {
                //最初の{を検索
                ifrom = KD.assign.IndexOf("{", ito);
                if (ifrom >= 0)
                {
                    //{が発見できた場合}を検索
                    ito = KD.assign.IndexOf("}", ifrom);
                    if (ito >= 0)
                    {
                        //{から}までをショートカットとして設定
                        dist.Add(KD.assign.Substring(ifrom + 1, ito - ifrom - 1));
                    }
                }
                else
                {
                    break;
                }
            }
            return(dist);
        }
Ejemplo n.º 2
0
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            ObservableCollection <string> aaa = (ObservableCollection <string>)value;
            KeyConfigData KD = new KeyConfigData();

            foreach (string tmp in aaa)
            {
                //1レコードごとに{}で囲んで結合前後にスペース
                KD.assign += " {" + tmp + "} ";
            }
            return(KD);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// アプリケーション設定からショートカットキー全定義取得
        /// データグリッドの一覧作成元になります
        /// </summary>
        /// <param name="KeyConvDef"></param>
        public void GetAllDef(KeyConfigList KL)
        {
            StringCollection src = Properties.Settings.Default.AllKeyDef;

            //ショートカットキー全定義取得
            foreach (string str in src)
            {
                KeyConfigData fd = new KeyConfigData();
                //最初の空白を検索
                int ito = str.IndexOf(" ");
                //最初の空白までをカテゴリとして抽出
                fd.Cat = str.Substring(0, ito);
                int ifrom = ito + 1;
                ito = str.IndexOf(" ", ifrom);
                //次の空白までをIDとして抽出
                fd.ID = Convert.ToInt32(str.Substring(ifrom, ito - ifrom));
                ifrom = ito + 1;
                //残りを機能名として設定
                fd.name = str.Substring(ifrom);
                KL.Add(fd);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 猫ペイントのkey.txtを取得
        /// 取得したキー割り当てを一覧から探して設定
        /// 一覧にない場合(4352以降のスクリプトショートカット)は追加
        /// </summary>
        public void ReadNekoKeytxt(string NpDir, int ScriptID, Dictionary <string, int> Assigned, Dictionary <int, string> AllName, KeyConfigList KL)
        {
            try
            {
                //重複定義回避用
                List <int> dupChk = new List <int>();
                // シフトJISのファイルの読み込み
                string[] lines1 = File.ReadAllLines(NpDir + "\\config\\key.txt",
                                                    System.Text.Encoding.GetEncoding("Shift_JIS"));
                foreach (string line in lines1)
                {
                    int           ID;
                    string        KEY;
                    string        name   = "";
                    List <string> tmpDiv = new List <string>();

                    //最初の空白を検索
                    int ito = line.IndexOf(" ");
                    //最初の空白までをIDとして抽出
                    ID = Convert.ToInt32(line.Substring(0, ito));
                    //重複チェック
                    if (dupChk.Contains(ID))
                    {
                        //重複していたら二件目以降を無視
                        continue;
                    }
                    dupChk.Add(ID);
                    //最初の{を検索
                    int ifrom = ito + 1;
                    ito = line.IndexOf("{", ifrom);
                    if (ito > 0)
                    {
                        name = line.Substring(ifrom, ito - ifrom);
                        //{が発見できた場合(ショートカット設定済み)
                        //{までを機能名として設定
                        ifrom = ito;
                        //最後の}を検索
                        ito = line.LastIndexOf("}");
                        if (ito > ifrom)
                        {
                            //{から}までを取得。前後にスペースを付加
                            KEY = " " + line.Substring(ifrom, ito - ifrom + 1) + " ";
                            //作成済みの一覧からIDを検索
                            bool Flg = false;
                            foreach (var fd in KL)
                            {
                                if (fd.ID == ID)
                                {
                                    //IDの一致するレコードにショートカット設定
                                    fd.assign = KEY;
                                    //分割後の割り当てを取得
                                    fd.DivAssign(tmpDiv);
                                    //重複回避用一時領域
                                    List <string> tmp = new List <string>();
                                    foreach (string div in tmpDiv)
                                    {
                                        if (Assigned.ContainsKey(div) != true)
                                        {
                                            //割り当て済みリストに追加
                                            Assigned.Add(div, ID);
                                            tmp.Add(div);
                                        }
                                    }
                                    if (tmp.Count > 0)
                                    {
                                        fd.CatAssign(tmp);
                                    }
                                    else
                                    {
                                        fd.assign = "";
                                    }
                                    Flg = true;
                                    break;
                                }
                            }
                            if (Flg == false)
                            {
                                AllName.Add(ID, name);
                                KeyConfigData fd = new KeyConfigData();
                                fd.ID     = ID;
                                fd.name   = name;
                                fd.assign = KEY;
                                fd.Cat    = "スクリプト";
                                KL.Add(fd);
                                fd.DivAssign(tmpDiv);
                                foreach (string div in tmpDiv)
                                {
                                    //割り当て済みリストに追加
                                    Assigned.Add(div, ID);
                                }
                            }
                        }
                    }
                    else
                    {
                        name = line.Substring(ifrom);
                        //作成済みの一覧からIDを検索
                        bool Flg = false;
                        foreach (var fd in KL)
                        {
                            if (fd.ID == ID)
                            {
                                Flg = true;
                                break;
                            }
                        }
                        if (Flg == false)
                        {
                            AllName.Add(ID, name);
                            KeyConfigData fd = new KeyConfigData();
                            fd.ID   = ID;
                            fd.name = name;
                            fd.Cat  = "スクリプト";
                            KL.Add(fd);
                        }
                    }
                }
            }

            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }