[RESOLU] - Popup Udate

Ici on parle des scripts

Modérateurs : frez, Yadoob, stilobique, Matpi, ModSquad

[RESOLU] - Popup Udate

Message par cedric » 20 Fév 2016, 16:25

Yop,

J'essaie de me faire un script qui m'indiquerait des settings en fonction de mes sélections histoire de pouvoir bosser en plein écran.

Je passe par un popup car il permet de modifier plusieurs valeurs.
Mon problème étant qu'il doit être relancé pour que certaines fonctions soient modifiées, ou du moins, qu'on voit la différence entre 2 états.

Voici un exemple.

Image

Quelqu'un aurait une idée de comment faire une mise à jour du popup ?

thx

Ced
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7053
Inscription : 03 Août 2013, 21:36

Re: Popup Udate

Message par pistiwique » 20 Fév 2016, 17:50

Même souci que sur l'AM :(
J'y ai réfléchi et j'ai trouvé une solution mais un peu barbare.
Comme apparemment il faut relancer le popup pour qu'il fasse l'update et que le popup apparaît sous la souris, je me suis dis qu'on pourrait récupérer les coordonnées du curseur au moment de l'appel du popup, créer une fonction update la ou il y en a besoin qui fermerai le popup, placerait le curseur à l'endroit endroit initial grâce aux coordonnées sauvegardées et appeler de nouveau le popup.
C'est super lourdeau surement comme méthode mais pour l'instant je ne vois rien d'autre.
Avatar de l’utilisateur
pistiwique
 
Message(s) : 590
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Re: Popup Udate

Message par Matpi » 20 Fév 2016, 19:05

Tu aurais un script d'exemple simple qui montre le problème?
BAddons - La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Avatar de l’utilisateur
Matpi
 
Message(s) : 288
Inscription : 07 Déc 2014, 10:51
Localisation : in dr Schwiiz

Re: Popup Udate

Message par jemian » 20 Fév 2016, 19:07

Peut être via des listeners non? Tu utilises ça Pisti?
http://wiki.blender.org/index.php/Dev:2.5/Source/Architecture/Notifiers/Introduction
Avatar de l’utilisateur
jemian
 
Message(s) : 2797
Inscription : 03 Fév 2014, 01:52
Localisation : Brest

Re: Popup Udate

Message par Matpi » 20 Fév 2016, 19:49

Ça c'est dans l'architecture C de Blender, pas exposé dans l'API Python.
BAddons - La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Avatar de l’utilisateur
Matpi
 
Message(s) : 288
Inscription : 07 Déc 2014, 10:51
Localisation : in dr Schwiiz

Re: Popup Udate

Message par Clarkx » 20 Fév 2016, 20:12

Il faut utiliser "check".
Dans l'exemple, cliquez plusieurs fois sur la case à cocher (mon code est tout pourri ^^), normalement, une deuxieme ligne de texte doit s'afficher.

Code : Tout sélectionner
#----------------------------------------------------------
# File popup.py
# from API documentation
#----------------------------------------------------------
 
import bpy
from bpy.props import *
 
theFloat = 9.8765
theBool = False
theString = "Lorem ..."
theString2 = "Ipsum ..."
theEnum = 'one'
 
class DialogOperator(bpy.types.Operator):
    bl_idname = "object.dialog_operator"
    bl_label = "Simple Dialog Operator"
    bl_options = {'REGISTER', 'UNDO'}
 
    my_float = FloatProperty(name="Some Floating Point",
        min=0.0, max=100.0)
    my_bool = BoolProperty(name="Toggle Option")
    my_string = StringProperty(name="String Value")
    my_string2 = StringProperty(name="Test")
    my_enum = EnumProperty(name="Enum value",
        items = [('one', 'eins', 'un'),
                 ('two', 'zwei', 'deux'),
                 ('three', 'drei', 'trois')])

    @classmethod
    def poll(cls, context):
        return True

    def check(self, context):
        return True
 
    def execute(self, context):
        message = "%.3f, %d, '%s' %s" % (self.my_float,
            self.my_bool, self.my_string, self.my_enum)
        self.report({'INFO'}, message)
        print(message)
        return {'FINISHED'}
   
    def invoke(self, context, event):
        global theFloat, theBool, theString, theEnum
        self.my_float = theFloat
        self.my_bool = theBool
        self.my_string = theString
        self.my_string2 = theString2     
        self.my_enum = theEnum
        return context.window_manager.invoke_props_popup(self, event)
 
    def draw(self, context):
        self.layout.label("Popup Test")
        layout = self.layout
        col = layout.column()
        row = col.row(align=True)
        row.prop(self, "my_float")
        row.prop(self, "my_bool")
        col = layout.column()
        row = col.row(align=True)       
        row.prop(self, "my_string")
        if self.my_bool == True:
            col = layout.column()
            row = col.row(align=True)       
            row.prop(self, "my_string2")
        col = layout.column()
        row = col.row(align=True)       
        row.prop(self, "my_enum")

bpy.utils.register_class(DialogOperator)
 
# Invoke the dialog when loading
bpy.ops.object.dialog_operator('INVOKE_DEFAULT')
 
#
#    Panel in tools region
#
class DialogPanel(bpy.types.Panel):
    bl_label = "Dialog"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
 
    def draw(self, context):
        global theFloat, theBool, theString, theString2, theEnum
        theFloat = 12.345
        theBool = True
        if theBool == False:
            theString2 = "Test"
        theString = "Code snippets"
        theEnum = 'two'
        self.layout.operator("object.dialog_operator")
 
#
#   Registration

def register():
    bpy.utils.register_module(__name__)
   
def unregister():
    bpy.utils.unregister_module(__name__)   
Clarkx
 
Message(s) : 50
Inscription : 06 Déc 2014, 16:29

Re: Popup Udate

Message par pistiwique » 20 Fév 2016, 20:31

Clarkx t'es trop balaise !
Et dire qu'il manquait juste cette fonction check pour que ça roule impec :oops:
Avatar de l’utilisateur
pistiwique
 
Message(s) : 590
Inscription : 10 Août 2014, 10:35
Localisation : le sud ou il fait trop chaud

Re: Popup Udate

Message par Matpi » 20 Fév 2016, 20:34

Ben RTFM une fois de plus... :D
BAddons - La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Avatar de l’utilisateur
Matpi
 
Message(s) : 288
Inscription : 07 Déc 2014, 10:51
Localisation : in dr Schwiiz

Re: Popup Udate

Message par cedric » 20 Fév 2016, 20:39

Si simple O_o !

Image

Thx a lot !
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7053
Inscription : 03 Août 2013, 21:36

Re: [RESOLU] - Popup Udate

Message par cedric » 20 Fév 2016, 21:19

Ça nous permet de remettre notre popup pour l'AM ^^

Image
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7053
Inscription : 03 Août 2013, 21:36

Re: [RESOLU] - Popup Udate

Message par cedric » 20 Fév 2016, 21:27

Est ce qu'il y aurait une option pour fermer le popup après une certaines action ?
Genre là j'aimerai qu'il se ferme après avoir ajouté un objet.
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7053
Inscription : 03 Août 2013, 21:36


Retour vers Scripts - Python - OSL

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)

cron