Example #1
0
        /// <summary>
        /// 行番号からオプションを取得する
        /// </summary>
        /// <param name="inLineNo">行番号</param>
        /// <returns>行番号のオプション</returns>
        public static ClsDatOption GetOptionFromLineNo(int inLineNo)
        {
            ClsDatItem clItem = ClsSystem.GetItemFromLineNo(inLineNo);

            if (clItem == null)
            {
                return(null);
            }

            ClsDatOption clOption = null;
            bool         isExist;

            if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.ELEM)
            {
                ClsDatElem clElem = clItem as ClsDatElem;
                if (clElem == null)
                {
                    return(null);
                }

                isExist = clElem.mDicOption.ContainsKey(EnmTypeOption.DISPLAY);
                if (!isExist)
                {
                    return(null);
                }

                clOption = clElem.mDicOption[EnmTypeOption.DISPLAY];
            }
            else if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.OPTION)
            {
                clOption = clItem as ClsDatOption;
            }

            return(clOption);
        }
Example #2
0
        private void panel_Control_MouseDown(object sender, MouseEventArgs e)
        {
            ClsDatMotion clMotion = ClsSystem.GetSelectMotion();

            if (clMotion == null)
            {
                return;
            }

            //以下、テキストボックス削除処理
            this.RemoveTextBoxName();

            //以下、アイテム選択処理
            int inLineNo = this.GetLineNoFromPositionY(e.Y);

            ClsSystem.SetSelectFromLineNo(inLineNo);

            if (e.Button == MouseButtons.Left)
            {
                //以下、掴んでいるエレメントを別ウィンドウで表示する処理
                ClsDatItem clItem = clMotion.GetItemFromLineNo(inLineNo);
                if (clItem != null && clItem.mTypeItem == ClsDatItem.TYPE_ITEM.ELEM)
                {
                    int inX = Cursor.Position.X;
                    int inY = Cursor.Position.Y;
                    this.mCatchPosStart = new Point(inX, inY);
                }
            }

            //以下、コントロール更新処理
            this.RefreshControl();
            this.panel_Control.Refresh();
            this.panel_Time.Refresh();
            this.mFormMain.Refresh();
        }
Example #3
0
        /// <summary>
        /// 行番号からエレメントを取得する
        /// その行がオプションの場合は、その親のエレメントを取得する
        /// </summary>
        /// <param name="inLineNo">行番号</param>
        /// <returns>行番号のエレメント</returns>
        public static ClsDatElem GetElemFromLineNo(int inLineNo)
        {
            if (inLineNo < 0)
            {
                return(null);
            }

            ClsDatItem clItem = ClsSystem.GetItemFromLineNo(inLineNo);

            if (clItem == null)
            {
                return(null);
            }

            if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.ELEM)
            {
                ClsDatElem clElem = clItem as ClsDatElem;
                return(clElem);
            }
            else if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.OPTION)
            {
                ClsDatOption clOption = clItem as ClsDatOption;
                ClsDatElem   clElem   = clOption.mElemParent;
                return(clElem);
            }

            return(null);
        }
Example #4
0
        /// <summary>
        /// アイテムを選択する処理
        /// </summary>
        /// <param name="clItem">アイテム</param>
        public void SetSelectFromItem(ClsDatItem clItem)
        {
            if (clItem == null)
            {
                return;
            }

            ClsSystem.SetSelectFromLineNo(clItem.mLineNo);
        }
Example #5
0
        /// <summary>
        /// 選択中のアイテムを取得する処理
        /// </summary>
        /// <returns>選択中のアイテム</returns>
        private static ClsDatItem GetItemFromSelectLineNo()
        {
            int inLineNo = ClsSystem.GetSelectLineNo();

            if (inLineNo < 0)
            {
                return(null);
            }

            ClsDatItem clItem = ClsSystem.GetItemFromLineNo(inLineNo);

            return(clItem);
        }
