Пример #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            this.memory1Application_Partsnumput = new Memory1Application_PartsnumputImpl();
            this.memory1Application_Partsnumput.Form = this;
            this.memory1Application_Partsnumput.Delegate_OnSave = Form1_OnSave;
            this.memory1Application_Partsnumput.Delegate_OnPopupExplain = Form1_OnPopupExplain;

            this.usercontrolCanvas1.InitializeBeforeuse(this.memory1Application_Partsnumput);
            this.Memory1Application_Partsnumput.Delegate_OnRequestPaintBackground = this.usercontrolCanvas1.PaintBackground;
            this.Memory1Application_Partsnumput.Delegate_OnRequestPaintListsprite = this.Memory1Application_Partsnumput.PaintListsprite;
            this.Memory1Application_Partsnumput.Delegate_OnRequestWriteCsv = this.usercontrolCanvas1.WriteCsv;
            this.Memory1Application_Partsnumput.Delegate_OnChanged_SomeContents = this.Form1_OnChanged_SomeContents;
            this.Memory1Application_Partsnumput.Delegate_OnOpened_SomeFiles = this.Form1_OnOpened_SomeFiles;

            // リストボックスの一番上の項目を選ぶ。(再セット)
            this.usercontrolCanvas1.PcddlAlScale.SelectedIndex = 0;
            this.usercontrolCanvas1.PcddlBgOpaque.SelectedIndex = 0;

            //タイトル再描画
            this.RefreshTitle();

            //キャンバスにフォーカスを合わせる
            this.usercontrolCanvas1.Focus();

            //サイズを整える
            this.SizeFit();

            //グルーピング
            this.Memory1Application_Partsnumput.Grouping(this.Memory1Application_Partsnumput);
        }
Пример #2
0
        //────────────────────────────────────────

        public bool Contains(Point mouse, Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            return(this.BoundsCircleScaledOnBackground.Contains(
                       mouse.X - (int)memoryApplication_Partsnumput.BgLocationScaled.X,
                       mouse.Y - (int)memoryApplication_Partsnumput.BgLocationScaled.Y
                       ));
        }
Пример #3
0
        //────────────────────────────────────────
        #endregion



        #region アクション
        //────────────────────────────────────────

        public void InitializeBeforeuse(Memory1Application_Partsnumput owner_MemoryApplication)
        {
            this.owner_MemoryApplication = owner_MemoryApplication;

            this.Owner_MemoryApplication.Delegate_OnPngOpened        = OnOpenBackgroundimage;
            this.Owner_MemoryApplication.Delegate_OnCsvOpened        = OnCsvOpened;
            this.Owner_MemoryApplication.Delegate_OnErrorFilechooser = OnErrorFilechooser;
        }
Пример #4
0
 public void ClearNumbers(bool bLoadingNow, Memory1Application_Partsnumput memoryApplication_Partsnumput)
 {
     this.layerDic.Clear();
     if (!bLoadingNow)
     {
         memoryApplication_Partsnumput.IsChangedContents = true;
     }
 }
Пример #5
0
        //────────────────────────────────────────

        public string GetText(bool isHidden_Comment, Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            StringBuilder s = new StringBuilder();

            if (memoryApplication_Partsnumput.IsDisplayExecute)
            {
                if (this.IsDefinitionExpression)
                {
                    // 名前定義
                    s.Append(this.Name_Symbol);
                    s.Append("=");
                    s.Append(this.Execute_CalculateExpression());
                }
                else
                {
                    // 番号
                    s.Append(this.Execute_CalculateExpression());
                }
            }
            else
            {
                // そのまま表示

                if (isHidden_Comment)
                {
                    // コメントは隠す場合。

                    if (this.IsDefinitionExpression)
                    {
                        // 名前定義
                        s.Append(this.Name_Symbol);
                        s.Append("=");
                        s.Append(this.Valuenumber_Symbol);
                    }
                    else
                    {
                        // 番号

                        // 値は「b+3~4」といった形。
                        s.Append(this.Valuenumber_Symbol);
                    }
                }
                else
                {
                    s.Append(this.text);
                }
            }

            return(s.ToString());
        }
Пример #6
0
        //────────────────────────────────────────
        public void ReloadHtml( Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            StringBuilder s = new StringBuilder();
            s.Append("<html>");
            s.Append("<body style=\"font-family:MS ゴシック;font-size:10.5pt;color:gray;\">");

            foreach (string sGroupName in memoryApplication_Partsnumput.Array_NameGroup)
            {
                Memory4aPartsnumbersymbolspritesImpl moGroup = memoryApplication_Partsnumput.Dictionary_MemoryPartsnumbergroupImpl[sGroupName];

                //
                // 名前定義
                s.Append(moGroup.MemoryPartsnumbersprite_Symboldefinition.Name_Symbol);
                s.Append("=");
                if (memoryApplication_Partsnumput.IsDisplayExecute)
                {
                    s.Append(moGroup.MemoryPartsnumbersprite_Symboldefinition.Execute_CalculateExpression());
                }
                else
                {
                    s.Append(moGroup.MemoryPartsnumbersprite_Symboldefinition.Valuenumber_Symbol);
                }
                // コメント
                if ("" != moGroup.MemoryPartsnumbersprite_Symboldefinition.Comment)
                {
                    s.Append("/");
                    // 薄い青
                    s.Append("<span style=\"color:#3366ff;\">「");
                    s.Append(moGroup.MemoryPartsnumbersprite_Symboldefinition.Comment);
                    s.Append("」</span>");
                }
                s.Append("<br/>");
                s.Append(Environment.NewLine);

                //
                // Num要素
                if (0 < moGroup.List_MemoryPartsnumbersprite_Expression.Count)
                {
                    s.Append("<div style=\"margin-left:32px;\">");

                    int nColumn = 0;
                    foreach (Memory4bSpritePartsnumber mNum in moGroup.List_MemoryPartsnumbersprite_Expression)
                    {
                        StringBuilder s2 = new StringBuilder();

                        if (1 <= nColumn)
                        {
                            // 2列目以降は、頭に全角空白を1つ追加。
                            s2.Append(" ");
                        }

                        if (memoryApplication_Partsnumput.IsDisplayExecute)
                        {
                            // 絶対番号
                            s2.Append(mNum.Execute_CalculateExpression());
                        }
                        else
                        {
                            // 「a+0~2」形式
                            s2.Append(mNum.Valuenumber_Symbol);
                        }

                        if ("" != mNum.Comment)
                        {
                            // コメント
                            s2.Append("「");
                            s2.Append(mNum.Comment);
                            s2.Append("」");

                        }

                        string sTxt2 = s2.ToString();

                        s.Append(sTxt2);
                        nColumn++;
                    }

                    // 改行
                    s.Append("<br/>");
                    s.Append(Environment.NewLine);

                    s.Append("</div>");
                }

            }
            s.Append("</body>");
            s.Append("</html>");
            this.Html = s.ToString();

            goto gt_EndMethod;
            //
            //
            //
            //
            gt_EndMethod:
            ;
        }
        //────────────────────────────────────────
        public void Parse_CalculateExpression(Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            // 値は、「5000」「b+100」「b+0~3」といった形になっている。

            string result;
            string sValue = this.Valuenumber_Symbol.Trim();

            int nPlus = sValue.IndexOf('+');
            if (-1 == nPlus)
            {
                // 「+」が無ければ。

                int nValue;
                if (int.TryParse(sValue, out nValue))
                {
                    result = nValue.ToString();
                    if (!memoryApplication_Partsnumput.NameValueDic.ContainsKey(this.Name_Symbol.Trim()))
                    {
                        // 非既存なら。
                        memoryApplication_Partsnumput.NameValueDic.Add(this.Name_Symbol.Trim(), nValue);
                    }
                }
                else
                {
                    result = sValue;
                }
            }
            else
            {
                // 「+」が有れば。

                string sLeft = sValue.Substring(0, nPlus - 0).Trim();
                int nLeft;
                if (memoryApplication_Partsnumput.NameValueDic.ContainsKey(sLeft))
                {
                    nLeft = memoryApplication_Partsnumput.NameValueDic[sLeft];
                }
                else
                {
                    result = "エラー(" + sLeft + "=?)";
                    // #デバッグ
                    {
                        System.Console.WriteLine("↓");
                        foreach (KeyValuePair<string, int> kvP in memoryApplication_Partsnumput.NameValueDic)
                        {
                            System.Console.WriteLine(kvP.Key + "=" + kvP.Value);
                        }
                        System.Console.WriteLine("↑");
                    }
                    goto process_end;
                }

                string sRight;
                if (sValue.Length <= nPlus + 1)
                {
                    sRight = "";
                }
                else
                {
                    int nRightBegin = nPlus + 1;
                    int nLast = sValue.IndexOf(':');

                    if (-1 == nLast || sValue.Length <= nLast + 1)
                    {
                        // 「:」が無いか、空コメントがある場合。
                        sRight = sValue.Substring(nRightBegin).Trim();
                    }
                    else
                    {
                        sRight = sValue.Substring(nRightBegin, nLast - nRightBegin).Trim();
                    }
                }

                int nTilde = sRight.IndexOf('~');
                if (-1 == nTilde)
                {
                    // 「~」が無ければ。
                    int nRight;
                    int.TryParse(sRight, out nRight);

                    result = (nLeft + nRight).ToString();

                    //ystem.Console.WriteLine("Name「"+this.SName+"」  左「" + sLeft + "」(" + nLeft + ")+右「" + sRight + "」(" + nRight + ") → 「" + sResult + "」");

                    if (this.IsDefinitionExpression && !memoryApplication_Partsnumput.NameValueDic.ContainsKey(this.Name_Symbol))
                    {
                        // 名前定義で、非既存なら。
                        memoryApplication_Partsnumput.NameValueDic.Add(this.Name_Symbol, nLeft + nRight);
                    }
                }
                else
                {
                    // 「~」が有れば。

                    string sTildeLeft = sRight.Substring(0, nTilde).Trim();
                    int nTildeLeft;
                    int.TryParse(sTildeLeft, out nTildeLeft);

                    if (sRight.Length <= nTilde + 1)
                    {
                        // 「~」が末尾にある場合。
                        result = nTildeLeft.ToString() + "~";
                    }
                    else
                    {
                        // 「数字~数字」の場合。
                        int nBegin = nTilde + 1;
                        string sTildeRight = sRight.Substring(nBegin).Trim();
                        int nTildeRight;
                        int.TryParse(sTildeRight, out nTildeRight);

                        result = (nLeft + nTildeLeft).ToString() + "~" + (nLeft + nTildeRight).ToString();
                    }
                }
            }

            goto process_end;
            //
            process_end:
            this.sValueExecute = result;
        }
        //────────────────────────────────────────
        public string GetText( bool isHidden_Comment, Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            StringBuilder s = new StringBuilder();

            if (memoryApplication_Partsnumput.IsDisplayExecute)
            {
                if (this.IsDefinitionExpression)
                {
                    // 名前定義
                    s.Append(this.Name_Symbol);
                    s.Append("=");
                    s.Append(this.Execute_CalculateExpression());
                }
                else
                {
                    // 番号
                    s.Append(this.Execute_CalculateExpression());
                }
            }
            else
            {
                // そのまま表示

                if (isHidden_Comment)
                {
                    // コメントは隠す場合。

                    if (this.IsDefinitionExpression)
                    {
                        // 名前定義
                        s.Append(this.Name_Symbol);
                        s.Append("=");
                        s.Append(this.Valuenumber_Symbol);
                    }
                    else
                    {
                        // 番号

                        // 値は「b+3~4」といった形。
                        s.Append(this.Valuenumber_Symbol);
                    }
                }
                else
                {
                    s.Append(this.text);
                }

            }

            return s.ToString();
        }
 //────────────────────────────────────────
 public bool Contains(Point mouse, Memory1Application_Partsnumput memoryApplication_Partsnumput )
 {
     return this.BoundsCircleScaledOnBackground.Contains(
         mouse.X - (int)memoryApplication_Partsnumput.BgLocationScaled.X,
         mouse.Y - (int)memoryApplication_Partsnumput.BgLocationScaled.Y
         );
 }
        //────────────────────────────────────────
        /// <summary>
        /// グルーピング
        /// </summary>
        public void Grouping(Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            this.list_NameGroup.Clear();

            this.dictionary_MemoryPartsnumbergroupImpl.Clear();

            foreach (Memory4bSpritePartsnumber memSpritePartnumVisible in this.List_VisiblePartsnumbersprite)
            {
                // 書式からグループ分け。
                if (memSpritePartnumVisible.IsDefinitionExpression)
                {
                    if (dictionary_MemoryPartsnumbergroupImpl.ContainsKey(memSpritePartnumVisible.Name_Symbol))
                    {
                        // 「a=1000」など定義文が、既に登録されていた場合。
                        Memory4aPartsnumbersymbolspritesImpl memSymboldefinition = dictionary_MemoryPartsnumbergroupImpl[memSpritePartnumVisible.Name_Symbol];
                        memSymboldefinition.MemoryPartsnumbersprite_Symboldefinition = memSpritePartnumVisible;
                    }
                    else
                    {
                        // 「a=1000」など、未登録の定義文の場合。
                        Memory4aPartsnumbersymbolspritesImpl memSymboldefinition = new Memory4aPartsnumbersymbolspritesImpl();
                        memSymboldefinition.MemoryPartsnumbersprite_Symboldefinition = memSpritePartnumVisible;
                        dictionary_MemoryPartsnumbergroupImpl.Add(memSpritePartnumVisible.Name_Symbol, memSymboldefinition);
                        list_NameGroup.Add(memSpritePartnumVisible.Name_Symbol);
                    }
                }
                else
                {
                    // 「b+1」など。
                    Memory4aPartsnumbersymbolspritesImpl memSpriteExpression;
                    if (dictionary_MemoryPartsnumbergroupImpl.ContainsKey(memSpritePartnumVisible.Name_Symbol))
                    {
                        memSpriteExpression = dictionary_MemoryPartsnumbergroupImpl[memSpritePartnumVisible.Name_Symbol];
                    }
                    else
                    {
                        memSpriteExpression = new Memory4aPartsnumbersymbolspritesImpl();
                        dictionary_MemoryPartsnumbergroupImpl.Add(memSpritePartnumVisible.Name_Symbol, memSpriteExpression);
                        list_NameGroup.Add(memSpritePartnumVisible.Name_Symbol);
                    }

                    memSpriteExpression.List_MemoryPartsnumbersprite_Expression.Add(memSpritePartnumVisible);
                }
            }

            this.sGroupNameArray = this.List_NameGroup.ToArray();
            Array.Sort(sGroupNameArray);

            // 数値計算
            foreach (string sGroupName in this.Array_NameGroup)
            {
                Memory4aPartsnumbersymbolspritesImpl moGroup = this.Dictionary_MemoryPartsnumbergroupImpl[sGroupName];

                // 名前定義
                if (memoryApplication_Partsnumput.IsDisplayExecute)
                {
                    moGroup.MemoryPartsnumbersprite_Symboldefinition.Parse_CalculateExpression(memoryApplication_Partsnumput);
                }

                // Num要素
                foreach (Memory4bSpritePartsnumber mNum in moGroup.List_MemoryPartsnumbersprite_Expression)
                {
                    if (memoryApplication_Partsnumput.IsDisplayExecute)
                    {
                        mNum.Parse_CalculateExpression(memoryApplication_Partsnumput);
                    }
                }

            }
        }
