PDA

Voir la version complète : Question Récupérer Clique droit GeDialog.Command



gr4ph0s
17/05/2016, 20h51
Hey ! c'est encore moi :)
Voila je ne sais pas si c'est un bug ou non mais je suis incapable de savoir si il s'agit d'un click droit ou d'un click gauche dans un Command(self, id, msg).

Pourtant sur la doc on peu lire que le basecontainer de Command contient ceci.


BFM_ACTION_DP_MENUCLICK
bool
Right mouse button.


Hors BFM_ACTION_DP_MENUCLICK n'est même pas définis dans le basecontainer ^^'

J'ai aussi essayé avec getInputState et getInputEvent mais sans succès... Si quelqu'un à une piste je suis preneur :)

ps: je suis en python et sur la r17

Voici un petit code, le but étant d'arriver a detecter le click gauche et le click droit lors d'une action sur les tabs (switch/click sur tab)


import c4d


class my_UI(c4d.gui.GeDialog):
def CreateLayout(self):
self.TabGroupBegin(1,c4d.BFH_CENTER)
self.AddButton(2, c4d.BFH_CENTER,500, 20, 'button 1')
self.AddButton(3, c4d.BFH_CENTER,500, 20, 'button 2')
self.GroupEnd()
return True

def Command(self, id, msg):
for index, value in msg:
print "Index: %i, Value: %s" % (index, str(value))

return True


def main():
test = my_UI()
test.Open(c4d.DLG_TYPE_MODAL_RESIZEABLE)


if __name__=='__main__':
main()

valkaari
18/05/2016, 02h57
Pas mieux et si tu regarde ce post (http://www.plugincafe.com/forum/forum_posts.asp?TID=7811&KW=clic+tab) tu verra que t'es pas le seul à te poser la question

Je comprends pas trop non plus.
C'est plus direct pour le clavier. En bricolant ça donne un truc comme ça,




import c4d




class my_UI(c4d.gui.GeDialog):
leftMouse = 0
rightMouse = 0

def Message(self, msg, result):


res = c4d.BaseContainer()
c4d.gui.GetInputState(c4d.BFM_INPUT_MOUSE, c4d.BFM_INPUT_MOUSELEFT, res)
if res[c4d.BFM_INPUT_VALUE] == 1 :
self.leftMouse = 1


c4d.gui.GetInputState(c4d.BFM_INPUT_MOUSE, c4d.BFM_INPUT_MOUSERIGHT, res)
if res[c4d.BFM_INPUT_VALUE] == 1:
self.rightMouse = 1




return c4d.gui.GeDialog.Message(self, msg, result)




def CreateLayout(self):
self.TabGroupBegin(1234,c4d.BFH_CENTER)
self.AddButton(1235, c4d.BFH_CENTER,500, 20, 'button 1')
self.AddButton(1236, c4d.BFH_CENTER,500, 20, 'button 2')
self.GroupEnd()
self.AddButton(4, c4d.BFH_CENTER,500,20, 'quit')




return True

def Command(self, id, msg):
if id == 4:
self.Close()



print self.leftMouse, self.rightMouse
self.leftMouse = self.rightMouse = 0




return True




def main():
test = my_UI()
test.Open(c4d.DLG_TYPE_MODAL_RESIZEABLE)




if __name__=='__main__':
main()

gr4ph0s
18/05/2016, 15h17
Étrange en gros Message est appelé plus souvent que Command? ^^'
Car normalement ça devrais fonctionner dans Command. Enfin bon merci à toi ! :)

valkaari
18/05/2016, 20h31
ça devrait fonctionner dans command oui. Message est appelé bien plus souvent que command même si tu ne fais que bouger la souris.

C'est peut être lié aux threads je ne sais pas. (et je n'ai pas testé en c++)