Dialogs and p3d

Return to Scripting Issues

Dialogs and p3d

Postby flavio » Tue Jun 07, 2011 10:28 am

Hello, I've a problem when I try to use DirectGUI dialogs inside p3d files.

I've this file main.py:
Code: Select all
import direct.directbase.DirectStart
from direct.gui.DirectDialog import OkDialog
OkDialog( text = "Hello" )
run()

If I run it using python main.py, I correctly obtain this:
Image
Now, if I pack it with packp3d -o app.p3d and run it with panda3d app.p3d I obtain this:
Image
So, I can't see the frame of the dialog. Am I missing something? Thanks!

I'm using Panda3D 1.7.2 on Maverick Meerkat 32.
User avatar
flavio
 
Posts: 530
Joined: Fri Apr 16, 2010 12:45 pm
Location: Rome, Italy

Postby rdb » Tue Jun 07, 2011 10:32 am

Have you tried using "-r models" on the packp3d command-line?
rdb
 
Posts: 8547
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby flavio » Tue Jun 07, 2011 11:06 am

It doesn't work even with "-r models". :(
User avatar
flavio
 
Posts: 530
Joined: Fri Apr 16, 2010 12:45 pm
Location: Rome, Italy

Postby drwr » Tue Jun 07, 2011 11:58 am

The symptom suggests that the file models/gui/dialog_box_gui.bam didn't get packed into your p3d file. As rdb suggested, using -r models should ensure that the entire models tree gets packed into your p3d file, so if it still doesn't work with that parameter, something is very strange.

What are the contents of your p3d file as revealed by the command "multify -tvf my.p3d"?

David
drwr
 
Posts: 11253
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby flavio » Tue Jun 07, 2011 12:07 pm

This is what I do:
Code: Select all
$ cat main.py
import direct.directbase.DirectStart
from direct.gui.DirectDialog import OkDialog
OkDialog( text = "Hello" )
run()
$ packp3d -r models -o my.p3d
:AppRunner: Total Panda3D disk space used: 154 MB
:AppRunner: Configured max usage is: 2048 MB
:Packager(warning): No such file: /home/flavio/Desktop/prova/p3d_info.xml
Generating my.p3d
$ multify -tvf my.p3d
2 subfiles:
         303   29%   Jun 07 19:03 main.pyo
         368         Jun 07 19:03 p3d_info.xml
Last modification Jun 07 19:03
User avatar
flavio
 
Posts: 530
Joined: Fri Apr 16, 2010 12:45 pm
Location: Rome, Italy

Postby drwr » Tue Jun 07, 2011 7:03 pm

Oh, right--of course, "-r models" doesn't actually copy the bam file into your p3d file; but it should ensure that it is properly downloaded and available to your p3d file when it executes. Hmm, let me try to reproduce this.

David
drwr
 
Posts: 11253
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby flavio » Thu Jun 09, 2011 2:46 am

drwr wrote:Hmm, let me try to reproduce this.

Thank you! I'll file a bug report.
User avatar
flavio
 
Posts: 530
Joined: Fri Apr 16, 2010 12:45 pm
Location: Rome, Italy

Postby flavio » Fri Jun 10, 2011 9:28 am

A strange (to me) aspect is that the package you pointed out doesn't contain the file you cited (models/gui/dialog_box_gui.bam): I can't find that file.
Code: Select all
$ multify -tvf models.cmu_1.7.mf
62 subfiles:
       10412          audio/sfx/GUI_click.wav
       11564          audio/sfx/GUI_rollover.wav
        2170          box.bam
        4295          camera.bam
       37137          cmr12.bam
       37331          cmss12.bam
       37331          cmtt12.bam
       61052          environment.bam
       30283          frowney.bam
        2216          gui/radio_button_gui.bam
       17880          jack.bam
     2033270          maps/4map.rgb
         315          maps/Dirlight.png
         315          maps/Pointlight.png
         315          maps/Spotlight.png
        5680          maps/circle.png
       33649          maps/cmr12.rgb
       35394          maps/cmss12.rgb
       36922          maps/cmtt12.rgb
       88312          maps/color-grid.rgb
       65272          maps/envir-bamboo.png
        1523          maps/envir-cylinder.png
        4688          maps/envir-ground.jpg
       14642          maps/envir-groundcover1.png
       48114          maps/envir-mountain1.png
      106434          maps/envir-mountain2.png
      133994          maps/envir-reeds.png
        6339          maps/envir-rock1.jpg
        7346          maps/envir-rock2.jpg
       84383          maps/envir-tree1.png
       65496          maps/envir-tree2.png
        6816          maps/envir-treetrunk.jpg
       15270          maps/frowney.rgb
       78272          maps/general_panel.rgba
       74384          maps/grid.rgb
      262656          maps/lightbulb.rgb
        3416          maps/lilsmiley.rgba
      197120          maps/noise.rgb
       89828          maps/panda-model.jpg
       43751          maps/panda_hat.rgb
      393728          maps/panda_head.rgb
       49451          maps/panda_torso.rgb
        3620          maps/panda_viser.rgb
       12800          maps/random.rgb
        3339          maps/shuttle_controls_1.rgb
       16704          maps/smiley.rgb
       66048          maps/soft_iris.rgb
        3733          misc/Dirlight.bam
        6168          misc/Pointlight.bam
        4178          misc/Spotlight.bam
        2207          misc/lilsmiley.bam
       18916          misc/smiley.bam
       77678          panda-model.bam
       27674          panda-walk.bam
       17429          panda-walk4.bam
      270402          panda.bam
      139176          ripple.bam
        6655          shuttle_controls.bam
       30403          smiley.bam
       40376          teapot.bam
       24627          yup-axis.bam
       24627          zup-axis.bam
