jeudi 9 janvier 2014

Ajouter des Widget dans des QListWidget et les appeler


    Voila une petite maniere de creer des widgets dans les lignes dune QListWidget et de pouvoir les appeler pour les utiliser.



from PySide.QtGui import *
from PySide.QtCore import *

class Win(QListWidget) : 
    def __init__(self) : 
        super(Win, self).__init__()

        s = QSize(25, 25)

#On met des widget type QCheckBox dans nos ligne
#de notre QListWidget

    #on rajoute 10 ligne
        for i in range(10) : 

        #On instancie un QListWidgetItem qui contiendra 
        #nos QCheckBox et QSpinBox
            item = QListWidgetItem()
            item.setSizeHint(s)

        #on cree nos widgets
            if i % 2 == 0 :
                cb = QCheckBox("Check Box " + str(i))
                cb.setFixedHeight ( 25) 
            else : 
                cb = QSpinBox()
                cb.setSuffix(" : Spinn Box " + str(i))
                cb.setFixedHeight ( 25)

        #On ajoute notre QListWidgetItem dans une ligne
        #grace a addItem() de QListWidget
            self.addItem(item)

        #Et on ajoute nos CheckBox et SpinBox a nos QListWidgetItem
        #Grace a la methode setItemWidget() de QListWidget
        #Le premier arg est le QListWidgetItem, le second arg est notre
        #Widget, pour nous QCheckBox et QSpinBox
            self.setItemWidget(item, cb)


            self.show()

#On recupere nos widget spinbox et checkbox : 

    #liste tous les items present dans le QListWidget
    #dans notre cas se sont des QListWidgetItem 
        widgetItems = []
        for i in range(self.count()) : 
            item = self.item(i)
            widgetItems.append(item)

    #on liste tous nos widget present dans nos QListWidgetItem
    #en passant par la method itemWidget() de QListWidget()
        checkItems = []
        for it in widgetItems : 
            ch = self.itemWidget(it)
            checkItems.append(ch.text())

            
s = Win()

mercredi 8 janvier 2014

Gizmo Nuke Time Code

    Et voila j'ai enfin fais un node de timecode pour nuke.
Vous pouvez le copier/coller dans votre graph nuke ou en faire un fichier .gizmo :

Gizmo {
 name TimeCode tile_color 0xff addUserKnob {20 "" l Color}
 addUserKnob {41 ramp T Text1.ramp}
 addUserKnob {41 color T Text1.color}
 addUserKnob {41 p1 l "point 1" T Text1.p1}
 addUserKnob {41 color0 l "color 0" T Text1.color0}
 addUserKnob {41 p0 l "point 0" T Text1.p0}
 addUserKnob {20 "" l Node}
 addUserKnob {41 output T Text1.output}
 addUserKnob {41 premult T Text1.premult}
 addUserKnob {41 cliptype l "clip to" T Text1.cliptype}
 addUserKnob {41 replace T Text1.replace}
 addUserKnob {41 invert T Text1.invert}
 addUserKnob {41 opacity T Text1.opacity}
 addUserKnob {26 "" l mask}
 addUserKnob {41 maskChannelMask l "" -STARTLINE T Text1.maskChannelMask}
 addUserKnob {41 maskChannelInput l "" -STARTLINE T Text1.maskChannelInput}
 addUserKnob {41 inject T Text1.inject}
 addUserKnob {41 invert_mask l invert T Text1.invert_mask}
 addUserKnob {26 ""}
 addUserKnob {20 Font n 1}
 Font 0
 addUserKnob {41 font T Text1.font}
 addUserKnob {41 index l "" -STARTLINE T Text1.index}
 addUserKnob {41 size T Text1.size}
 addUserKnob {41 kerning T Text1.kerning}
 addUserKnob {41 leading T Text1.leading}
 addUserKnob {41 xjustify l justify T Text1.xjustify}
 addUserKnob {41 yjustify l "" -STARTLINE T Text1.yjustify}
 addUserKnob {20 "" n -1}
 addUserKnob {20 Transform n 2}
 addUserKnob {41 box T Text1.box}
 addUserKnob {41 matrix T Text1.matrix}
 addUserKnob {41 translate T Text1.translate}
 addUserKnob {41 rotate T Text1.rotate}
 addUserKnob {41 scale T Text1.scale}
 addUserKnob {41 skew T Text1.skew}
 addUserKnob {41 center T Text1.center}
 addUserKnob {20 "" n -1}
}
 Input {
  inputs 0
  name Input1
  xpos 177
  ypos -144
 }
 Text {
  message "\n\[python str(int(nuke.thisNode().knob('hour').value())).zfill(2)]:\[python str(int(nuke.thisNode().knob('min').value())).zfill(2)]:\[python str(int(nuke.thisNode().knob('sec').value())).zfill(2)]:\[python str(int(nuke.thisNode().knob('frame').value())).zfill(2)]\n\n\n"
  font C:/Windows/Fonts/arial.ttf
  size 80
  kerning 0.1
  yjustify center
  box {512 389 1536 1167}
  translate {154 84}
  center {1024 778}
  name Text1
  selected true
  xpos 185
  ypos -71
  addUserKnob {20 User}
  addUserKnob {7 frame}
  frame {{"\[python -execlocal \\nret\\ =\\ \\ nuke.frame()\\ %\\ nuke.Root().fps()]"}}
  addUserKnob {7 sec}
  sec {{"\[python -execlocal \\ns\\ =\\ nuke.frame()\\ //\\ nuke.Root().fps()\\ %\\ 60\\ \\nret\\ =\\ s\\n\\n]"}}
  addUserKnob {7 min}
  min {{"\[python -execlocal s\\ =\\ nuke.frame()\\ //\\ nuke.Root().fps()\\nret\\ =\\ s\\ //\\ 60\\ %\\ 60]"}}
  addUserKnob {7 hour}
  hour {{"\[python -execlocal s\\ =\\ nuke.frame()\\ //\\ nuke.Root().fps()\\nret\\ =\\ s\\ //\\ 3600\\n]"}}
  addUserKnob {41 message_1 l message T Text1.message}
 }
 Output {
  name Output1
  xpos 177
  ypos -4
 }
end_group