Пример #11
0
        private void Form1_Load(object sender, EventArgs e)
        {
            this.memory1Application_Partsnumput = new Memory1Application_PartsnumputImpl();
            this.memory1Application_Partsnumput.Form = this;
            this.memory1Application_Partsnumput.Delegate_OnSave = Form1_OnSave;
            this.memory1Application_Partsnumput.Delegate_OnPopupExplain = Form1_OnPopupExplain;

            this.usercontrolCanvas1.InitializeBeforeuse(this.memory1Application_Partsnumput);
            this.Memory1Application_Partsnumput.Delegate_OnRequestPaintBackground = this.usercontrolCanvas1.PaintBackground;
            this.Memory1Application_Partsnumput.Delegate_OnRequestPaintListsprite = this.Memory1Application_Partsnumput.PaintListsprite;
            this.Memory1Application_Partsnumput.Delegate_OnRequestWriteCsv = this.usercontrolCanvas1.WriteCsv;
            this.Memory1Application_Partsnumput.Delegate_OnChanged_SomeContents = this.Form1_OnChanged_SomeContents;
            this.Memory1Application_Partsnumput.Delegate_OnOpened_SomeFiles = this.Form1_OnOpened_SomeFiles;

            // リストボックスの一番上の項目を選ぶ。(再セット)
            this.usercontrolCanvas1.PcddlAlScale.SelectedIndex = 0;
            this.usercontrolCanvas1.PcddlBgOpaque.SelectedIndex = 0;

            //タイトル再描画
            this.RefreshTitle();

            //キャンバスにフォーカスを合わせる
            this.usercontrolCanvas1.Focus();

            //サイズを整える
            this.SizeFit();

            //グルーピング
            this.Memory1Application_Partsnumput.Grouping(this.Memory1Application_Partsnumput);
        }