User avatar
flavio
 
Posts: 530
Joined: Fri Apr 16, 2010 12:45 pm
Location: Rome, Italy

Postby rdb » Thu Jul 07, 2011 3:16 am

Found the problem. I don't build the pandatool tree as part of the rtdist build, so the flt2egg tool never gets built. Some models in the models tree are .flt, so they didn't get included properly. I'll fix it by simply enabling pandatool as part of the rtdist build.

For now, I advise manually calling flt2egg on the models that you need and including them yourself.
rdb
 
Posts: 8547
Joined: Mon Dec 04, 2006 5:58 am
Location: Netherlands

Postby flavio » Thu Jul 07, 2011 4:21 am

Ok, thank you so much!
User avatar
flavio
 
Posts: 530
Joined: Fri Apr 16, 2010 12:45 pm
Location: Rome, Italy

Postby flavio » Tue Mar 13, 2012 8:28 am

Hi, I am having the problem in the OP even with the 1.8 models package (which contains gui/dialog_box_gui.bam, though). I have packed the file in the OP with:
Code: Select all
$ packp3d -r models -o app.p3d

I don't receive errors in the console or in the logs, but I can't see the dialog box. Is my command correct? Am I missing anything? Thank you!
Image - Image
User avatar
flavio
 
Posts: 530
Joined: Fri Apr 16, 2010 12:45 pm
Location: Rome, Italy

Postby flavio » Wed Mar 14, 2012 6:44 am

I've noticed that there is a different behavior if you try to reference models (from 'models' package) with or without the prefix 'models/' in a p3d or in a py file. If you consider the following code:
Code: Select all
import direct.directbase.DirectStart
for a in [ 'models/gui/dialog_box_gui', 'gui/dialog_box_gui',
    'models/misc/fade', 'misc/fade' ]:
  np = loader.loadModel( a, okMissing = True )
  print 'referenced_by: %-25s path: %s' % (
    a, np.node().getFullpath().toOsSpecific() if np else 'not found' )
run()

It produces:
Code: Select all
$ python main.py
[...]
referenced_by: models/gui/dialog_box_gui path: /Developer/Panda3D/models/gui/dialog_box_gui.egg
referenced_by: gui/dialog_box_gui        path: /Developer/Panda3D/models/gui/dialog_box_gui.egg
referenced_by: models/misc/fade          path: /Developer/Panda3D/models/misc/fade.egg
referenced_by: misc/fade                 path: /Developer/Panda3D/models/misc/fade.egg
[...]
$ packp3d -r models -o app.p3d
[...]
$ panda3d app.p3d
[...]
referenced_by: models/gui/dialog_box_gui path: not found
referenced_by: gui/dialog_box_gui        path: /Users/flavio/Library/Caches/Panda3D/hosts/runtime.panda3d.org_0f5faf88846080ae/models/cmu_1.8/gui/dialog_box_gui.bam
referenced_by: models/misc/fade          path: not found
referenced_by: misc/fade                 path: /Users/flavio/Library/Caches/Panda3D/hosts/runtime.panda3d.org_0f5faf88846080ae/models/cmu_1.8/misc/fade.bam

As you can see, files referenced without the prefix 'models/' are correctly loaded with the p3d or the py file, while the ones referenced with the prefix 'models/' work only with the py file.

Now, in Panda's code the prefix 'models/' is used somewhere e.g.

direct/src/gui/DirectGuiGlobals.py:
Code: Select all
defaultDialogGeom = loader.loadModel('models/gui/dialog_box_gui', okMissing = True)


direct/src/showbase/Transitions.py:
Code: Select all
FadeModelName = "models/misc/fade"


I don't know if the two things are related and if it may be the reason of the problem (maybe Panda's code may be expected to behave differently than a generic p3d file).
Image - Image
User avatar
flavio
 
Posts: 530
Joined: Fri Apr 16, 2010 12:45 pm
Location: Rome, Italy

Postby flavio » Wed Mar 14, 2012 1:12 pm

It looks like that was the problem: the following code works using Python's interpreter and Panda's runtime too.
Code: Select all
import direct.directbase.DirectStart
from panda3d.core import Filename, VirtualFileSystem
from direct.gui.DirectDialog import OkDialog
if base.appRunner:
  modelsRoot = Filename.expandFrom( '$MODELS_ROOT' )
  vfs.mount( modelsRoot + '/models.cmu_1.8.mf', modelsRoot + '/models', VirtualFileSystem.MFReadOnly)
OkDialog( text = "Hello" )
run()

Is it the best way to use the 'models' package?
Image - Image
User avatar
flavio
 
Posts: 530
Joined: Fri Apr 16, 2010 12:45 pm
Location: Rome, Italy

Postby drwr » Tue Apr 24, 2012 1:01 pm

Well, you've got a workaround, but this does seem like a bug. Can you submit a bug report on the launchpad, please?

Thanks!
David
drwr
 
Posts: 11253
Joined: Fri Feb 13, 2004 12:42 pm
Location: Glendale, CA

Postby flavio » Thu Apr 26, 2012 4:53 am

drwr wrote:Can you submit a bug report on the launchpad, please?

Ok, I've submitted it. ;)
Image - Image
User avatar
flavio
 
Posts: 530
Joined: Fri Apr 16, 2010 12:45 pm
Location: Rome, Italy


Return to Scripting Issues

Who is online

Users browsing this forum: No registered users and 1 guest