本文整理汇总了Python中qgis.core.QgsActionManager.defaultAction方法的典型用法代码示例。如果您正苦于以下问题:Python QgsActionManager.defaultAction方法的具体用法?Python QgsActionManager.defaultAction怎么用?Python QgsActionManager.defaultAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsActionManager
的用法示例。
在下文中一共展示了QgsActionManager.defaultAction方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TestQgsActionManager
# 需要导入模块: from qgis.core import QgsActionManager [as 别名]
# 或者: from qgis.core.QgsActionManager import defaultAction [as 别名]
class TestQgsActionManager(unittest.TestCase):
def __init__(self, methodName):
"""Run once on class initialization."""
unittest.TestCase.__init__(self, methodName)
self.layer = QgsVectorLayer("Point?field=fldtxt:string&field=fldint:integer&field=flddate:datetime",
"test_layer", "memory")
self.manager = QgsActionManager(self.layer)
# make a little script to aid in recording action outputs
# this is just a little python file which writes out its arguments to a text file
self.run_script_file = os.path.join(QDir.tempPath(), 'run_action.py')
with open(self.run_script_file, 'w') as s:
s.write('import sys\n')
s.write('open(sys.argv[1], "w").write(" ".join(sys.argv[2:]))\n')
def get_temp_filename(self):
tmpFile = QTemporaryFile()
tmpFile.open() # fileName is no available until open
tmpName = tmpFile.fileName()
tmpFile.close()
tmpFile.setAutoRemove(False)
return tmpName
def create_action(self, dest_file, text_to_write):
""" returns an action which writes some output to a file """
return 'python {} {} {}'.format(self.run_script_file, dest_file, text_to_write)
def testLayer(self):
self.assertEqual(self.manager.layer(), self.layer)
def testAddAction(self):
""" Test adding actions """
# should be empty to start with
self.assertEqual(self.manager.actions(), [])
# add an action
action1 = QgsAction(QgsAction.GenericPython, 'Test Action', 'i=1')
self.manager.addAction(action1)
self.assertEqual(len(self.manager.actions()), 1)
self.assertEqual(self.manager.actions()[0].type(), QgsAction.GenericPython)
self.assertEqual(self.manager.actions()[0].name(), 'Test Action')
self.assertEqual(self.manager.actions()[0].command(), 'i=1')
# add another action
action2 = QgsAction(QgsAction.Windows, 'Test Action2', 'i=2')
self.manager.addAction(action2)
self.assertEqual(len(self.manager.actions()), 2)
self.assertEqual(self.manager.action(action2.id()).type(), QgsAction.Windows)
self.assertEqual(self.manager.action(action2.id()).name(), 'Test Action2')
self.assertEqual(self.manager.action(action2.id()).command(), 'i=2')
id3 = self.manager.addAction(QgsAction.Generic, 'Test Action3', 'i=3')
self.assertEqual(len(self.manager.actions()), 3)
self.assertEqual(self.manager.action(id3).type(), QgsAction.Generic)
self.assertEqual(self.manager.action(id3).name(), 'Test Action3')
self.assertEqual(self.manager.action(id3).command(), 'i=3')
def testRemoveActions(self):
""" test removing actions """
# add an action
self.manager.addAction(QgsAction.GenericPython, 'test_action', 'i=1')
# clear the manager and check that it's empty
self.manager.clearActions()
self.assertEqual(self.manager.actions(), [])
# add some actions
id1 = self.manager.addAction(QgsAction.GenericPython, 'test_action', 'i=1')
id2 = self.manager.addAction(QgsAction.GenericPython, 'test_action2', 'i=2')
id3 = self.manager.addAction(QgsAction.GenericPython, 'test_action3', 'i=3')
# remove non-existent action
self.manager.removeAction(QUuid.createUuid())
# remove them one by one
self.manager.removeAction(id2)
self.assertEqual(len(self.manager.actions()), 2)
self.assertEqual(self.manager.action(id1).name(), 'test_action')
self.assertEqual(self.manager.action(id3).name(), 'test_action3')
self.manager.removeAction(id1)
self.assertEqual(len(self.manager.actions()), 1)
self.assertEqual(self.manager.action(id3).name(), 'test_action3')
self.manager.removeAction(id3)
self.assertEqual(len(self.manager.actions()), 0)
def testDefaultAction(self):
""" test default action for layer"""
self.manager.clearActions()
action1 = QgsAction(QgsAction.GenericPython, 'test_action', '', 'i=1', False, actionScopes={'Feature'})
self.manager.addAction(action1)
action2 = QgsAction(QgsAction.GenericPython, 'test_action2', 'i=2')
self.manager.addAction(action2)
# initially should be not set
self.assertFalse(self.manager.defaultAction('Feature').isValid())
#.........这里部分代码省略.........
示例2: TestQgsActionManager
# 需要导入模块: from qgis.core import QgsActionManager [as 别名]
# 或者: from qgis.core.QgsActionManager import defaultAction [as 别名]
#.........这里部分代码省略.........
self.assertEqual(self.manager.listActions()[1].name(), 'test_action3')
self.manager.removeAction(0)
self.assertEqual(self.manager.size(), 1)
self.assertEqual(self.manager.listActions()[0].name(), 'test_action3')
self.manager.removeAction(0)
self.assertEqual(self.manager.size(), 0)
def testRetrieveAction(self):
""" test retrieving actions """
self.manager.clearActions()
# test that exceptions are thrown when retrieving bad indices
with self.assertRaises(KeyError):
self.manager[0]
with self.assertRaises(KeyError):
self.manager.at(0)
self.manager.addAction(QgsAction.GenericPython, 'test_action', 'i=1')
with self.assertRaises(KeyError):
self.manager[-1]
with self.assertRaises(KeyError):
self.manager.at(-1)
with self.assertRaises(KeyError):
self.manager[5]
with self.assertRaises(KeyError):
self.manager.at(5)
def testDefaultAction(self):
""" test default action for layer"""
self.manager.clearActions()
self.manager.addAction(QgsAction.GenericPython, 'test_action', 'i=1')
self.manager.addAction(QgsAction.GenericPython, 'test_action2', 'i=2')
# initially should be not set
self.assertEqual(self.manager.defaultAction(), -1)
# set bad default action
self.manager.setDefaultAction(10)
self.assertEqual(self.manager.defaultAction(), -1)
# set good default action
self.manager.setDefaultAction(1)
self.assertEqual(self.manager.defaultAction(), 1)
# if default action is removed, should be reset to -1
self.manager.clearActions()
self.assertEqual(self.manager.defaultAction(), -1)
def check_action_result(self, temp_file):
with open(temp_file, 'r') as result:
output = result.read()
return output
@unittest.expectedFailure(platform.system() != 'Linux')
def testDoAction(self):
""" test running action """
self.manager.clearActions()
# simple action
temp_file = self.get_temp_filename()
self.manager.addAction(QgsAction.Unix, 'test_action', self.create_action(temp_file, 'test output'))
fields = QgsFields()
fields.append(QgsField('my_field'))
fields.append(QgsField('my_other_field'))
f = QgsFeature(fields, 1)
f.setAttributes([5, 'val'])
c = QgsExpressionContext()
self.manager.doAction(0, f, c)
time.sleep(0.5)
self.assertEqual(self.check_action_result(temp_file), 'test output')
# action with substitutions
temp_file = self.get_temp_filename()
self.manager.addAction(QgsAction.Unix, 'test_action', self.create_action(temp_file, 'test [% $id %] output [% @layer_name %]'))
self.manager.doAction(1, f, c)
time.sleep(0.5)
self.assertEqual(self.check_action_result(temp_file), 'test 1 output test_layer')
# test doAction using field variant
temp_file = self.get_temp_filename()
self.manager.addAction(QgsAction.Unix, 'test_action', self.create_action(temp_file, 'test [% @current_field %]'))
self.manager.doActionFeature(2, f, 0)
time.sleep(0.5)
self.assertEqual(self.check_action_result(temp_file), 'test 5')
self.manager.doActionFeature(2, f, 1)
time.sleep(0.5)
self.assertEqual(self.check_action_result(temp_file), 'test val')