1 // Example for use of GNU gettext. 2 // This file is in the public domain. 3 // 4 // Source code of the Java/QtJambi program. 5 6 import java.util.*; 7 import java.io.*; 8 import java.text.*; 9 import com.trolltech.qt.core.*; 10 import com.trolltech.qt.gui.*; 11 import gnu.gettext.*; 12 13 public class Hello { main(String[] args)14 public static void main (String[] args) { 15 ResourceBundle catalog = ResourceBundle.getBundle("hello-java-qtjambi"); 16 17 QApplication.initialize(args); 18 19 QMainWindow window = new QMainWindow(); 20 window.setWindowTitle("Hello example"); 21 22 QWidget panel = new QWidget(); 23 QVBoxLayout panelLayout = new QVBoxLayout(); 24 panelLayout.setSpacing(2); 25 26 QLabel label1 = 27 new QLabel(GettextResource.gettext(catalog,"Hello, world!")); 28 panelLayout.addWidget(label1); 29 30 QLabel label2 = 31 new QLabel( 32 MessageFormat.format( 33 GettextResource.gettext(catalog, 34 "This program is running as process number {0}."), 35 new Object[] { getPid() })); 36 panelLayout.addWidget(label2); 37 38 QWidget buttonBar = new QWidget(); 39 QHBoxLayout buttonBarLayout = new QHBoxLayout(); 40 QWidget filler = new QWidget(); // makes the button right-aligned 41 buttonBarLayout.addWidget(filler); 42 QPushButton button = new QPushButton("OK"); 43 button.setMaximumWidth(button.sizeHint().width()+20); 44 button.clicked.connect(window, "close()"); 45 buttonBarLayout.addWidget(button); 46 buttonBar.setLayout(buttonBarLayout); 47 panelLayout.addWidget(buttonBar); 48 49 panel.setLayout(panelLayout); 50 51 window.setCentralWidget(panel); 52 53 window.show(); 54 55 QApplication.exec(); 56 } 57 58 /* Return the process ID of the current process. */ getPid()59 private static String getPid () { 60 try { 61 String[] args = new String[] { "/bin/sh", "-c", "echo $PPID" }; 62 Process p = Runtime.getRuntime().exec(args); 63 InputStream p_out = p.getInputStream(); 64 String s = (new BufferedReader(new InputStreamReader(p_out))).readLine(); 65 p.destroy(); 66 if (s != null) 67 return s; 68 } catch (IOException e) { 69 e.printStackTrace(); 70 } 71 return "???"; 72 } 73 } 74