Пример #12
0
        //────────────────────────────────────────

        public void SetText_SpritePartsnumber(Memory4bSpritePartsnumber mNum, string sText, Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            if (mNum.Text != sText)
            {
                mNum.Text = sText;
                memoryApplication_Partsnumput.IsChangedContents = true;
            }
        }
Пример #13
0
        //────────────────────────────────────────

        public void RemovePartsnumberspriteAt(int selectedIndex, Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            this.List_VisiblePartsnumbersprite.RemoveAt(selectedIndex);
            memoryApplication_Partsnumput.IsChangedContents = true;
        }
Пример #14
0
        //────────────────────────────────────────

        /// <summary>
        /// 番号を追加します。
        /// </summary>
        /// <param name="mNum"></param>
        public void AddPartsnumbersprite(Memory4bSpritePartsnumber mNum, bool bLoadingNow, Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            if (!this.DictionaryLayer.ContainsKey(mNum.Number_Layer))
            {
                List <Memory4bSpritePartsnumber> mNumList = new List <Memory4bSpritePartsnumber>();
                mNumList.Add(mNum);
                this.DictionaryLayer.Add(mNum.Number_Layer, mNumList);
            }
            else
            {
                this.DictionaryLayer[mNum.Number_Layer].Add(mNum);
            }


            if (!bLoadingNow)
            {
                memoryApplication_Partsnumput.IsChangedContents = true;
            }
        }
 //────────────────────────────────────────
 public void RemovePartsnumberspriteAt(int selectedIndex, Memory1Application_Partsnumput memoryApplication_Partsnumput)
 {
     this.List_VisiblePartsnumbersprite.RemoveAt(selectedIndex);
     memoryApplication_Partsnumput.IsChangedContents = true;
 }
        //────────────────────────────────────────
        public void MovePartsnumbersprite(Memory4bSpritePartsnumber mNum, float dx, float dy, float nScale, Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            // 背景画像上のスプライト位置
            mNum.LocationOnBackgroundActual = new PointF(
                mNum.LocationOnBackgroundActual.X + dx / nScale,
                mNum.LocationOnBackgroundActual.Y + dy / nScale
                );
            //ystem.Console.WriteLine("移動前("+old.X+","+old.Y+") 移動後("+mNum.LocationOnBackgroundActual.X+","+mNum.LocationOnBackgroundActual.Y+")");

            mNum.Delegate_OnChangeSprite_Partsnumber(mNum, nScale);//, ucCanvas
            memoryApplication_Partsnumput.IsChangedContents = true;
        }
        //────────────────────────────────────────
        /// <summary>
        /// 番号を追加します。
        /// </summary>
        /// <param name="mNum"></param>
        public void AddPartsnumbersprite(Memory4bSpritePartsnumber mNum, bool bLoadingNow, Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            if (!this.DictionaryLayer.ContainsKey(mNum.Number_Layer))
            {
                List<Memory4bSpritePartsnumber> mNumList = new List<Memory4bSpritePartsnumber>();
                mNumList.Add(mNum);
                this.DictionaryLayer.Add(mNum.Number_Layer, mNumList);
            }
            else
            {
                this.DictionaryLayer[mNum.Number_Layer].Add(mNum);
            }

            if (!bLoadingNow)
            {
                memoryApplication_Partsnumput.IsChangedContents = true;
            }
        }
