Hi Roman, could I trouble you for some advice?
I have a snippet of my code below.. I'm trying to use lists, sliders and radiobuttons, the list and sliders work fine but I can't seem to be able to toggle the radio buttons via mouse (or touchscreen I suspect) the only way I can manage to do it is via keyboard.. can you point out where I've gone wrong and show me how I can get the radiobuttons to repsond to mouse actions, I've tried fiddling with window.connectEventList areas but all I've managed to accomplish is breaking the other controls. Thanks for any help.
Code:
import pyxbmct.addonwindow as pyxbmct
import xbmc, xbmcaddon, xbmcgui, xbmcplugin
window = pyxbmct.AddonDialogWindow('')
window.setGeometry(1240, 650, 300, 160)
def radio1_update():
if radiobutton1.isSelected():
radiobutton2.setSelected(False)
radiobutton3.setSelected(False)
radiobutton4.setSelected(False)
else:
radiobutton1.setSelected(True)
def radio2_update():
if radiobutton2.isSelected():
radiobutton1.setSelected(False)
radiobutton3.setSelected(False)
radiobutton4.setSelected(False)
else:
radiobutton2.setSelected(True)
def radio3_update():
if radiobutton3.isSelected():
radiobutton1.setSelected(False)
radiobutton2.setSelected(False)
radiobutton4.setSelected(False)
else:
radiobutton3.setSelected(True)
def radio4_update():
if radiobutton4.isSelected():
radiobutton1.setSelected(False)
radiobutton2.setSelected(False)
radiobutton3.setSelected(False)
else:
radiobutton4.setSelected(True)
def list_update():
try:
if window.getFocus() == slider1:
# do things
pass
except:
pass
try:
if window.getFocus() == slider2:
# do things
pass
except:
pass
try:
if window.getFocus() == slider3:
# do things
pass
except:
pass
try:
if window.getFocus() == listitem1:
#do things
pass
else:
pass
except:
pass
#################### S L I D E R S ########################################
# Slider value label
SLIDER1_INIT_VALUE = 100
# Slider
global slider1
slider1 = pyxbmct.Slider()
window.placeControl(slider1, 180, 90, 25, 60)
slider1.setPercent(SLIDER1_INIT_VALUE)
slider1.setVisible(True)
#Connect key and mouse events for slider update feedback.
window.connectEventList([pyxbmct.ACTION_MOVE_LEFT,
pyxbmct.ACTION_MOVE_RIGHT,
pyxbmct.ACTION_MOUSE_DRAG,
pyxbmct.ACTION_MOUSE_LEFT_CLICK],
list_update)
################ slider 2
# Slider value label
SLIDER2_INIT_VALUE = 50
# Slider
global slider2
slider2 = pyxbmct.Slider()
window.placeControl(slider2, 270, 90, 25, 60)
slider2.setPercent(SLIDER2_INIT_VALUE)
slider2.setVisible(True)
#Connect key and mouse events for slider update feedback.
window.connectEventList([pyxbmct.ACTION_MOVE_LEFT,
pyxbmct.ACTION_MOVE_RIGHT,
pyxbmct.ACTION_MOUSE_DRAG,
pyxbmct.ACTION_MOUSE_LEFT_CLICK],
list_update)
################### R A D I O B U T T O N S #################################
radiobutton1 = pyxbmct.RadioButton('1')
window.placeControl(radiobutton1, 458, 25, 10, 12)
window.connect(radiobutton1, radio1_update)
radiobutton1.setVisible(True)
radiobutton2 = pyxbmct.RadioButton('2')
window.placeControl(radiobutton2, 458, 37, 10, 12)
window.connect(radiobutton2, radio2_update)
radiobutton2.setVisible(True)
radiobutton3 = pyxbmct.RadioButton('3')
window.placeControl(radiobutton3, 458, 49, 10, 12)
window.connect(radiobutton3, radio3_update)
radiobutton3.setVisible(True)
radiobutton4 = pyxbmct.RadioButton('4')
window.placeControl(radiobutton4, 458, 61, 10, 12)
window.connect(radiobutton4, radio4_update)
radiobutton4.setVisible(True)
########################################################################
listitem1 = pyxbmct.List('font14', '', _space=5, _itemHeight=35, _alignmentY=6)
window.placeControl(listitem1, 110, 3, 470, 65)
listitem1.setVisible(True)
window.connect(listitem1, lambda: window.setFocus(listitem1))
listitem1.addItem('1')
listitem1.addItem('2')
listitem1.addItem('3')
listitem1.addItem('4')
listitem1.controlDown(radiobutton1)
radiobutton1.controlUp(listitem1)
radiobutton1.controlRight(radiobutton2)
radiobutton2.controlLeft(radiobutton1)
radiobutton2.controlRight(radiobutton3)
radiobutton3.controlLeft(radiobutton2)
radiobutton3.controlRight(radiobutton4)
radiobutton4.controlLeft(radiobutton3)
window.connectEventList(
[pyxbmct.ACTION_MOVE_DOWN,
pyxbmct.ACTION_MOVE_UP,
pyxbmct.ACTION_MOUSE_WHEEL_DOWN,
pyxbmct.ACTION_MOUSE_WHEEL_UP,
pyxbmct.ACTION_MOUSE_MOVE],
list_update)
window.connect(pyxbmct.ACTION_NAV_BACK, window.close)
# Show the created window.
window.doModal()
# Delete the window instance when it is no longer used.
del window