/// <summary> /// コマンドツリーをセットアップします。 /// これはプロジェクトが読み込まれた後に呼び出して下さい。 /// </summary> public void Setup(CtrlComponent.Database.ctlDatabaseEditor dbCtl, CtrlComponent.Map.mgrMapObject mgrMap) { this.dbCtl = dbCtl; this.mgrMap = mgrMap; var subNodes = new List <TreeNode>(); //オートコンプリートのソースを更新 //組み込みオブジェクトは 定数・列挙体・変数 ノード以下に絞る AutoCompleteSource.Clear(); subNodes.AddRange(Common.GetNodeListToFlat(this.trvTree.Nodes[NodeNameCppObject].Nodes[NodeNameCppObjConst])); subNodes.AddRange(Common.GetNodeListToFlat(this.trvTree.Nodes[NodeNameCppObject].Nodes[NodeNameCppObjEnum])); subNodes.AddRange(Common.GetNodeListToFlat(this.trvTree.Nodes[NodeNameCppObject].Nodes[NodeNameCppObjValue])); AutoCompleteSource.AddRange(subNodes); foreach (var node1 in subNodes) { AutoCompleteSourceAll.Add(ctlCommandTree.GetCode(node1)); } //プロジェクト関連のスクリプトからノード生成する this.trvTree.BeginUpdate(); foreach (TreeNode node in this.trvTree.Nodes) { switch (node.Text) { case NodeSQConst: //定数定義スクリプトを読み込む SQ.SetSQConstantsTree(node, Resources.Path_Scripts_Constants); break; case NodeSQFunc: //関数定義スクリプトを読み込む SQ.SetSQFunctionsTree(node, Resources.Path_Scripts_Functions); break; } //オートコンプリートのソースに追加 subNodes = Common.GetNodeListToFlat(node); AutoCompleteSource.AddRange(subNodes); foreach (var node2 in subNodes) { AutoCompleteSourceAll.Add(ctlCommandTree.GetCode(node2)); } } //コマンドツリーの並び替え実行 this.trvTree.TreeViewNodeSorter = new CommandTreeSorter(); this.trvTree.EndUpdate(); ////オートコンプリートのノード情報リストの並び替え実行 //AutoCompleteSource.Sort((x, y) => { // //コードの文字列逆順にする // var xcode = GetCode(x); // var ycode = GetCode(y); // return -string.Compare(xcode, ycode); //}); }
/// <summary> /// マップの指定したタイル座標が見えるところまでスクロールします。 /// </summary> public static void MapEditor_ScrollToCursor(HScrollBar hsc, VScrollBar vsc, Control container, CtrlComponent.Map.mgrMapObject mgr) { var pos = new Point(mgr.Cursor.X * mgr.ScaledTileSize, mgr.Cursor.Y * mgr.ScaledTileSize); pos.Offset(-container.Width / 2, -container.Height / 2); if (pos.X < 0) { hsc.Value = 0; } else if (hsc.Maximum < pos.X) { hsc.Value = hsc.Maximum; } else { hsc.Value = pos.X; } if (pos.Y < 0) { vsc.Value = 0; } else if (vsc.Maximum < pos.Y) { vsc.Value = vsc.Maximum; } else { vsc.Value = pos.Y; } Map.MapEditor_Resize(hsc, vsc, container, mgr); }
public const int WheelScroolValue = 5; //マウスホイールでの移動量 /// <summary> /// マップ上でマウスホイールされたときの共通処理 /// </summary> public static void MapEditor_MouseWheel(MouseEventArgs e, HScrollBar hsc, VScrollBar vsc, Control container, CtrlComponent.Map.mgrMapObject mgr, ToolStripComboBox tolScale) { var value = -e.Delta; if ((Control.ModifierKeys & Keys.Control) == Keys.Control) { //Ctrlキーが押されていたらスケール変更する if (value < 0) { tolScale.SelectedIndex = (tolScale.SelectedIndex == 0) ? 0 : tolScale.SelectedIndex - 1; } else { tolScale.SelectedIndex = (tolScale.SelectedIndex == tolScale.Items.Count - 1) ? tolScale.SelectedIndex = tolScale.Items.Count - 1 : tolScale.SelectedIndex + 1; } } else { //スクロールを行う if (!Control.ModifierKeys.HasFlag(Keys.Shift)) { //縦スクロール if (vsc.Value + value > vsc.Maximum) { vsc.Value = vsc.Maximum; } else if (vsc.Value + value < 0) { vsc.Value = 0; } else { vsc.Value = vsc.Value + value; } } else { //横スクロール (Shiftキー押下状態) if (hsc.Value + value > hsc.Maximum) { hsc.Value = hsc.Maximum; } else if (hsc.Value + value < 0) { hsc.Value = 0; } else { hsc.Value = hsc.Value + value; } } Map.MapEditor_Resize(hsc, vsc, container, mgr); } }
/// <summary> /// マップ表示領域が変更されたときの共通処理 /// </summary> public static void MapEditor_Resize(HScrollBar hsc, VScrollBar vsc, Control container, CtrlComponent.Map.mgrMapObject mgr) { if (mgr == null) { return; } if (!mgr.GetMapPreviewScrollSize(container.Size, out var x, out var y)) { //処理できなかった場合は中断する return; }
/// <summary> /// サブコントロールのセットアップを中継する /// </summary> public void SetupSubControls(CtrlComponent.Database.ctlDatabaseEditor dbCtl, CtrlComponent.Map.mgrMapObject mgrMap) { //データベースへの参照をサブコントロールに渡す this.uctlComTree.Setup(dbCtl, mgrMap); this.uctlOneText.Setup(dbCtl); }