Macro Mouse Cross/fr: Difference between revisions
(Updating to match new version of source page) |
No edit summary |
||
(15 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
<div class="mw-translate-fuzzy"> |
|||
{{Macro/fr |
{{Macro/fr |
||
|Name=Macro_Mouse_Cross |
|Name=Macro_Mouse_Cross |
||
|Name/fr=Macro_Mouse_Cross |
|Name/fr=Macro_Mouse_Cross |
||
|Icon=Macro_Mouse_Cross.png |
|||
|Translate=Macro Mouse Cross |
|||
|Description=Cette macro change la forme de la souris en une croix de précision. |
|Description=Cette macro change la forme de la souris en une croix de précision. |
||
|Shortcut=C, A , G, X, Q |
|Shortcut=C, A , G, X, Q |
||
|Author=Mario52 |
|Author=Mario52 |
||
|Version= |
|Version=0.05 |
||
|Date= |
|Date=2020-08-06 |
||
|FCVersion=0.18 et au-dessus |
|||
|Download=[https://wiki.freecad.org/images/f/ff/Macro_Mouse_Cross.png Icône de la barre d'outils] |
|||
}} |
}} |
||
</div> |
|||
==Description== |
==Description== |
||
Cette macro change la forme de la souris en une croix de précision |
Cette macro change la forme de la souris en une croix de précision. |
||
[[File:Macro_Mouse_Cross_00.png|480px|Macro_Mouse_Cross]] |
[[File:Macro_Mouse_Cross_00.png|480px|Macro_Mouse_Cross]] |
||
Line 20: | Line 23: | ||
Petit exemple d'utilisation de la class '''ViewObserver()''' et de l'utilisation du clavier avec '''[[Code_snippets/fr#Observation_des_.C3.A9v.C3.A8nements_de_la_souris_dans_la_vue_3D_via_Python|SoKeyboardEvent]]'''}} |
Petit exemple d'utilisation de la class '''ViewObserver()''' et de l'utilisation du clavier avec '''[[Code_snippets/fr#Observation_des_.C3.A9v.C3.A8nements_de_la_souris_dans_la_vue_3D_via_Python|SoKeyboardEvent]]'''}} |
||
<span id="Usage"></span> |
|||
==Utilisation== |
==Utilisation== |
||
Line 29: | Line 33: | ||
==Script== |
==Script== |
||
Icône de la barre d'outils [[Image:Macro_Mouse_Cross.png]] |
|||
'''Macro_Mouse_Cross.FCMacro''' |
'''Macro_Mouse_Cross.FCMacro''' |
||
{{ |
{{MacroCode|code= |
||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||
Line 37: | Line 44: | ||
# ver 0.2 08/08/2014 PyQt4 and PySide |
# ver 0.2 08/08/2014 PyQt4 and PySide |
||
# ver 0.4 07/06/2019 compatible Python 3. |
# ver 0.4 07/06/2019 compatible Python 3. |
||
# ver 0.5 06/08/2020 PySide2 and add image in macro |
|||
# |
# |
||
__title__ = "Macro_Mouse_Cross" |
__title__ = "Macro_Mouse_Cross" |
||
__author__ = "Mario52" |
__author__ = "Mario52" |
||
__wiki__ = "https://www.freecadweb.org/wiki/Macro_Mouse_Cross" |
__wiki__ = "https://www.freecadweb.org/wiki/Macro_Mouse_Cross" |
||
__url__ = " |
__url__ = "https://www.freecadweb.org/" |
||
__version__ = " |
__version__ = "0.05" |
||
__date__ = " |
__date__ = "06/08/2020" |
||
import PySide2 |
|||
try: |
|||
from PySide2 import QtWidgets, QtCore, QtGui |
|||
from PySide2.QtGui import QColor, QPixmap, QImage, QPainter, QCursor |
|||
except Exception: |
|||
from PySide2.QtCore import Qt,QUrl |
|||
from PySide2.QtWidgets import QApplication |
|||
from pivy import coin |
from pivy import coin |
||
FCCursor24x24_Icon = [ |
|||
"24 24 9 1", |
|||
" c None", |
|||
". c #3A0202", |
|||
"+ c #0E1245", |
|||
"@ c #640A0A", |
|||
"# c #B10A0B", |
|||
"$ c #2A3E71", |
|||
"% c #DF1F20", |
|||
"& c #49699A", |
|||
"* c #638EC0", |
|||
".............. ", |
|||
".%%%%%%%%%%%%. ", |
|||
".%%%%%%%%%%%%. ", |
|||
".%%%%%%%%%%%%. ", |
|||
".%%%%%%%%%%%%. ", |
|||
".%%%%......... ", |
|||
".%%%%. ++++ ", |
|||
".%%%%. +**+ ", |
|||
".%%%%. +++ +**+ +++ ", |
|||
".%%%%.....**+****+**+ ", |
|||
".%%%%%%%%.**********+ ", |
|||
".%%%%%%%%.+********+ ", |
|||
".%%%%%%%%.***++++***+ ", |
|||
".%%%%%....**++ ++**+++ ", |
|||
".%%%%..+****+ +****+ ", |
|||
".%%%%. +****+ +****+ ", |
|||
".%%%%. +++**++ ++**+++ ", |
|||
".%%%%. +***++++***+ ", |
|||
".%%%%. +********+ ", |
|||
".%%%%. +**********+ ", |
|||
".%%%%. +**+****+**+ ", |
|||
".%%%%. +++ +**+ +++ ", |
|||
".%%%%. +**+ ", |
|||
"...... ++++ " |
|||
] |
|||
global xx ;xx = -1 |
global xx ;xx = -1 |
||
Line 63: | Line 109: | ||
self.pos = info["Key"] |
self.pos = info["Key"] |
||
if (self.pos.upper() == "Q"): |
if (self.pos.upper() == "Q"): |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) |
|||
v.removeEventCallback("SoKeyboardEvent",c) |
v.removeEventCallback("SoKeyboardEvent",c) |
||
FreeCAD.Console.PrintMessage("End Macro_Mouse_Cross"+"\n") |
FreeCAD.Console.PrintMessage("End Macro_Mouse_Cross"+"\n") |
||
if (self.pos.upper() == "C"): |
if (self.pos.upper() == "C"): |
||
# change the cursor cross ( + ) |
# change the cursor cross ( + ) |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) |
|||
elif (self.pos.upper() == "A"): |
elif (self.pos.upper() == "A"): |
||
# change the cursor in Arrow |
# change the cursor in Arrow |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) |
|||
elif (self.pos.upper() == "X") and (info["State"] == "DOWN"): |
elif (self.pos.upper() == "X") and (info["State"] == "DOWN"): |
||
# change the cursor and visualise all model |
# change the cursor and visualise all model |
||
xx += 1 |
xx += 1 |
||
if xx == 0: |
if xx == 0: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) |
|||
FreeCAD.Console.PrintMessage("ArrowCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : ArrowCursor"+"\n") |
||
if xx == 1: |
if xx == 1: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.UpArrowCursor)) |
|||
FreeCAD.Console.PrintMessage("UpArrowCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : UpArrowCursor"+"\n") |
||
if xx == 2: |
if xx == 2: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) |
|||
FreeCAD.Console.PrintMessage("CrossCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : CrossCursor"+"\n") |
||
if xx == 3: |
if xx == 3: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) |
|||
FreeCAD.Console.PrintMessage("WaitCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : WaitCursor"+"\n") |
||
if xx == 4: |
if xx == 4: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor)) |
|||
FreeCAD.Console.PrintMessage("IBeamCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : IBeamCursor"+"\n") |
||
if xx == 5: |
if xx == 5: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeVerCursor)) |
|||
FreeCAD.Console.PrintMessage("SizeVerCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : SizeVerCursor"+"\n") |
||
if xx == 6: |
if xx == 6: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeHorCursor)) |
|||
FreeCAD.Console.PrintMessage("SizeHorCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : SizeHorCursor"+"\n") |
||
if xx == 7: |
if xx == 7: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeBDiagCursor)) |
|||
FreeCAD.Console.PrintMessage("SizeBDiagCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : SizeBDiagCursor"+"\n") |
||
if xx == 8: |
if xx == 8: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeFDiagCursor)) |
|||
FreeCAD.Console.PrintMessage("SizeFDiagCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : SizeFDiagCursor"+"\n") |
||
if xx == 9: |
if xx == 9: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeAllCursor)) |
|||
FreeCAD.Console.PrintMessage("SizeAllCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : SizeAllCursor"+"\n") |
||
if xx == 10: |
if xx == 10: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.BlankCursor)) |
|||
FreeCAD.Console.PrintMessage("BlankCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : BlankCursor"+"\n") |
||
if xx == 11: |
if xx == 11: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SplitVCursor)) |
|||
FreeCAD.Console.PrintMessage("SplitVCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : SplitVCursor"+"\n") |
||
if xx == 12: |
if xx == 12: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SplitHCursor)) |
|||
FreeCAD.Console.PrintMessage("SplitHCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : SplitHCursor"+"\n") |
||
if xx == 13: |
if xx == 13: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) |
|||
FreeCAD.Console.PrintMessage("PointingHandCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : PointingHandCursor"+"\n") |
||
if xx == 14: |
if xx == 14: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ForbiddenCursor)) |
|||
FreeCAD.Console.PrintMessage("ForbiddenCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : ForbiddenCursor"+"\n") |
||
if xx == 15: |
if xx == 15: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor)) |
|||
FreeCAD.Console.PrintMessage("OpenHandCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : OpenHandCursor"+"\n") |
||
if xx == 16: |
if xx == 16: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor)) |
|||
FreeCAD.Console.PrintMessage("ClosedHandCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : ClosedHandCursor"+"\n") |
||
if xx == 17: |
if xx == 17: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WhatsThisCursor)) |
|||
FreeCAD.Console.PrintMessage("WhatsThisCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : WhatsThisCursor"+"\n") |
||
if xx == 18: |
if xx == 18: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.BusyCursor)) |
|||
FreeCAD.Console.PrintMessage("BusyCursor"+"\n") |
FreeCAD.Console.PrintMessage(str(xx)+" : BusyCursor"+"\n") |
||
if xx == 19: |
if xx == 19: |
||
QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QPixmap(FCCursor24x24_Icon))) # image include in macro |
|||
#QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QPixmap("C:/completePath/image.png"))) # image to disk |
|||
FreeCAD.Console.PrintMessage(" |
FreeCAD.Console.PrintMessage(str(xx)+" : FCCursor24x24_Icon"+"\n") |
||
xx = -1 |
xx = -1 |
||
elif (self.pos.upper() == "G"): |
elif (self.pos.upper() == "G"): |
||
Line 140: | Line 188: | ||
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 |
xx = -1 |
||
Line 153: | Line 202: | ||
except Exception: |
except Exception: |
||
FreeCAD.Console.PrintError("\n"+"Not document open"+"\n") |
FreeCAD.Console.PrintError("\n"+"Not document open"+"\n") |
||
}} |
}} |
||
⚫ | |||
<span id="Cursors_that_can_be_used"></span> |
|||
⚫ | |||
ArrowCursor, UpArrowCursor, CrossCursor, WaitCursor, IBeamCursor, SizeVerCursor, SizeHorCursor |
ArrowCursor, UpArrowCursor, CrossCursor, WaitCursor, IBeamCursor, SizeVerCursor, SizeHorCursor |
||
SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor |
SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor |
||
Line 163: | Line 214: | ||
==Limitations== |
==Limitations== |
||
Le curseur peut changer d'apparence |
* Le curseur peut changer d'apparence en fonction de l'atelier utilisé, auquel cas la macro doit être exécutée à nouveau. |
||
Le curseur peut |
* Le curseur peut être remplacé (par exemple lors de l'expansion d'une fenêtre). |
||
La grille est permanente. |
* La grille est permanente. |
Latest revision as of 10:46, 30 December 2023
Description |
---|
Cette macro change la forme de la souris en une croix de précision. Version macro : 0.05 Date dernière modification : 2020-08-06 Version FreeCAD : 0.18 et au-dessus Téléchargement : Icône de la barre d'outils Auteur: Mario52 |
Auteur |
Mario52 |
Téléchargement |
Icône de la barre d'outils |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
0.05 |
Dernière modification |
2020-08-06 |
Version(s) FreeCAD |
0.18 et au-dessus |
Raccourci clavier |
C, A , G, X, Q |
Voir aussi |
None |
Description
Cette macro change la forme de la souris en une croix de précision.
Petit exemple d'utilisation de la class ViewObserver() et de l'utilisation du clavier avec SoKeyboardEvent
Utilisation
- Pressez la touche C pour activer la croix.
- Pressez la touche A pour activer la flèche.
- Pressez la touche G pour activer la grille.
- Pressez la touche X pour visualiser tous les curseurs.
- Pressez la touche Q pour quitter la macro.
Script
Macro_Mouse_Cross.FCMacro
# -*- coding: utf-8 -*- # mouse cursor to Cross or Arrow + Grig # ver 0.2 08/08/2014 PyQt4 and PySide # ver 0.4 07/06/2019 compatible Python 3. # ver 0.5 06/08/2020 PySide2 and add image in macro # __title__ = "Macro_Mouse_Cross" __author__ = "Mario52" __wiki__ = "https://www.freecadweb.org/wiki/Macro_Mouse_Cross" __url__ = "https://www.freecadweb.org/" __version__ = "0.05" __date__ = "06/08/2020" import PySide2 from PySide2 import QtWidgets, QtCore, QtGui from PySide2.QtGui import QColor, QPixmap, QImage, QPainter, QCursor from PySide2.QtCore import Qt,QUrl from PySide2.QtWidgets import QApplication from pivy import coin FCCursor24x24_Icon = [ "24 24 9 1", " c None", ". c #3A0202", "+ c #0E1245", "@ c #640A0A", "# c #B10A0B", "$ c #2A3E71", "% c #DF1F20", "& c #49699A", "* c #638EC0", ".............. ", ".%%%%%%%%%%%%. ", ".%%%%%%%%%%%%. ", ".%%%%%%%%%%%%. ", ".%%%%%%%%%%%%. ", ".%%%%......... ", ".%%%%. ++++ ", ".%%%%. +**+ ", ".%%%%. +++ +**+ +++ ", ".%%%%.....**+****+**+ ", ".%%%%%%%%.**********+ ", ".%%%%%%%%.+********+ ", ".%%%%%%%%.***++++***+ ", ".%%%%%....**++ ++**+++ ", ".%%%%..+****+ +****+ ", ".%%%%. +****+ +****+ ", ".%%%%. +++**++ ++**+++ ", ".%%%%. +***++++***+ ", ".%%%%. +********+ ", ".%%%%. +**********+ ", ".%%%%. +**+****+**+ ", ".%%%%. +++ +**+ +++ ", ".%%%%. +**+ ", "...... ++++ " ] 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"): QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) v.removeEventCallback("SoKeyboardEvent",c) FreeCAD.Console.PrintMessage("End Macro_Mouse_Cross"+"\n") if (self.pos.upper() == "C"): # change the cursor cross ( + ) QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) elif (self.pos.upper() == "A"): # change the cursor in Arrow QtWidgets.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: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : ArrowCursor"+"\n") if xx == 1: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.UpArrowCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : UpArrowCursor"+"\n") if xx == 2: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CrossCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : CrossCursor"+"\n") if xx == 3: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : WaitCursor"+"\n") if xx == 4: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : IBeamCursor"+"\n") if xx == 5: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeVerCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : SizeVerCursor"+"\n") if xx == 6: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeHorCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : SizeHorCursor"+"\n") if xx == 7: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeBDiagCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : SizeBDiagCursor"+"\n") if xx == 8: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeFDiagCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : SizeFDiagCursor"+"\n") if xx == 9: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SizeAllCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : SizeAllCursor"+"\n") if xx == 10: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.BlankCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : BlankCursor"+"\n") if xx == 11: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SplitVCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : SplitVCursor"+"\n") if xx == 12: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.SplitHCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : SplitHCursor"+"\n") if xx == 13: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : PointingHandCursor"+"\n") if xx == 14: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ForbiddenCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : ForbiddenCursor"+"\n") if xx == 15: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : OpenHandCursor"+"\n") if xx == 16: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ClosedHandCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : ClosedHandCursor"+"\n") if xx == 17: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WhatsThisCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : WhatsThisCursor"+"\n") if xx == 18: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.BusyCursor)) FreeCAD.Console.PrintMessage(str(xx)+" : BusyCursor"+"\n") if xx == 19: QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QPixmap(FCCursor24x24_Icon))) # image include in macro #QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QPixmap("C:/completePath/image.png"))) # image to disk FreeCAD.Console.PrintMessage(str(xx)+" : FCCursor24x24_Icon"+"\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")
Curseurs pouvant être utilisés
ArrowCursor, UpArrowCursor, CrossCursor, WaitCursor, IBeamCursor, SizeVerCursor, SizeHorCursor SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor PointingHandCursor, ForbiddenCursor, OpenHandCursor, ClosedHandCursor, WhatsThisCursor, BusyCursor, BitmapCursor
Limitations
- Le curseur peut changer d'apparence en fonction de l'atelier utilisé, auquel cas la macro doit être exécutée à nouveau.
- Le curseur peut être remplacé (par exemple lors de l'expansion d'une fenêtre).
- La grille est permanente.