Пример #18
0
        //────────────────────────────────────────

        public void MovePartsnumbersprite(Memory4bSpritePartsnumber mNum, float dx, float dy, float nScale, Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            // 背景画像上のスプライト位置
            mNum.LocationOnBackgroundActual = new PointF(
                mNum.LocationOnBackgroundActual.X + dx / nScale,
                mNum.LocationOnBackgroundActual.Y + dy / nScale
                );
            //ystem.Console.WriteLine("移動前("+old.X+","+old.Y+") 移動後("+mNum.LocationOnBackgroundActual.X+","+mNum.LocationOnBackgroundActual.Y+")");

            mNum.Delegate_OnChangeSprite_Partsnumber(mNum, nScale);//, ucCanvas
            memoryApplication_Partsnumput.IsChangedContents = true;
        }
Пример #19
0
        //────────────────────────────────────────
        #endregion



        #region アクション
        //────────────────────────────────────────

        public void ReloadHtml(Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            StringBuilder s = new StringBuilder();

            s.Append("<html>");
            s.Append("<body style=\"font-family:MS ゴシック;font-size:10.5pt;color:gray;\">");

            foreach (string sGroupName in memoryApplication_Partsnumput.Array_NameGroup)
            {
                Memory4aPartsnumbersymbolspritesImpl moGroup = memoryApplication_Partsnumput.Dictionary_MemoryPartsnumbergroupImpl[sGroupName];

                //
                // 名前定義
                s.Append(moGroup.MemoryPartsnumbersprite_Symboldefinition.Name_Symbol);
                s.Append("=");
                if (memoryApplication_Partsnumput.IsDisplayExecute)
                {
                    s.Append(moGroup.MemoryPartsnumbersprite_Symboldefinition.Execute_CalculateExpression());
                }
                else
                {
                    s.Append(moGroup.MemoryPartsnumbersprite_Symboldefinition.Valuenumber_Symbol);
                }
                // コメント
                if ("" != moGroup.MemoryPartsnumbersprite_Symboldefinition.Comment)
                {
                    s.Append("/");
                    // 薄い青
                    s.Append("<span style=\"color:#3366ff;\">「");
                    s.Append(moGroup.MemoryPartsnumbersprite_Symboldefinition.Comment);
                    s.Append("」</span>");
                }
                s.Append("<br/>");
                s.Append(Environment.NewLine);

                //
                // Num要素
                if (0 < moGroup.List_MemoryPartsnumbersprite_Expression.Count)
                {
                    s.Append("<div style=\"margin-left:32px;\">");

                    int nColumn = 0;
                    foreach (Memory4bSpritePartsnumber mNum in moGroup.List_MemoryPartsnumbersprite_Expression)
                    {
                        StringBuilder s2 = new StringBuilder();

                        if (1 <= nColumn)
                        {
                            // 2列目以降は、頭に全角空白を1つ追加。
                            s2.Append(" ");
                        }

                        if (memoryApplication_Partsnumput.IsDisplayExecute)
                        {
                            // 絶対番号
                            s2.Append(mNum.Execute_CalculateExpression());
                        }
                        else
                        {
                            // 「a+0~2」形式
                            s2.Append(mNum.Valuenumber_Symbol);
                        }

                        if ("" != mNum.Comment)
                        {
                            // コメント
                            s2.Append("「");
                            s2.Append(mNum.Comment);
                            s2.Append("」");
                        }

                        string sTxt2 = s2.ToString();

                        s.Append(sTxt2);
                        nColumn++;
                    }

                    // 改行
                    s.Append("<br/>");
                    s.Append(Environment.NewLine);

                    s.Append("</div>");
                }
            }
            s.Append("</body>");
            s.Append("</html>");
            this.Html = s.ToString();

            goto gt_EndMethod;
            //
            //
            //
            //
gt_EndMethod:
            ;
        }
 //────────────────────────────────────────
 public void SetText_SpritePartsnumber(Memory4bSpritePartsnumber mNum, string sText, Memory1Application_Partsnumput memoryApplication_Partsnumput)
 {
     if (mNum.Text != sText)
     {
         mNum.Text = sText;
         memoryApplication_Partsnumput.IsChangedContents = true;
     }
 }
