Macro Mouse Cross/cs: Difference between revisions
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
Line 20: | Line 20: | ||
# mouse cursor to Cross or Arrow + Grig |
# mouse cursor to Cross or Arrow + Grig |
||
# ver 0.2 08/08/2014 PyQt4 and PySide |
# ver 0.2 08/08/2014 PyQt4 and PySide |
||
__title__ = "Macro_Mouse_Cross" |
|||
__author__ = "Mario52" |
|||
__url__ = "http://www.freecadweb.org/index-fr.html" |
|||
__version__ = "00.03" |
|||
__date__ = "25/01/2016" |
|||
try: |
try: |
||
Line 26: | Line 31: | ||
from PySide import QtCore, QtGui |
from PySide import QtCore, QtGui |
||
from pivy import coin |
from pivy import coin |
||
global xx ;xx = -1 |
|||
#################### create document if not exist ####################### |
|||
doc = FreeCAD.ActiveDocument #### |
|||
if doc == None: #### |
|||
doc = FreeCAD.newDocument() #### |
|||
######################################################################### |
|||
class ViewObserver: |
class ViewObserver: |
||
def logPosition(self, info): |
def logPosition(self, info): |
||
global xx |
|||
self.pos = info["Key"] |
self.pos = info["Key"] |
||
if (self.pos.upper() == "Q"): |
|||
v.removeEventCallback("SoKeyboardEvent",c) |
|||
print "End Macro_Mouse_Cross" |
|||
if (self.pos.upper() == "C"): |
if (self.pos.upper() == "C"): |
||
# change the cursor cross ( + ) |
# change the cursor cross ( + ) |
||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) |
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) |
||
elif (self.pos.upper() == "A"): |
elif (self.pos.upper() == "A"): |
||
# change the cursor Arrow |
# change the cursor in Arrow |
||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) |
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) |
||
elif (self.pos.upper() == "X") and (info["State"] == "DOWN"): |
|||
# change the cursor and visualise all model |
|||
xx += 1 |
|||
if xx == 0: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) |
|||
FreeCAD.Console.PrintMessage("ArrowCursor"+"\n") |
|||
if xx == 1: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.UpArrowCursor)) |
|||
FreeCAD.Console.PrintMessage("UpArrowCursor"+"\n") |
|||
if xx == 2: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) |
|||
FreeCAD.Console.PrintMessage("CrossCursor"+"\n") |
|||
if xx == 3: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) |
|||
FreeCAD.Console.PrintMessage("WaitCursor"+"\n") |
|||
if xx == 4: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor)) |
|||
FreeCAD.Console.PrintMessage("IBeamCursor"+"\n") |
|||
if xx == 5: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeVerCursor)) |
|||
FreeCAD.Console.PrintMessage("SizeVerCursor"+"\n") |
|||
if xx == 6: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeHorCursor)) |
|||
FreeCAD.Console.PrintMessage("SizeHorCursor"+"\n") |
|||
if xx == 7: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeBDiagCursor)) |
|||
FreeCAD.Console.PrintMessage("SizeBDiagCursor"+"\n") |
|||
if xx == 8: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeFDiagCursor)) |
|||
FreeCAD.Console.PrintMessage("SizeFDiagCursor"+"\n") |
|||
if xx == 9: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeAllCursor)) |
|||
FreeCAD.Console.PrintMessage("SizeAllCursor"+"\n") |
|||
if xx == 10: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.BlankCursor)) |
|||
FreeCAD.Console.PrintMessage("BlankCursor"+"\n") |
|||
if xx == 11: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SplitVCursor)) |
|||
FreeCAD.Console.PrintMessage("SplitVCursor"+"\n") |
|||
if xx == 12: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SplitHCursor)) |
|||
FreeCAD.Console.PrintMessage("SplitHCursor"+"\n") |
|||
if xx == 13: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) |
|||
FreeCAD.Console.PrintMessage("PointingHandCursor"+"\n") |
|||
if xx == 14: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ForbiddenCursor)) |
|||
FreeCAD.Console.PrintMessage("ForbiddenCursor"+"\n") |
|||
if xx == 15: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor)) |
|||
FreeCAD.Console.PrintMessage("OpenHandCursor"+"\n") |
|||
if xx == 16: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor)) |
|||
FreeCAD.Console.PrintMessage("ClosedHandCursor"+"\n") |
|||
if xx == 17: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WhatsThisCursor)) |
|||
FreeCAD.Console.PrintMessage("WhatsThisCursor"+"\n") |
|||
if xx == 18: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.BusyCursor)) |
|||
FreeCAD.Console.PrintMessage("BusyCursor"+"\n") |
|||
if xx == 19: |
|||
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.BitmapCursor)) |
|||
FreeCAD.Console.PrintMessage("BitmapCursor"+"\n") |
|||
xx = -1 |
|||
elif (self.pos.upper() == "G"): |
elif (self.pos.upper() == "G"): |
||
# "wmayer" http://forum.freecadweb.org/viewtopic.php?f=3&t=1065&hilit=cross#p8818 |
# "wmayer" http://forum.freecadweb.org/viewtopic.php?f=3&t=1065&hilit=cross#p8818 |
||
# Create |
# Create Grida |
||
grid=coin.SoType.fromName("SoDrawingGrid").createInstance() |
grid=coin.SoType.fromName("SoDrawingGrid").createInstance() |
||
Gui.ActiveDocument.ActiveView.getSceneGraph().addChild(grid) |
Gui.ActiveDocument.ActiveView.getSceneGraph().addChild(grid) |
||
xx = -1 |
|||
try: |
|||
v=Gui.activeDocument().activeView() |
|||
o = ViewObserver() |
|||
c = v.addEventCallback("SoKeyboardEvent",o.logPosition) |
|||
App.Console.PrintMessage("Type Key C to Cross"+"\n") |
|||
App.Console.PrintMessage("Type Key A to Arrow"+"\n") |
|||
App.Console.PrintMessage("Type Key X to Visualise all cursor"+"\n") |
|||
App.Console.PrintMessage("Type Key G to Grid (not editable)"+"\n") |
|||
App.Console.PrintMessage("Type Key Q to Quit"+"\n") |
|||
except Exception: |
|||
FreeCAD.Console.PrintError("\n"+"Not document open"+"\n") |
|||
App.Console.PrintMessage("Type Key C to Cross"+"\n") |
|||
App.Console.PrintMessage("Type Key A to Arrow"+"\n") |
|||
App.Console.PrintMessage("Type Key G to Grid (not editable)"+"\n") |
|||
v=Gui.activeDocument().activeView() |
|||
o = ViewObserver() |
|||
c = v.addEventCallback("SoKeyboardEvent",o.logPosition) |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||
Line 53: | Line 141: | ||
SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor |
SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor |
||
PointingHandCursor, ForbiddenCursor, OpenHandCursor, ClosedHandCursor, WhatsThisCursor, BusyCursor, BitmapCursor |
PointingHandCursor, ForbiddenCursor, OpenHandCursor, ClosedHandCursor, WhatsThisCursor, BusyCursor, BitmapCursor |
||
==Limitation== |
==Limitation== |
||
The cursor can change appearance depending on the used Workbench, he must repeat the operation.<br /> |
The cursor can change appearance depending on the used Workbench, he must repeat the operation.<br /> |
||
The cursor can be subtituer to the other sliders (ex: expansion of a window, corner...).<br /> |
The cursor can be subtituer to the other sliders (ex: expansion of a window, corner...).<br /> |
||
The grid is permanent.<br /> |
The grid is permanent.<br /> |
||
The rest resident macro. |
|||
[[Category:Poweruser Documentation/cs]] |
[[Category:Poweruser Documentation/cs]] |
Revision as of 16:04, 25 January 2016
File:Text-x-python Macro_Mouse_Cross |
Popis |
---|
Toto malé makro mění šipku kurzoru myši na jemný křížek. Autor: Mario52 |
Autor |
Mario52 |
Download |
None |
Odkazy |
Makro recepty| Jak nainstalovat makra Jak přizpůsobit panely nástrojů |
Verze |
1.0 |
Datum poslední úpravy |
None |
Verze FreeCAD |
None |
Výchozí zástupce |
"C" "A" |
Viz též |
None |
Popis
Toto malé makro mění šipku kurzoru myši na jemný křížek.
Malý příklad použití třídy ViewObserver() a použití klávesnice SoKeyboardEvent
Použití
- Stiskněte klávesu C pro aktivaci křížku.
- Stiskněte klávesu A pro aktivaci šipky.
- Stiskněte klávesu G pro aktivaci mřížky.
Skript
Macro_Mouse_Cross.FCMacro
# -*- coding: utf-8 -*-
# mouse cursor to Cross or Arrow + Grig
# ver 0.2 08/08/2014 PyQt4 and PySide
__title__ = "Macro_Mouse_Cross"
__author__ = "Mario52"
__url__ = "http://www.freecadweb.org/index-fr.html"
__version__ = "00.03"
__date__ = "25/01/2016"
try:
from PyQt4 import QtCore, QtGui
except Exception:
from PySide import QtCore, QtGui
from pivy import coin
global xx ;xx = -1
#################### create document if not exist #######################
doc = FreeCAD.ActiveDocument ####
if doc == None: ####
doc = FreeCAD.newDocument() ####
#########################################################################
class ViewObserver:
def logPosition(self, info):
global xx
self.pos = info["Key"]
if (self.pos.upper() == "Q"):
v.removeEventCallback("SoKeyboardEvent",c)
print "End Macro_Mouse_Cross"
if (self.pos.upper() == "C"):
# change the cursor cross ( + )
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
elif (self.pos.upper() == "A"):
# change the cursor in Arrow
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
elif (self.pos.upper() == "X") and (info["State"] == "DOWN"):
# change the cursor and visualise all model
xx += 1
if xx == 0:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
FreeCAD.Console.PrintMessage("ArrowCursor"+"\n")
if xx == 1:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.UpArrowCursor))
FreeCAD.Console.PrintMessage("UpArrowCursor"+"\n")
if xx == 2:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
FreeCAD.Console.PrintMessage("CrossCursor"+"\n")
if xx == 3:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor))
FreeCAD.Console.PrintMessage("WaitCursor"+"\n")
if xx == 4:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor))
FreeCAD.Console.PrintMessage("IBeamCursor"+"\n")
if xx == 5:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeVerCursor))
FreeCAD.Console.PrintMessage("SizeVerCursor"+"\n")
if xx == 6:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeHorCursor))
FreeCAD.Console.PrintMessage("SizeHorCursor"+"\n")
if xx == 7:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeBDiagCursor))
FreeCAD.Console.PrintMessage("SizeBDiagCursor"+"\n")
if xx == 8:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeFDiagCursor))
FreeCAD.Console.PrintMessage("SizeFDiagCursor"+"\n")
if xx == 9:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeAllCursor))
FreeCAD.Console.PrintMessage("SizeAllCursor"+"\n")
if xx == 10:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.BlankCursor))
FreeCAD.Console.PrintMessage("BlankCursor"+"\n")
if xx == 11:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SplitVCursor))
FreeCAD.Console.PrintMessage("SplitVCursor"+"\n")
if xx == 12:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SplitHCursor))
FreeCAD.Console.PrintMessage("SplitHCursor"+"\n")
if xx == 13:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
FreeCAD.Console.PrintMessage("PointingHandCursor"+"\n")
if xx == 14:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ForbiddenCursor))
FreeCAD.Console.PrintMessage("ForbiddenCursor"+"\n")
if xx == 15:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))
FreeCAD.Console.PrintMessage("OpenHandCursor"+"\n")
if xx == 16:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor))
FreeCAD.Console.PrintMessage("ClosedHandCursor"+"\n")
if xx == 17:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WhatsThisCursor))
FreeCAD.Console.PrintMessage("WhatsThisCursor"+"\n")
if xx == 18:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.BusyCursor))
FreeCAD.Console.PrintMessage("BusyCursor"+"\n")
if xx == 19:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.BitmapCursor))
FreeCAD.Console.PrintMessage("BitmapCursor"+"\n")
xx = -1
elif (self.pos.upper() == "G"):
# "wmayer" http://forum.freecadweb.org/viewtopic.php?f=3&t=1065&hilit=cross#p8818
# Create Grida
grid=coin.SoType.fromName("SoDrawingGrid").createInstance()
Gui.ActiveDocument.ActiveView.getSceneGraph().addChild(grid)
xx = -1
try:
v=Gui.activeDocument().activeView()
o = ViewObserver()
c = v.addEventCallback("SoKeyboardEvent",o.logPosition)
App.Console.PrintMessage("Type Key C to Cross"+"\n")
App.Console.PrintMessage("Type Key A to Arrow"+"\n")
App.Console.PrintMessage("Type Key X to Visualise all cursor"+"\n")
App.Console.PrintMessage("Type Key G to Grid (not editable)"+"\n")
App.Console.PrintMessage("Type Key Q to Quit"+"\n")
except Exception:
FreeCAD.Console.PrintError("\n"+"Not document open"+"\n")
Kurzory, které mohou být používány
ArrowCursor, UpArrowCursor, CrossCursor, WaitCursor, IBeamCursor, SizeVerCursor, SizeHorCursor SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor PointingHandCursor, ForbiddenCursor, OpenHandCursor, ClosedHandCursor, WhatsThisCursor, BusyCursor, BitmapCursor
Limitation
The cursor can change appearance depending on the used Workbench, he must repeat the operation.
The cursor can be subtituer to the other sliders (ex: expansion of a window, corner...).
The grid is permanent.