public void SetCursor(CursorType cursor) { AllocEventBox (); CurrentCursor = cursor; Gdk.Cursor gc; if (!gtkCursors.TryGetValue (cursor, out gc)) { Gdk.CursorType ctype; if (cursor == CursorType.Arrow) ctype = Gdk.CursorType.LeftPtr; else if (cursor == CursorType.Crosshair) ctype = Gdk.CursorType.Crosshair; else if (cursor == CursorType.Hand) ctype = Gdk.CursorType.Hand1; else if (cursor == CursorType.IBeam) ctype = Gdk.CursorType.Xterm; else if (cursor == CursorType.ResizeDown) ctype = Gdk.CursorType.BottomSide; else if (cursor == CursorType.ResizeUp) ctype = Gdk.CursorType.TopSide; else if (cursor == CursorType.ResizeLeft) ctype = Gdk.CursorType.LeftSide; else if (cursor == CursorType.ResizeRight) ctype = Gdk.CursorType.RightSide; else if (cursor == CursorType.ResizeLeftRight) ctype = Gdk.CursorType.SbHDoubleArrow; else if (cursor == CursorType.ResizeUpDown) ctype = Gdk.CursorType.SbVDoubleArrow; else if (cursor == CursorType.Move) ctype = Gdk.CursorType.Fleur; else if (cursor == CursorType.Wait) ctype = Gdk.CursorType.Watch; else if (cursor == CursorType.Help) ctype = Gdk.CursorType.QuestionArrow; else ctype = Gdk.CursorType.Arrow; gtkCursors [cursor] = gc = new Gdk.Cursor (ctype); } gdkCursor = gc; if (EventsRootWidget.GdkWindow == null) SubscribeRealizedEvent (); else EventsRootWidget.GdkWindow.Cursor = gc; }
public void SetCursor(CursorType cursor) { AllocEventBox (); CurrentCursor = cursor; Gdk.Cursor gc; if (!gtkCursors.TryGetValue (cursor, out gc)) { Gdk.CursorType ctype; if (cursor == CursorType.Arrow) ctype = Gdk.CursorType.LeftPtr; else if (cursor == CursorType.Crosshair) ctype = Gdk.CursorType.Crosshair; else if (cursor == CursorType.Hand) ctype = Gdk.CursorType.Hand1; else if (cursor == CursorType.IBeam) ctype = Gdk.CursorType.Xterm; else if (cursor == CursorType.ResizeDown) ctype = Gdk.CursorType.BottomSide; else if (cursor == CursorType.ResizeUp) ctype = Gdk.CursorType.TopSide; else if (cursor == CursorType.ResizeLeft) ctype = Gdk.CursorType.LeftSide; else if (cursor == CursorType.ResizeRight) ctype = Gdk.CursorType.RightSide; else if (cursor == CursorType.ResizeLeftRight) ctype = Gdk.CursorType.SbHDoubleArrow; else if (cursor == CursorType.ResizeUpDown) ctype = Gdk.CursorType.SbVDoubleArrow; else if (cursor == CursorType.Move) ctype = Gdk.CursorType.Fleur; else if (cursor == CursorType.Wait) ctype = Gdk.CursorType.Watch; else if (cursor == CursorType.Help) ctype = Gdk.CursorType.QuestionArrow; else if (cursor == CursorType.Invisible) ctype = (Gdk.CursorType)(-2); // Gdk.CursorType.None, since Gtk 2.16 else ctype = Gdk.CursorType.Arrow; gtkCursors [cursor] = gc = new Gdk.Cursor (ctype); } gdkCursor = gc; // subscribe mouse entered/leaved events, when widget gets/is realized RunWhenRealized(SubscribeCursorEnterLeaveEvent); if (immediateCursorChange) // if realized and mouse inside set immediatly EventsRootWidget.GdkWindow.Cursor = gdkCursor; }
public void SetCursor(CursorType cursor) { AllocEventBox (); Gdk.Cursor gc; if (!gtkCursors.TryGetValue (cursor, out gc)) { Gdk.CursorType ctype; if (cursor == CursorType.Arrow) ctype = Gdk.CursorType.LeftPtr; else if (cursor == CursorType.Crosshair) ctype = Gdk.CursorType.Crosshair; else if (cursor == CursorType.Hand) ctype = Gdk.CursorType.Hand1; else if (cursor == CursorType.IBeam) ctype = Gdk.CursorType.Xterm; else if (cursor == CursorType.ResizeDown) ctype = Gdk.CursorType.BottomSide; else if (cursor == CursorType.ResizeUp) ctype = Gdk.CursorType.TopSide; else if (cursor == CursorType.ResizeLeft) ctype = Gdk.CursorType.LeftSide; else if (cursor == CursorType.ResizeRight) ctype = Gdk.CursorType.RightSide; else if (cursor == CursorType.ResizeLeftRight) ctype = Gdk.CursorType.SbHDoubleArrow; else if (cursor == CursorType.ResizeUpDown) ctype = Gdk.CursorType.SbVDoubleArrow; else ctype = Gdk.CursorType.Arrow; gtkCursors [cursor] = gc = new Gdk.Cursor (ctype); } if (EventsRootWidget.GdkWindow == null) { EventHandler h = null; h = delegate { EventsRootWidget.GdkWindow.Cursor = gc; EventsRootWidget.Realized -= h; }; EventsRootWidget.Realized += h; } else EventsRootWidget.GdkWindow.Cursor = gc; }
/// <summary> /// Displays the current plotCursor, set in each interaction /// This must be overridden by each implementation so that /// the appropriate platform cursor type can be displayed /// </summary> public virtual void ShowCursor(CursorType plotCursor ) { }
protected override void OnButtonPressed(ButtonEventArgs args) { SetFocus(); Point position = args.Position; position.X /= scaleFactor; position.Y /= scaleFactor; popupWindow.Hide(); initialScrollPosition = Point.Zero; PipelineNode node = GetNodeAt(position, true); if (node != null) { ButtonEventArgs nodeArgs = new ButtonEventArgs(); nodeArgs.X = position.X - node.bound.Location.X; nodeArgs.Y = position.Y - node.bound.Location.Y; nodeArgs.Button = args.Button; nodeArgs.MultiplePress = args.MultiplePress; if (node.OnButtonPressed(nodeArgs)) { return; } } switch (args.Button) { case PointerButton.Left: if (node != null) { // clicked on node if (args.MultiplePress >= 2) { OpenOptionWindow(node); mouseAction = MouseAction.None; args.Handled = true; break; } else { MarkerNode mNode = node.GetMarkerNodeAt(position); if (mNode != null && !mNode.compatible.IsFinal()) { connectNodesStartMarker = mNode; mouseAction |= MouseAction.AddEdge | MouseAction.AddEdgeNew; } else { if (node.bound.Contains(position)) { nodeToMoveOffset = new Point( node.bound.Location.X - position.X, node.bound.Location.Y - position.Y ); lastSelectedNode = node; mouseAction |= MouseAction.MoveNode; } } } } else { Tuple<MarkerNode, MarkerEdge> edge = GetEdgeAt(position); if (edge != null) { // clicked on edge if (edge.Item2.r >= 0.5) { connectNodesStartMarker = edge.Item1; } else { connectNodesStartMarker = (MarkerNode) edge.Item2.to; } edge.Item1.RemoveEdge(edge.Item2); lastSelectedEdge = edge; mouseAction |= MouseAction.MoveEdge; args.Handled = true; } } break; case PointerButton.Right: lastSelectedEdge = GetEdgeAt(position); if (lastSelectedEdge != null) { contextMenuEdge.Popup(); } else { PipelineNode nodeRight = GetNodeAt(position, true); if (nodeRight != null) { lastSelectedNode = nodeRight; if (lastSelectedNode.algorithm.options.Count > 0) { contextMenuNodeOptions.Show(); } else { contextMenuNodeOptions.Hide(); } contextMenuNode.Popup(); } } break; case PointerButton.Middle: mouseMover.EnableMouseMover(args.Position); if (oldCursor != CursorType.Move) { oldCursor = this.Cursor; this.Cursor = CursorType.Move; } break; } }
/// <summary> /// Sets the cursor type. /// </summary> /// <param name="cursorType">The cursor type.</param> public void SetCursorType(CursorType cursorType) { Cursor = cursorType.ToXwtCursorType(); }