/// <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); }
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(); }
/// <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); }
/// <summary> /// アイテムを選択する処理 /// </summary> /// <param name="clItem">アイテム</param> public void SetSelectFromItem(ClsDatItem clItem) { if (clItem == null) { return; } ClsSystem.SetSelectFromLineNo(clItem.mLineNo); }
/// <summary> /// 選択中のアイテムを取得する処理 /// </summary> /// <returns>選択中のアイテム</returns> private static ClsDatItem GetItemFromSelectLineNo() { int inLineNo = ClsSystem.GetSelectLineNo(); if (inLineNo < 0) { return(null); } ClsDatItem clItem = ClsSystem.GetItemFromLineNo(inLineNo); return(clItem); }
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(); }
/// <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); }
/// <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); }
/// <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); }
/// <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; } }
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; }
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; }
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(); } }