So this works but if the action I want to disable  happens to be the default 
action of the button it disables the entire button.

Also trying to capture what action the user selects and I tried

shape_digitize_tool_bar = iface.shapeDigitizeToolBar()
shape_digitize_tool_bar.actionTriggered[QAction].connect(self.shape_digitize_tool_bar_clicked)

but is never fired when I click on any of the buttons or select the menus

From: Jacky Volpes <[email protected]>
Sent: Wednesday, March 6, 2024 4:12 AM
To: Catania, Luke A ERDC-RDE-GRL-VA CIV <[email protected]>; 
[email protected]
Subject: Re: [QGIS-Developer] Access to shapeDigitizeToolBar menu's text

Hi Luke,

It works with setDisabled on action_item.
Be careful not to call setDisabled on every action of a category, then yes, it 
disables the entire icon.

Updated snippet for example:

actions_list = []
sdtb = iface.shapeDigitizeToolBar()
for i, action_widget_item in enumerate(sdtb.actions()):
    if action_widget_item.defaultWidget().menu() is None:
        actions_list.append(action_widget_item.defaultWidget().defaultAction())
        continue
    actions_list += action_widget_item.defaultWidget().menu().actions()

actions_ids = ['rectangle-from-extent', 'circle-from-3-points']  # actions ids 
to disable
[a.setDisabled(True) for a in actions_list if a.data() in actions_ids]  # 
disable the actions

[cid:[email protected]]





Jacky Volpes



Ingénieur SIG - Oslandia



Le 05/03/2024 à 19:32, Catania, Luke A ERDC-RDE-GRL-VA CIV a écrit :
When I use setDisabled on either  action_widget_item.defaultWidget or 
action_item it sets the disables the entire icon as opposed to the specific 
action item found.  Maybe I am missing something.  Like I don’t want the user 
to be able to draw an Ellipse from Foci so I disable that, but it disables the 
entire icon of menus for drawing Elipses.

From: Jacky Volpes <[email protected]><mailto:[email protected]>
Sent: Tuesday, February 27, 2024 5:29 AM
To: Catania, Luke A ERDC-RDE-GRL-VA CIV 
<[email protected]><mailto:[email protected]>; 
[email protected]<mailto:[email protected]>
Subject: Re: [QGIS-Developer] Access to shapeDigitizeToolBar menu's text

Hi Luke,

As you can see on the printed text, objects are QWigetAction, not QAction.
This is because you get each category of the tool bar, where then each one 
contains one or more digitizing QActions.
[cid:[email protected]]

Here is a snippet that can help you explore the tool bar:


sdtb = iface.shapeDigitizeToolBar()
for i, action_widget_item in enumerate(sdtb.actions()):
    print(f"{i}: {action_widget_item.defaultWidget().text()}")
    for j, action_item in 
enumerate(action_widget_item.defaultWidget().menu().actions()):
        print (f"\t{j}: {action_item.data()}")  # id like
        print (f"\t\ttranslated text: {action_item.text()}")


Regards,



Jacky Volpes



Ingénieur SIG - Oslandia

Le 27/02/2024 à 04:10, Catania, Luke A ERDC-RDE-GRL-VA CIV via QGIS-Developer a 
écrit :
Trying to get access to the button menus in shapeDigitizeToolBar.

from qgis.utils import iface

from PyQt5.QtWidgets import QWidgetAction
sdtb = iface.shapeDigitizeToolBar()
i=0
for action_item in sdtb.actions():
    i=i+1
    print (f"{i}: {action_item}")

This prints:

1: <PyQt5.QtWidgets.QWidgetAction object at 0x00000242801E98B0>
2: <PyQt5.QtWidgets.QWidgetAction object at 0x00000242F9E43F70>
3: <PyQt5.QtWidgets.QWidgetAction object at 0x00000242F9E590D0>
4: <PyQt5.QtWidgets.QWidgetAction object at 0x00000242F9E9E1F0>
5: <PyQt5.QtWidgets.QWidgetAction object at 0x00000242F9E274C0>

I want to access each button and the menus of the button so I can disable 
certain tools.  I need to get the text associated with the tools so I can key 
on that.

I can’t figure out how to get to them from QWidgetAction. I called all the 
methods on QAction that returns a string: data, iconText, statusTip, whatsThis 
and they all return empty strings.  So how are these menus labeled.

Thanks,
Luke




_______________________________________________

QGIS-Developer mailing list

[email protected]<mailto:[email protected]>

List info: Blockedhttps://lists.osgeo.org/mailman/listinfo/qgis-developerBlocked

Unsubscribe: 
Blockedhttps://lists.osgeo.org/mailman/listinfo/qgis-developerBlocked


_______________________________________________
QGIS-Developer mailing list
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to