Example #6
0
        private void button_ItemDown_Click(object sender, EventArgs e)
        {
            ClsDatMotion clMotion = ClsSystem.GetSelectMotion();

            if (clMotion == null)
            {
                return;
            }

            int inLineNo = ClsSystem.GetSelectLineNo();

            if (inLineNo < 0)
            {
                return;
            }

            ClsDatItem clItem = clMotion.GetItemFromLineNo(inLineNo);

            if (clItem == null)
            {
                return;
            }
            if (clItem.mTypeItem != ClsDatItem.TYPE_ITEM.ELEM)
            {
                return;
            }

            //以下、一つ下に移動する処理
            ClsDatElem clElem = clItem as ClsDatElem;

            if (clElem.mElem == null)
            {
                clMotion.MoveDown(clElem);
            }
            else
            {
                clElem.mElem.MoveElemDown(clElem);
            }

            //以下、行番号振り直し処理
            clMotion.RefreshLineNo();

            //以下、改めてアイテムを選択する処理
            ClsSystem.SetSelectFromLineNo(clItem.mLineNo);   //上記の RefreshLineNo 関数内でmLineNoが変わっているはず

            //以下、コントロール更新処理
            this.RefreshControl();
            this.panel_Control.Refresh();
            this.panel_Time.Refresh();
            this.mFormMain.Refresh();
        }
Example #7
0
        /// <summary>
        /// 選択中のキーフレームを取得する処理
        /// </summary>
        /// <returns>選択中のキーフレーム</returns>
        private static ClsDatKeyFrame GetKeyFrameFromSelectFrame()
        {
            ClsDatItem clItem = ClsSystem.GetItemFromSelectLineNo();

            if (clItem == null)
            {
                return(null);
            }

            //以下、エレメント設定
            ClsDatElem   clElem   = null;
            ClsDatOption clOption = null;

            if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.ELEM)
            {
                clElem   = clItem as ClsDatElem;
                clOption = clElem.mDicOption[EnmTypeOption.DISPLAY];
            }
            else if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.OPTION)
            {
                clOption = clItem as ClsDatOption;
                clElem   = clOption.mElemParent;
            }

            if (clOption == null)
            {
                return(null);
            }

            int inIndex = ClsSystem.GetSelectFrameNo();

            if (inIndex != 0)
            {
                bool isExist = clOption.IsExistKeyFrame(inIndex);
                if (!isExist)
                {
                    return(null);
                }
            }

            //以下、キーフレーム取得処理
            ClsDatKeyFrame clKeyFrame = clOption.GetKeyFrame(inIndex);

            return(clKeyFrame);
        }
Example #8
0
        /// <summary>
        /// 行番号からアイテムを取得する
        /// </summary>
        /// <param name="inLineNo">行番号</param>
        /// <returns>行番号のアイテム</returns>
        public static ClsDatItem GetItemFromLineNo(int inLineNo)
        {
            if (inLineNo < 0)
            {
                return(null);
            }

            ClsDatMotion clMotion = ClsSystem.GetSelectMotion();

            if (clMotion == null)
            {
                return(null);
            }

            ClsDatItem clItem = clMotion.GetItemFromLineNo(inLineNo);

            return(clItem);
        }
Example #9
0
        /// <summary>
        /// 行番号からアイテムを検索する処理
        /// </summary>
        /// <param name="inLineNo">行番号</param>
        /// <returns>アイテム</returns>
        public ClsDatItem FindItemFromLineNo(int inLineNo)
        {
            this.mWorkItem = null;

            int inCnt, inMax = this.mListElem.Count;

            for (inCnt = 0; inCnt < inMax; inCnt++)
            {
                ClsDatElem clElem = this.mListElem[inCnt];
                clElem.FindItemFromLineNo(this, inLineNo);

                if (this.mWorkItem != null)
                {
                    return(this.mWorkItem);
                }
            }

            return(null);
        }
