示例#1
0
 public override int GetHashCode()
 {
     unchecked
     {
         return((ToolId.GetHashCode() * 397) ^ PageNumber);
     }
 }
示例#2
0
 public void OnToolchanged(ToolId id)
 {
     if (id == ToolId.PaintBucket)
     {
         OnPaintingColorChanged(controls.PaintingColor.Value);
     }
 }
示例#3
0
 internal ToolInformation(ToolId identity, ToolVersionStatus versionStatus, Version minimumSupportedVersion, Version latestVersion, Uri updateInformationUrl) : this()
 {
     this.Identity                = identity;
     this.VersionStatus           = versionStatus;
     this.MinimumSupportedVersion = minimumSupportedVersion;
     this.LatestVersion           = latestVersion;
     this.UpdateInformationUrl    = updateInformationUrl;
 }
示例#4
0
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = (ToolId != null ? ToolId.ToLower().GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (ToolVersion != null ? ToolVersion.ToLower().GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (FileName != null ? FileName.ToLower().GetHashCode() : 0);
         return(hashCode);
     }
 }
示例#5
0
 internal SupportedVersion GetSupportedVersion(ToolId toolId, Version tenantVersion)
 {
     foreach (ToolInfoData toolInfoData in this.toolData.toolInformation)
     {
         if (toolInfoData.id == toolId)
         {
             return(SupportedToolsData.GetSupportedVersion(toolInfoData, tenantVersion));
         }
     }
     return(null);
 }
 public void OnToolChanged(ToolId id)
 {
     if (CurrentTools.TryGetValue(id, out BaseTool tool))
     {
         if (currentTool != null)
         {
             currentTool.gameObject.SetActive(false);
         }
         currentTool = tool;
         currentTool.gameObject.SetActive(true);
     }
 }
示例#7
0
        private string GetToolDesc(ToolId id)
        {
            switch (id)
            {
            case ToolId.Open: return("Load board view (Ctrl+O)");

            case ToolId.RotateCCW: return("Rotate left (Q)");

            case ToolId.RotateCW: return("Rotate right (E)");

            case ToolId.ChangeSide: return("Toggle side (Space)");

            case ToolId.Home: return("Fit in view (H)");

            case ToolId.ToggleNames: return("Toggle names (T)");

            case ToolId.ToggleHeurShapes: return("Toggle heuristically guessed shapes (G)");

            case ToolId.FindPart: return("Find component (C)");

            case ToolId.FindPin: return("Find pin (P)");

            case ToolId.FindNet: return("Find net (N)");

            case ToolId.FindNail: return("Find nail (L)");

            case ToolId.ZoomIn: return("");

            case ToolId.ZoomOut: return("");

            case ToolId.PanLeft: return("");

            case ToolId.PanRight: return("");

            case ToolId.PanUp: return("");

            case ToolId.PanDown: return("");

            case ToolId.About: return("About (F1)");

            default: return("");
            }
        }
示例#8
0
        private void InitializeToolButton(Button btn, ToolId id, Image iconStrip, int initialIndex = 0)
        {
            var list = new ImageList();

            if (iconStrip != null)
            {
                list.Images.AddStrip(iconStrip);
                btn.ImageList = list;
                if (initialIndex >= 0)
                {
                    btn.ImageIndex = initialIndex;
                }
                btn.Text = string.Empty;
                var desc = GetToolDesc(id);
                if (!string.IsNullOrEmpty(desc))
                {
                    ttDesc.SetToolTip(btn, desc);
                }
            }
            btn.Click += (sender, e) => HandleToolAction(id);
        }
        public void OnCurrentToolChanged(ToolId id)
        {
            switch (id)
            {
            case ToolId.FlightDistanceScanner:
                wallDistanceDisplay.gameObject.SetActive(false);
                flightDistanceDisplay.gameObject.SetActive(true);
                compassDisplay.gameObject.SetActive(false);
                bucketImage.gameObject.SetActive(false);
                previewImage.gameObject.SetActive(false);
                break;

            case ToolId.WallDistanceScanner:
                wallDistanceDisplay.gameObject.SetActive(true);
                flightDistanceDisplay.gameObject.SetActive(false);
                compassDisplay.gameObject.SetActive(false);
                bucketImage.gameObject.SetActive(false);
                previewImage.gameObject.SetActive(false);
                break;

            // TODO use compass object
            case ToolId.Compass:
                wallDistanceDisplay.gameObject.SetActive(false);
                flightDistanceDisplay.gameObject.SetActive(false);
                compassDisplay.gameObject.SetActive(true);
                bucketImage.gameObject.SetActive(false);
                previewImage.gameObject.SetActive(false);
                break;

            case ToolId.PaintBucket:
                wallDistanceDisplay.gameObject.SetActive(false);
                flightDistanceDisplay.gameObject.SetActive(false);
                compassDisplay.gameObject.SetActive(false);
                bucketImage.gameObject.SetActive(true);
                previewImage.gameObject.SetActive(false);
                break;
            }
        }
