DMUG-Archiv 2006

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: GUIKit - Zahenformat und Export-Funktion

On Wednesday 25 January 2006 09:14, Emanuel von Wartburg wrote:
> Hallo Mathematica-Users
>
> Ich habe begonnen mich ein bischen mit dem GUIKit herumzuschlagen und habe
> zwei Fragen die mir hoffentlich jemand beantworten kann (die GUIKit
> Dokumentation von Mathematica ist leider nicht sehr ausführlich).
>
> Zahlenformat
>
> Widget["Label",{"text" -> "Total: "}],
>      WidgetAlign[],
>      Widget["Textfield",{"horizontalAlignment" -> PropertyValue["RIGHT"],
> "editable" -> "false"}, Name -> "Resultat"]
>
> Dabei ist in der Variablen "Resultat" eine Zahl gespeichert. In der Ausgabe
> hat diese Zahl jedoch immer etwa zehn Nachkommastellen. Ich weiss nicht wie
> ich das Zahlenformat ändern kann. N[Resultat, 3] hat zum Beispiel keinen
> Einfluss, die Ausgabe hat unverändert viele Nachkommastellen.
>
> Export
>
> Script[
>          exportcs[] := Module[{fng},
>             Widget["FileDialog", Name -> "saveFileDialog"];
>             returnValue = InvokeMethod[{"saveFileDialog",
> "showSaveDialog"}, Null];
>             If[returnValue === PropertyValue[{"saveFileDialog",
> "APPROVE_OPTION"}],
>             PropertyValue[{PropertyValue[{"saveFileDialog",
> "selectedFile"}], "path"}], Null];
>             fng = ToExpression /@ PropertyValue[{"saveFileDialog",
> "selectedFile"}];
>             Export[fng, cp, "JPEG"];
>          ]
>       ]
>
> In der Variablen cp ist eine Graphik gespeichert, die ich in einem anderen
> Widget auch anzeigen kann. Ich kann das Script ohne Fehlermeldung
> durchführen, nur hat die Export-Funktion keinen Effekt. Ich vermute, das
> Problem liegt am Dateipfad (in der Variablen fng gespeichert) den ich mit
> dem saveFileDialog bestimme. Hat jemand eine Idee, wie ich diesen Dateipfad
> korrekt bestimme oder liegt das Problem anderswo?
>
> Besten Dank,
> Emanuel von Wartburg
--
Hallo,
einfach untiges in eine (!) Input Cell kopieren und evaluieren.
Ich habe es auf Windows und Linux getestet (man beachte dass unter
Linux es statt "Textfield" "TextField" heissen muss ).

MfG,

Rolf Mertig
GluonVision GmbH -  
Programmierung / Beratung / Zertifiziertes Mathematica Training
Berlin
http://www.gluonvision.com
------------------------------------

(* ***************************************************** *)
Needs["GUIKit`"];
JLink`InstallJava[];
Off[General::spell1];
locale = JLink`JavaNew["java.util.Locale","en","US"];
(* wenn man statt dem Dezimalpunkt "." ein "," will : *)
(* locale = JLink`JavaNew["java.util.Locale","de","DE"];*)
locale@setDefault[locale];
fmt=JLink`JavaNew["java.text.DecimalFormat","#.00"];
f=fmt[format[#]]&;
res=137./42;
(* f@res *)
test[
      ] :=GUIKit`GUIRunModal[
      GUIKit`Widget["Panel",{
          GUIKit`Widget["Label",{"text"->"Total: "}],
          GUIKit`WidgetAlign[],
          GUIKit`Widget[
            "TextField",{"text"->f[res],
              "horizontalAlignment"->GUIKit`PropertyValue["RIGHT"],
              "editable"->"false"},GUIKit`Name->"Resultat"]
           } ]
         ];
test[];
cp=Plot[Sin[x],{x,0,1}];

(* Da aus irgendeinem unerfindlichen Grund in Script der $ContextPath kein
"Global`" enthält,
   kann man sich z.B. mit With behelfen:
*)
With[{cp2 = cp},
GUIKit`GUIResolve[GUIKit`Script[
  GUIKit`Widget["FileDialog", Name -> "saveFileDialog"];
           returnValue =
GUIKit`InvokeMethod[{"saveFileDialog","showSaveDialog"}, Null];
           If[returnValue ===
GUIKit`PropertyValue[{"saveFileDialog","APPROVE_OPTION"}],

GUIKit`PropertyValue[{GUIKit`PropertyValue[{"saveFileDialog","selectedFile"}],
"path"}], Null];
           fng =  GUIKit`PropertyValue[{"saveFileDialog",
"selectedFile"}];
(* Dies ist des Pudels Kern:  fng muss "serialized" werden: *)
fngstr=fng@toString[];
(* dann klappt auch alles *)
Print["ff = ",fngstr, " contextpath in Script = ",$ContextPath, " head von
cp = ",cp//Head];
       Export[fngstr, cp2, "JPEG"];
        ]
    ]]
(* ***************************************************** *)


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html