Message Boards Message Boards

1
|
10152 Views
|
5 Replies
|
7 Total Likes
View groups...
Share
Share this post:

How can I create a data import button for Player Pro?

Posted 11 years ago

Hi everyone,

Can't seem to create a button for importing data from external files that could be used by those opening a notebook with Player Pro. I tried the example at the bottom of

http://www.wolfram.com/player-pro/developer-guidelines.html

by doing this

Manipulate[
 data = Import[dataFilePath, "CSV"],
 Button["Load data...", dataFilePath = SystemDialogInput["FileOpen"]]
 ]

but I get Failed or Canceled. Seems as though the file path is not saved to dataFilePath. What am I doing wrong?

Gregory

POSTED BY: Gregory Lypny
5 Replies

Here is a button that you can use that will import a file into a global parameter called myData:

Button["Import Data",
 myData = Catch@Module[{filePath},
    filePath = SystemDialogInput["FileOpen"];
    If[filePath === $Canceled, Throw[$Failed]];
    Import[filePath]
    ],
 Method -> "Queued"
 ]

The Method -> "Queued" option keeps the process from timing out since dynamic behaviors have a time limit on them when they are preemptive (as buttons are). The Catch and Throw just help to keep things nice if you cancel the system dialog.

POSTED BY: David Reiss
Posted 11 years ago

Hi David,

Works like a charm. Thank you for the crystal-clear explanation. I'll do my homework on Catch and Throw as I haven't had occasion to use them before.

Thanks again,

Gregory

POSTED BY: Gregory Lypny
Posted 3 years ago

.... seems not to work anymore ...

I would just open a file (picture) with a button, but I don't understand why my code doesn't work ...

Button["Click Here",
 Import[SystemDialogInput["FileOpen"]],
 Method -> "Queued"
 ]

Thanks for an help ...

Yvan

POSTED BY: Yvan Abbe

Hello Yvan,

I think the issue is that you need to store the result of the import into a variable that is shown somewhere else and wrapped inside a Dynamic[]. For example:

DynamicModule[{result = "please load file"},
 {Dynamic[result],
  Button["Click Here", result = Import[SystemDialogInput["FileOpen"]],
    Method -> "Queued"]}]
POSTED BY: Gustavo Delfino
Posted 3 years ago

Many thanks Gustavo It works ! The best new of the day for me today. So that I can go to sleep earlier today !

POSTED BY: Yvan Abbe
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract