X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Fplat%2FX11.cc;fp=src%2Forg%2Fibex%2Fplat%2FX11.cc;h=62672d78774167032a2b444d0ab304142256cbd7;hb=e2dab289d7adfebb01adf5ce782e7fa1b122cded;hp=0252a818f9c51da1dfe24bed6ef96a4900bbab8c;hpb=bf0e7b510f32df7da4684fd19fc55aef8156e9f5;p=org.ibex.core.git diff --git a/src/org/ibex/plat/X11.cc b/src/org/ibex/plat/X11.cc index 0252a81..62672d7 100644 --- a/src/org/ibex/plat/X11.cc +++ b/src/org/ibex/plat/X11.cc @@ -769,6 +769,31 @@ void org::ibex::plat::X11::natInit() { org::ibex::util::Log::info(this->getClass(), JvNewStringLatin1(buf)); } +#include "WINGs/WINGs.h" +jstring org::ibex::plat::X11::_fileDialog(jstring suggestedFileName, jboolean write) { + int argc = 1; + char* argv[2]; + argv[0] = "Ibex"; + argv[1] = NULL; + // FIXME see WINGs/Tests/filedialog.c for more info... need an icon + WMInitializeApplication("Ibex", &argc, argv); + WMScreen *scr = WMCreateSimpleApplicationScreen(display); + int len = min(1024, JvGetStringUTFLength(suggestedFileName)); + char buf[len + 1]; + JvGetStringUTFRegion(suggestedFileName, 0, len, buf); + buf[len] = '\0'; + if (write) { + WMSavePanel *sPanel; + sPanel = WMGetSavePanel(scr); + if (WMRunModalFilePanelForDirectory(sPanel, NULL, buf, /*title*/ NULL, NULL) != True) return NULL; + return JvNewStringLatin1(WMGetFilePanelFileName(sPanel)); + } else { + WMOpenPanel *oPanel; + oPanel = WMGetOpenPanel(scr); + if (WMRunModalFilePanelForDirectory(oPanel, NULL, buf, /*title*/ NULL, NULL) != True) return NULL; + return JvNewStringLatin1(WMGetFilePanelFileName(oPanel)); + } +} //////////////////////////////////////////////////////////////////////////////