Example #10
0
        /// <summary>
        /// 行番号からアイテムを削除する処理
        /// ※これを読んだ後は ClsDatMotion.RefreshLineNo を呼んで行番号を割り振りなおさなければならない
        /// </summary>
        /// <param name="inLineNo">行番号</param>
        /// <param name="isForce">強制フラグ</param>
        /// <param name="isRemove">実体削除フラグ</param>
        public void RemoveItemFromLineNo(int inLineNo, bool isForce, bool isRemove)
        {
            ClsDatItem clItem = ClsSystem.GetItemFromLineNo(inLineNo);

            if (clItem == null)
            {
                return;
            }

            switch (clItem.mTypeItem)
            {
            case ClsDatItem.TYPE_ITEM.ELEM:
                this.RemoveElemFromLineNo(inLineNo, isRemove);
                break;

            case ClsDatItem.TYPE_ITEM.OPTION:
                this.RemoveOptionFromLineNo(inLineNo, isForce, isRemove);
                break;
            }
        }
Example #11
0
        private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
        {
            ClsDatMotion clMotion = ClsSystem.GetSelectMotion();

            if (clMotion == null)
            {
                return;
            }

            bool isRemoveElementEnable = false;
            bool isAddOptionEnable     = false;
            bool isRemoveOptionEnable  = false;

            int inLineNo = ClsSystem.GetSelectLineNo();

            if (inLineNo >= 0)
            {
                ClsDatItem clItem = clMotion.GetItemFromLineNo(inLineNo);
                if (clItem != null)
                {
                    isRemoveElementEnable = true;
                    isAddOptionEnable     = true;
                }

                ClsDatOption clOption = ClsSystem.GetOptionFromLineNo(inLineNo);
                if (clOption != null)
                {
                    bool isRemoveOK = clOption.IsRemoveOK();
                    if (isRemoveOK)
                    {
                        isRemoveOptionEnable = true;
                    }
                }
            }

            this.ToolStripMenuItem_RemoveElement.Enabled = isRemoveElementEnable;
            this.ToolStripMenuItem_AddOption.Enabled     = isAddOptionEnable;
            this.ToolStripMenuItem_RemoveOption.Enabled  = isRemoveOptionEnable;
        }
Example #12
0
        private void RefreshControl()
        {
            ClsDatMotion clMotion = ClsSystem.GetSelectMotion();

            if (clMotion == null)
            {
                return;
            }

            int        inSelectFrameNo = ClsSystem.GetSelectFrameNo();
            int        inMaxFrameNum   = clMotion.GetMaxFrameNum();
            int        inSelectLineNo  = ClsSystem.GetSelectLineNo();
            ClsDatItem clItem          = clMotion.GetItemFromLineNo(inSelectLineNo);

            //以下、削除ボタン有効化設定
            bool isEnable = false;

            if (clItem != null)
            {
                if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.ELEM)
                {
                    isEnable = true;
                }
                else if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.OPTION)
                {
                    ClsDatOption clOption = clItem as ClsDatOption;
                    isEnable = clOption.IsRemoveOK();
                }
            }
            this.button_ItemRemove.Enabled = isEnable;

            //以下、アトリビュートウィンドウ設定
            if (this.mFormMain != null)
            {
                if (this.mFormMain.mFormAttribute != null)
                {
                    ClsDatElem clElem = ClsSystem.GetElemFromSelectLineNo();
                    this.mFormMain.mFormAttribute.Init(clElem, inSelectFrameNo, inMaxFrameNum);
                }
            }

            //以下、上ボタン有効化設定
            isEnable = false;
            if (clItem != null)
            {
                ClsDatElem clElem = null;
                if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.ELEM)
                {
                    clElem = clItem as ClsDatElem;
                    if (clElem.mElem == null)
                    {
                        isEnable = clMotion.CanMoveUp(clElem);
                    }
                    else
                    {
                        //isEnable = clElem.mElem.CanMoveUp(clElem);    //自分が長男かチェックする
                    }
                }