Пример #21
0
        //────────────────────────────────────────

        public void Parse_CalculateExpression(Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            // 値は、「5000」「b+100」「b+0~3」といった形になっている。

            string result;
            string sValue = this.Valuenumber_Symbol.Trim();

            int nPlus = sValue.IndexOf('+');

            if (-1 == nPlus)
            {
                // 「+」が無ければ。

                int nValue;
                if (int.TryParse(sValue, out nValue))
                {
                    result = nValue.ToString();
                    if (!memoryApplication_Partsnumput.NameValueDic.ContainsKey(this.Name_Symbol.Trim()))
                    {
                        // 非既存なら。
                        memoryApplication_Partsnumput.NameValueDic.Add(this.Name_Symbol.Trim(), nValue);
                    }
                }
                else
                {
                    result = sValue;
                }
            }
            else
            {
                // 「+」が有れば。

                string sLeft = sValue.Substring(0, nPlus - 0).Trim();
                int    nLeft;
                if (memoryApplication_Partsnumput.NameValueDic.ContainsKey(sLeft))
                {
                    nLeft = memoryApplication_Partsnumput.NameValueDic[sLeft];
                }
                else
                {
                    result = "エラー(" + sLeft + "=?)";
                    // #デバッグ
                    {
                        System.Console.WriteLine("↓");
                        foreach (KeyValuePair <string, int> kvP in memoryApplication_Partsnumput.NameValueDic)
                        {
                            System.Console.WriteLine(kvP.Key + "=" + kvP.Value);
                        }
                        System.Console.WriteLine("↑");
                    }
                    goto process_end;
                }


                string sRight;
                if (sValue.Length <= nPlus + 1)
                {
                    sRight = "";
                }
                else
                {
                    int nRightBegin = nPlus + 1;
                    int nLast       = sValue.IndexOf(':');

                    if (-1 == nLast || sValue.Length <= nLast + 1)
                    {
                        // 「:」が無いか、空コメントがある場合。
                        sRight = sValue.Substring(nRightBegin).Trim();
                    }
                    else
                    {
                        sRight = sValue.Substring(nRightBegin, nLast - nRightBegin).Trim();
                    }
                }


                int nTilde = sRight.IndexOf('~');
                if (-1 == nTilde)
                {
                    // 「~」が無ければ。
                    int nRight;
                    int.TryParse(sRight, out nRight);

                    result = (nLeft + nRight).ToString();

                    //ystem.Console.WriteLine("Name「"+this.SName+"」  左「" + sLeft + "」(" + nLeft + ")+右「" + sRight + "」(" + nRight + ") → 「" + sResult + "」");

                    if (this.IsDefinitionExpression && !memoryApplication_Partsnumput.NameValueDic.ContainsKey(this.Name_Symbol))
                    {
                        // 名前定義で、非既存なら。
                        memoryApplication_Partsnumput.NameValueDic.Add(this.Name_Symbol, nLeft + nRight);
                    }
                }
                else
                {
                    // 「~」が有れば。

                    string sTildeLeft = sRight.Substring(0, nTilde).Trim();
                    int    nTildeLeft;
                    int.TryParse(sTildeLeft, out nTildeLeft);

                    if (sRight.Length <= nTilde + 1)
                    {
                        // 「~」が末尾にある場合。
                        result = nTildeLeft.ToString() + "~";
                    }
                    else
                    {
                        // 「数字~数字」の場合。
                        int    nBegin      = nTilde + 1;
                        string sTildeRight = sRight.Substring(nBegin).Trim();
                        int    nTildeRight;
                        int.TryParse(sTildeRight, out nTildeRight);

                        result = (nLeft + nTildeLeft).ToString() + "~" + (nLeft + nTildeRight).ToString();
                    }
                }
            }

            goto process_end;
            //
process_end:
            this.sValueExecute = result;
        }