示例#10
0
        public void OnToolChanged(ToolId id)
        {
            //switch (Client.Instance.State.Value)
            //{
            //    case ClientGameState.Playing:
            //    case ClientGameState.PlayingTutorial:
            //        break;

            //    default:
            //        if (currentTool != null) currentTool.gameObject.SetActive(false);
            //        currentTool = null;
            //        return;
            //}

            if (CurrentTools.TryGetValue(id, out HeadsetTool tool))
            {
                if (currentTool != null)
                {
                    currentTool.gameObject.SetActive(false);
                }
                currentTool = tool;
                currentTool.gameObject.SetActive(true);
            }
        }
示例#11
0
 public bool Equals(ToolIdAndPageNumber other)
 {
     return(ToolId.Equals(other.ToolId) && PageNumber == other.PageNumber);
 }
示例#12
0
 public void OnCurrentToolChanged(ToolId id)
 {
     Algorithms.FloorPainter.RemoveHighlight();
     Labyrinths.Piece.RemoveHighlight();
 }
示例#13
0
        private bool HandleToolAction(ToolId id)
        {
            switch (id)
            {
            case ToolId.Open:
                if (LoadFile())
                {
                    searchDlg.InitializeAutocomplete();
                    goto case ToolId.Home;
                }
                break;

            case ToolId.RotateCCW:
                Root.Renderer.Turn += Math.PI / 2;
                RedrawScene();
                break;

            case ToolId.RotateCW:
                Root.Renderer.Turn -= Math.PI / 2;
                RedrawScene();
                break;

            case ToolId.ChangeSide:
            {
                btnSide.ImageIndex = (btnSide.ImageIndex + 1) % 2;
                bool topSide = btnSide.ImageIndex == 0;
                Root.Scene.Side = topSide ? BoardSide.Top : BoardSide.Bottom;
                if (Root.Scene.TopContour != null)
                {
                    double yOffset = Root.Scene.TopContour.GetBBox().Height;
                    if (topSide)
                    {
                        yOffset *= -1;
                    }
                    var vec = new Vector2(0, yOffset);
                    vec.Rotate(Root.Renderer.Turn.Radians);
                    ApplyPan(vec, false);
                }
                break;
            }

            case ToolId.Home:
                var contour = Root.Scene.Side == BoardSide.Top ? Root.Scene.TopContour : Root.Scene.BottomContour;
                if (contour == null)
                {
                    break;
                }
                Root.Renderer.FitToScreenTransform(contour.GetBBox());
                RedrawScene();
                break;

            case ToolId.ToggleNames:
                btnNames.ImageIndex          = (btnNames.ImageIndex + 1) % 2;
                Root.Scene.Options.ShowNames = btnNames.ImageIndex == 0;
                RedrawScene();
                break;

            case ToolId.ToggleHeurShapes:
                btnHeurShapes.ImageIndex      = (btnHeurShapes.ImageIndex + 1) % 2;
                Root.Scene.Options.HeurShapes = btnHeurShapes.ImageIndex == 0;
                RedrawScene();
                break;

            // XXX: refactor copypasted code
            case ToolId.FindPart:
                searchDlg.Setup(QuerySubject.Part, 3, (string[] q, out bool found) =>
                {
                    Root.Scene.ResetSearchResults();
                    foreach (var query in q)
                    {
                        if (!string.IsNullOrEmpty(query))
                        {
                            var fp = Root.Scene.Parts.Find(p => string.Equals(p.Name, query, StringComparison.OrdinalIgnoreCase));
                            Root.Scene.UpdateSearchResults(fp);
                        }
                    }
                    found = Root.Scene.SearchResults.Count > 0;
                    if (found && Root.Scene.SearchResults.Find(obj => obj.Side == Root.Scene.Side) == null)
                    {
                        HandleToolAction(ToolId.ChangeSide);
                    }
                    else
                    {
                        RedrawScene();
                    }
                });
                searchDlg.ShowDialog(this);
                break;

            case ToolId.FindPin:
                searchDlg.Setup(QuerySubject.Pin, 1, (string[] q, out bool found) =>
                {
                    Root.Scene.ResetSearchResults();
                    found = false;
                    if (string.IsNullOrEmpty(q[0]))
                    {
                        return;
                    }
                    char[] splitChars = { '.' };
                    var sq            = q[0].Split(splitChars, StringSplitOptions.RemoveEmptyEntries);
                    if (sq.Length != 2)
                    {
                        return;
                    }
                    var pin = int.Parse(sq[1]);
                    if (pin <= 0)
                    {
                        return;
                    }
                    var fp = Root.Scene.Parts.Find(p => string.Equals(p.Name, sq[0], StringComparison.OrdinalIgnoreCase));
                    if (fp == null)
                    {
                        return;
                    }
                    if (fp.PinCount < pin)
                    {
                        return;
                    }
                    Root.Scene.SearchResults.Add(fp);
                    Root.Scene.SearchResults.Add(Root.Scene.Pins[fp.FirstPin + pin - 1]);
                    found = true;
                    if (fp.HasSide && fp.Side != Root.Scene.Side)
                    {
                        HandleToolAction(ToolId.ChangeSide);
                    }
                    else
                    {
                        RedrawScene();
                    }
                    //Root.Renderer.FitToScreenTransform(fp.GetBBox());
                });
                searchDlg.ShowDialog(this);
                break;

            case ToolId.FindNet:
                searchDlg.Setup(QuerySubject.Net, 1, (string[] q, out bool found) =>
                {
                    Root.Scene.ResetSearchResults();
                    foreach (var query in q)
                    {
                        if (!string.IsNullOrEmpty(query))
                        {
                            var fp = Root.Scene.Pins.FindAll(p => string.Equals(p.Name, query, StringComparison.OrdinalIgnoreCase));
                            var fn = Root.Scene.Nails.FindAll(n => string.Equals(n.Name, query, StringComparison.OrdinalIgnoreCase));
                            foreach (var p in fp)
                            {
                                Root.Scene.UpdateSearchResults(p);
                            }
                            foreach (var n in fn)
                            {
                                Root.Scene.UpdateSearchResults(n);
                            }
                        }
                    }
                    found = Root.Scene.SearchResults.Count > 0;
                    if (found && Root.Scene.SearchResults.Find(obj => obj.Side == Root.Scene.Side) == null)
                    {
                        HandleToolAction(ToolId.ChangeSide);
                    }
                    else
                    {
                        RedrawScene();
                    }
                });
                searchDlg.ShowDialog(this);
                break;

            case ToolId.FindNail:
                searchDlg.Setup(QuerySubject.Nail, 3, (string[] q, out bool found) =>
                {
                    Root.Scene.ResetSearchResults();
                    foreach (var query in q)
                    {
                        if (!string.IsNullOrEmpty(query))
                        {
                            var fn = Root.Scene.Nails.FindAll(n => string.Equals(n.Name, query, StringComparison.OrdinalIgnoreCase));
                            foreach (var n in fn)
                            {
                                Root.Scene.UpdateSearchResults(n);
                            }
                        }
                    }
                    found = Root.Scene.SearchResults.Count > 0;
                    if (found && Root.Scene.SearchResults.Find(obj => obj.Side == Root.Scene.Side) == null)
                    {
                        HandleToolAction(ToolId.ChangeSide);
                    }
                    else
                    {
                        RedrawScene();
                    }
                });
                searchDlg.ShowDialog(this);
                break;

            case ToolId.ZoomIn:
                ApplyZoom(1);
                break;

            case ToolId.ZoomOut:
                ApplyZoom(-1);
                break;

            case ToolId.PanLeft:
                ApplyPan(new Vector2(+1, 0) * PanScale);
                break;

            case ToolId.PanRight:
                ApplyPan(new Vector2(-1, 0) * PanScale);
                break;

            case ToolId.PanUp:
                ApplyPan(new Vector2(0, -1) * PanScale);
                break;

            case ToolId.PanDown:
                ApplyPan(new Vector2(0, +1) * PanScale);
                break;

            case ToolId.About:
                if (aboutDlg.IsDisposed) // just in case...
                {
                    aboutDlg = new AboutDialog();
                }
                aboutDlg.ShowDialog(this);
                break;
            }
            return(true);
        }
示例#14
0
 public Tool(string name, Point3D location)
 {
     Id       = new ToolId();
     Name     = name;
     Location = location;
 }