/*
 *              else if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.OPTION)
 *              {
 *                  ClsDatOption clOption = clItem as ClsDatOption;
 *                  clElem = clOption.mElem;
 * //                  isEnable = clElem.CanMoveUp(clOption);
 *              }
 */
            }
            this.button_ItemUp.Enabled = isEnable;

            //以下、下ボタン有効化設定
            isEnable = false;
            if (clItem != null)
            {
                ClsDatElem clElem = null;
                if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.ELEM)
                {
                    clElem = clItem as ClsDatElem;
                    if (clElem.mElem == null)
                    {
                        isEnable = clMotion.CanMoveDown(clElem);
                    }
                    else
                    {
                    }
                }

/*
 *              else if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.OPTION)
 *              {
 *                  ClsDatOption clOption = clItem as ClsDatOption;
 *                  clElem = clOption.mElem;
 * //                  isEnable = clElem.CanMoveDown(clOption);
 *              }
 */
            }
            this.button_ItemDown.Enabled = isEnable;
        }
Example #13
0
        private void panel_Control_MouseMove(object sender, MouseEventArgs e)
        {
            ClsDatMotion clMotion = ClsSystem.GetSelectMotion();

            if (clMotion == null)
            {
                return;
            }

            //以下、エレメント移動処理
            if (e.Button == MouseButtons.Left)
            {
                bool isExist = false;
                if (this.mFormDragLabel != null)
                {
                    if (!this.mFormDragLabel.IsDisposed)
                    {
                        isExist = true;
                    }
                }

                //以下、挿入マーククリア処理
                clMotion.ClearInsertMark();

                if (isExist)
                {
                    int inSelectLineNo = ClsSystem.GetSelectLineNo();
                    int inLineNo       = this.GetLineNoFromPositionY(e.Y);
                    if (inSelectLineNo != inLineNo)
                    {
                        //以下、挿入先チェック処理
                        ClsDatItem clItem = clMotion.GetItemFromLineNo(inLineNo);
                        if (clItem != null)
                        {
                            //以下、挿入先のエレメントに通知する処理
                            ClsDatElem     clElem = null;
                            EnmMarkElement enMark = EnmMarkElement.NONE;
                            if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.ELEM)
                            {
                                clElem = clItem as ClsDatElem;

                                int  inY  = e.Y % FormControl.CELL_HEIGHT;
                                bool isUp = (inY < FormControl.CELL_HEIGHT / 2);
                                enMark = (isUp) ? EnmMarkElement.UP : EnmMarkElement.IN;
                            }
                            else if (clItem.mTypeItem == ClsDatItem.TYPE_ITEM.OPTION)
                            {
                                ClsDatOption clOption = clItem as ClsDatOption;
                                clElem = clOption.mElemParent;
                                if (inSelectLineNo == clElem.mLineNo)
                                {
                                    clElem = null;
                                }

                                enMark = EnmMarkElement.IN;
                            }

                            if (clElem != null)
                            {
                                //以下、挿入可能な旨をエレメントに通知する処理
                                clElem.SetInsertMark(enMark);
                            }
                        }
                    }
                }
                else
                {
                    //以下、掴んでいるエレメントを別ウィンドウで表示する処理
                    int        inLineNo = ClsSystem.GetSelectLineNo();
                    ClsDatItem clItem   = clMotion.FindItemFromLineNo(inLineNo);
                    if (clItem != null)
                    {
                        int    inXDiff = (Cursor.Position.X - this.mCatchPosStart.X);
                        int    inYDiff = (Cursor.Position.Y - this.mCatchPosStart.Y);
                        double doLen   = Math.Sqrt(inXDiff * inXDiff + inYDiff * inYDiff);
                        if (doLen >= 5.0)
                        {
                            ClsDatElem clElem = clItem as ClsDatElem;
                            this.mFormDragLabel = new FormDragLabel(clElem);
                            this.mFormDragLabel.Show();
                        }
                    }
                }

                //以下、コントロール更新処理
                this.RefreshControl();
                this.panel_Control.Refresh();
                this.panel_Time.Refresh();
                this.mFormMain.Refresh();
            }
        }