Пример #22
0
        //────────────────────────────────────────
        public void InitializeBeforeuse(Memory1Application_Partsnumput owner_MemoryApplication)
        {
            this.owner_MemoryApplication = owner_MemoryApplication;

            this.Owner_MemoryApplication.Delegate_OnPngOpened = OnOpenBackgroundimage;
            this.Owner_MemoryApplication.Delegate_OnCsvOpened = OnCsvOpened;
            this.Owner_MemoryApplication.Delegate_OnErrorFilechooser = OnErrorFilechooser;
        }
Пример #23
0
        //────────────────────────────────────────

        /// <summary>
        /// グルーピング
        /// </summary>
        public void Grouping(Memory1Application_Partsnumput memoryApplication_Partsnumput)
        {
            this.list_NameGroup.Clear();

            this.dictionary_MemoryPartsnumbergroupImpl.Clear();

            foreach (Memory4bSpritePartsnumber memSpritePartnumVisible in this.List_VisiblePartsnumbersprite)
            {
                // 書式からグループ分け。
                if (memSpritePartnumVisible.IsDefinitionExpression)
                {
                    if (dictionary_MemoryPartsnumbergroupImpl.ContainsKey(memSpritePartnumVisible.Name_Symbol))
                    {
                        // 「a=1000」など定義文が、既に登録されていた場合。
                        Memory4aPartsnumbersymbolspritesImpl memSymboldefinition = dictionary_MemoryPartsnumbergroupImpl[memSpritePartnumVisible.Name_Symbol];
                        memSymboldefinition.MemoryPartsnumbersprite_Symboldefinition = memSpritePartnumVisible;
                    }
                    else
                    {
                        // 「a=1000」など、未登録の定義文の場合。
                        Memory4aPartsnumbersymbolspritesImpl memSymboldefinition = new Memory4aPartsnumbersymbolspritesImpl();
                        memSymboldefinition.MemoryPartsnumbersprite_Symboldefinition = memSpritePartnumVisible;
                        dictionary_MemoryPartsnumbergroupImpl.Add(memSpritePartnumVisible.Name_Symbol, memSymboldefinition);
                        list_NameGroup.Add(memSpritePartnumVisible.Name_Symbol);
                    }
                }
                else
                {
                    // 「b+1」など。
                    Memory4aPartsnumbersymbolspritesImpl memSpriteExpression;
                    if (dictionary_MemoryPartsnumbergroupImpl.ContainsKey(memSpritePartnumVisible.Name_Symbol))
                    {
                        memSpriteExpression = dictionary_MemoryPartsnumbergroupImpl[memSpritePartnumVisible.Name_Symbol];
                    }
                    else
                    {
                        memSpriteExpression = new Memory4aPartsnumbersymbolspritesImpl();
                        dictionary_MemoryPartsnumbergroupImpl.Add(memSpritePartnumVisible.Name_Symbol, memSpriteExpression);
                        list_NameGroup.Add(memSpritePartnumVisible.Name_Symbol);
                    }

                    memSpriteExpression.List_MemoryPartsnumbersprite_Expression.Add(memSpritePartnumVisible);
                }
            }

            this.sGroupNameArray = this.List_NameGroup.ToArray();
            Array.Sort(sGroupNameArray);

            // 数値計算
            foreach (string sGroupName in this.Array_NameGroup)
            {
                Memory4aPartsnumbersymbolspritesImpl moGroup = this.Dictionary_MemoryPartsnumbergroupImpl[sGroupName];

                // 名前定義
                if (memoryApplication_Partsnumput.IsDisplayExecute)
                {
                    moGroup.MemoryPartsnumbersprite_Symboldefinition.Parse_CalculateExpression(memoryApplication_Partsnumput);
                }

                // Num要素
                foreach (Memory4bSpritePartsnumber mNum in moGroup.List_MemoryPartsnumbersprite_Expression)
                {
                    if (memoryApplication_Partsnumput.IsDisplayExecute)
                    {
                        mNum.Parse_CalculateExpression(memoryApplication_Partsnumput);
                    }
                }
            }
        }
 public void ClearNumbers(bool bLoadingNow, Memory1Application_Partsnumput memoryApplication_Partsnumput)
 {
     this.layerDic.Clear();
     if (!bLoadingNow)
     {
         memoryApplication_Partsnumput.IsChangedContents = true;
     }
 }