当前位置: 首页>>代码示例>>Python>>正文


Python QgsActionManager.doAction方法代码示例

本文整理汇总了Python中qgis.core.QgsActionManager.doAction方法的典型用法代码示例。如果您正苦于以下问题:Python QgsActionManager.doAction方法的具体用法?Python QgsActionManager.doAction怎么用?Python QgsActionManager.doAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在qgis.core.QgsActionManager的用法示例。


在下文中一共展示了QgsActionManager.doAction方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: TestQgsActionManager

# 需要导入模块: from qgis.core import QgsActionManager [as 别名]
# 或者: from qgis.core.QgsActionManager import doAction [as 别名]

#.........这里部分代码省略.........

        # 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())

        # set bad default action
        self.manager.setDefaultAction('Feature', QUuid.createUuid())
        self.assertFalse(self.manager.defaultAction('Feature').isValid())

        # set good default action
        self.manager.setDefaultAction('Feature', action1.id())
        self.assertTrue(self.manager.defaultAction('Feature').isValid())
        self.assertEqual(self.manager.defaultAction('Feature').id(), action1.id())
        self.assertNotEqual(self.manager.defaultAction('Feature').id(), action2.id())

        # if default action is removed, should be reset to -1
        self.manager.clearActions()
        self.assertFalse(self.manager.defaultAction('Feature').isValid())

    def check_action_result(self, temp_file):
        with open(temp_file, 'r') as result:
            output = result.read()
        return output

    @unittest.expectedFailure(platform.system() != 'Linux')
    @unittest.skipIf(os.environ.get('TRAVIS', '') == 'true', 'Test is flaky on Travis environment')
    def testDoAction(self):
        """ test running action """

        self.manager.clearActions()

        # simple action
        temp_file = self.get_temp_filename()
        id1 = 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(id1, 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()
        id2 = self.manager.addAction(QgsAction.Unix, 'test_action', self.create_action(temp_file, 'test [% $id %] output [% @layer_name %]'))
        self.manager.doAction(id2, 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()
        id3 = self.manager.addAction(QgsAction.Unix, 'test_action',
                                     self.create_action(temp_file, 'test : [% @field_index %] : [% @field_name %] : [% @field_value%]'))
        self.manager.doActionFeature(id3, f, 0)
        time.sleep(0.5)
        self.assertEqual(self.check_action_result(temp_file), 'test : 0 : my_field : 5')
        self.manager.doActionFeature(id3, f, 1)
        time.sleep(0.5)
        self.assertEqual(self.check_action_result(temp_file), 'test : 1 : my_other_field : val')
开发者ID:SrNetoChan,项目名称:Quantum-GIS,代码行数:104,代码来源:test_qgsactionmanager.py

示例2: TestQgsActionManager

# 需要导入模块: from qgis.core import QgsActionManager [as 别名]
# 或者: from qgis.core.QgsActionManager import doAction [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')
开发者ID:fritsvanveen,项目名称:QGIS,代码行数:104,代码来源:test_qgsactionmanager.py


注:本文中的qgis.core.QgsActionManager.doAction方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。