1# Copyright (c) 2005-2020, Enthought, Inc. 2# All rights reserved. 3# 4# This software is provided without warranty under the terms of the BSD 5# license included in LICENSE.txt and may be redistributed only 6# under the conditions described in the aforementioned license. The license 7# is also available online at http://www.enthought.com/licenses/BSD.txt 8# 9# Thanks for using Enthought open source! 10# 11 12from traitsui.qt4.range_editor import ( 13 LargeRangeSliderEditor, 14 LogRangeSliderEditor, 15 RangeTextEditor, 16 SimpleSliderEditor, 17) 18 19from traitsui.testing.tester.command import KeyClick 20from traitsui.testing.tester.locator import Slider, Textbox 21from traitsui.testing.tester._ui_tester_registry.qt4 import ( 22 _interaction_helpers, 23 _registry_helper 24) 25 26 27class LocatedTextbox: 28 """ Wrapper class for a located Textbox in Qt. 29 30 Parameters 31 ---------- 32 textbox : Instance of QtGui.QLineEdit 33 """ 34 35 def __init__(self, textbox): 36 self.textbox = textbox 37 38 @classmethod 39 def register(cls, registry): 40 """ Class method to register interactions on a LocatedTextbox for the 41 given registry. 42 43 If there are any conflicts, an error will occur. 44 45 Parameters 46 ---------- 47 registry : TargetRegistry 48 The registry being registered to. 49 """ 50 _registry_helper.register_editable_textbox_handlers( 51 registry=registry, 52 target_class=cls, 53 widget_getter=lambda wrapper: wrapper._target.textbox, 54 ) 55 56 57class LocatedSlider: 58 """ Wrapper class for a located Slider in Qt. 59 60 Parameters 61 ---------- 62 slider : Instance of QtGui.QSlider 63 """ 64 65 def __init__(self, slider): 66 self.slider = slider 67 68 @classmethod 69 def register(cls, registry): 70 """ Class method to register interactions on a LocatedSlider for the 71 given registry. 72 73 If there are any conflicts, an error will occur. 74 75 Parameters 76 ---------- 77 registry : TargetRegistry 78 The registry being registered to. 79 """ 80 registry.register_interaction( 81 target_class=cls, 82 interaction_class=KeyClick, 83 handler=lambda wrapper, interaction: 84 _interaction_helpers.key_click_qslider( 85 wrapper._target.slider, interaction, wrapper.delay) 86 ) 87 88 89def register(registry): 90 """ Register interactions for the given registry. 91 92 If there are any conflicts, an error will occur. 93 94 Parameters 95 ---------- 96 registry : TargetRegistry 97 The registry being registered to. 98 """ 99 100 targets = [SimpleSliderEditor, 101 LogRangeSliderEditor, 102 LargeRangeSliderEditor] 103 for target_class in targets: 104 registry.register_location( 105 target_class=target_class, 106 locator_class=Textbox, 107 solver=lambda wrapper, _: LocatedTextbox( 108 textbox=wrapper._target.control.text), 109 ) 110 registry.register_location( 111 target_class=target_class, 112 locator_class=Slider, 113 solver=lambda wrapper, _: LocatedSlider( 114 slider=wrapper._target.control.slider), 115 ) 116 _registry_helper.register_editable_textbox_handlers( 117 registry=registry, 118 target_class=RangeTextEditor, 119 widget_getter=lambda wrapper: wrapper._target.control, 120 ) 121 122 LocatedTextbox.register(registry) 123 124 LocatedSlider.register(registry) 125