* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*/
-using GLib;
-using IBus;
-
-
-public extern const string IBUS_VERSION;
bool name_only = false;
class EngineList {
- public EngineDesc[] data = {};
+ public IBus.EngineDesc[] data = {};
}
-IBus.Bus get_bus() {
+IBus.Bus? get_bus() {
IBus.init();
var bus = new IBus.Bus();
+ if (!bus.is_connected ())
+ return null;
return bus;
}
int list_engine(string[] argv) {
- const OptionEntry[] options = {
- { "name-only", 0, 0, OptionArg.NONE, out name_only, "engine name only", "engine name only" },
+ const OptionEntry[] options = {
+ { "name-only", 0, 0, OptionArg.NONE, out name_only,
+ N_("List engine name only"), null },
{ null }
};
- var option = new OptionContext("command [OPTIONS]");
+ var option = new OptionContext(_("command [OPTIONS]"));
option.add_main_entries(options, "ibus");
try {
option.parse(ref argv);
} catch (OptionError e) {
+ stderr.printf("%s\n", e.message);
+ return Posix.EXIT_FAILURE;
}
var bus = get_bus();
+ if (bus == null) {
+ stderr.printf(_("Can't connect to IBus.\n"));
+ return Posix.EXIT_FAILURE;
+ }
var engines = bus.list_engines();
foreach (var engine in engines) {
print("%s\n", engine.get_name());
}
- return 0;
+ return Posix.EXIT_SUCCESS;
}
var map = new HashTable<string, EngineList>(GLib.str_hash, GLib.str_equal);
foreach (var language in map.get_keys()) {
var list = map.get(language);
- print("language: %s\n", IBus.get_language_name(language));
+ print(_("language: %s\n"), IBus.get_language_name(language));
foreach (var engine in list.data) {
print(" %s - %s\n", engine.get_name(), engine.get_longname());
}
}
- return 0;
+ return Posix.EXIT_SUCCESS;
}
int get_set_engine(string[] argv) {
if (engine == null) {
var desc = bus.get_global_engine();
- if (desc == null)
- return -1;
+ if (desc == null) {
+ stderr.printf(_("No engine is set.\n"));
+ return Posix.EXIT_FAILURE;
+ }
print("%s\n", desc.get_name());
- return 0;
+ return Posix.EXIT_SUCCESS;
}
- if(!bus.set_global_engine(engine))
- return -1;
+ if(!bus.set_global_engine(engine)) {
+ stderr.printf(_("Set global engine failed.\n"));
+ return Posix.EXIT_FAILURE;
+ }
var desc = bus.get_global_engine();
- if (desc == null)
- return -1;
+ if (desc == null) {
+ stderr.printf(_("Get global engine failed.\n"));
+ return Posix.EXIT_FAILURE;
+ }
+
string cmdline = "setxkbmap %s".printf(desc.get_layout());
try {
if (!GLib.Process.spawn_command_line_sync(cmdline)) {
- warning("Switch xkb layout to %s failed.",
- desc.get_layout());
+ stderr.printf(_("Switch xkb layout to %s failed."),
+ desc.get_layout());
+ return Posix.EXIT_FAILURE;
}
} catch (GLib.SpawnError e) {
- warning("execute setxkblayout failed");
+ stderr.printf("Execute setxkbmap failed: %s", e.message);
+ return Posix.EXIT_FAILURE;
}
- return 0;
+ return Posix.EXIT_SUCCESS;
}
int message_watch(string[] argv) {
- return 0;
+ return Posix.EXIT_SUCCESS;
}
int restart_daemon(string[] argv) {
var bus = get_bus();
+ if (bus == null) {
+ stderr.printf(_("Can't connect to IBus.\n"));
+ return Posix.EXIT_FAILURE;
+ }
bus.exit(true);
- return 0;
+ return Posix.EXIT_SUCCESS;
}
int exit_daemon(string[] argv) {
var bus = get_bus();
+ if (bus == null) {
+ stderr.printf(_("Can't connect to IBus.\n"));
+ return Posix.EXIT_FAILURE;
+ }
bus.exit(false);
- return 0;
+ return Posix.EXIT_SUCCESS;
+}
+
+int print_version(string[] argv) {
+ print("IBus %s\n", Config.PACKAGE_VERSION);
+ return Posix.EXIT_SUCCESS;
}
-int print_version (string[] argv) {
- print("IBus %s\n", IBUS_VERSION);
- return 0;
+int print_help(string[] argv) {
+ print_usage(stdout);
+ return Posix.EXIT_SUCCESS;
}
delegate int EntryFunc(string[] argv);
EntryFunc entry;
}
+static const CommandEntry commands[] = {
+ { "engine", get_set_engine },
+ { "exit", exit_daemon },
+ { "list-engine", list_engine },
+ { "watch", message_watch },
+ { "restart", restart_daemon },
+ { "version", print_version },
+ { "help", print_help }
+};
+
+static string program_name;
+
+void print_usage(FileStream stream) {
+ stream.printf(_("Usage: %s COMMAND [OPTION...]\n\n"), program_name);
+ stream.printf(_("Commands:\n"));
+ foreach (var command in commands) {
+ stream.printf(" %s\n", command.name);
+ }
+}
+
public int main(string[] argv) {
- const CommandEntry commands[] = {
- { "engine", get_set_engine },
- { "exit", exit_daemon },
- { "list-engine", list_engine },
- { "watch", message_watch },
- { "restart", restart_daemon },
- { "version", print_version }
- };
+ GLib.Intl.bindtextdomain (Config.GETTEXT_PACKAGE, Config.GLIB_LOCALE_DIR);
+ GLib.Intl.bind_textdomain_codeset (Config.GETTEXT_PACKAGE, "UTF-8");
- if (argv.length >= 2) {
- if (argv[1] == "--help" || argv[1] == "help") {
- foreach (var command in commands) {
- print (" %s\n", command.name);
- }
- return 0;
- }
- string[] new_argv = argv[1:argv.length];
- foreach (var command in commands) {
- if (command.name == argv[1])
- return command.entry(new_argv);
- }
- warning("%s is unknown command!", argv[1]);
+ program_name = Path.get_basename(argv[0]);
+ if (argv.length < 2) {
+ print_usage(stderr);
+ return Posix.EXIT_FAILURE;
}
- return -1;
-}
+ string[] new_argv = argv[1:argv.length];
+ foreach (var command in commands) {
+ if (command.name == argv[1])
+ return command.entry(new_argv);
+ }
+ stderr.printf(_("%s is unknown command!\n"), argv[1]);
+ print_usage(stderr);
+ return Posix.EXIT_FAILURE;
+}
* Boston, MA 02111-1307 USA
*/
-using IBus;
-using GLib;
-using Gtk;
-using Posix;
-
-public extern const string IBUS_VERSION;
-public extern const string BINDIR;
-
class Panel : IBus.PanelService {
private IBus.Bus m_bus;
private IBus.Config m_config;
engine.get_layout());
}
} catch (GLib.SpawnError e) {
- warning("execute setxkblayout failed");
+ warning("Execute setxkbmap failed: %s", e.message);
}
}
m_setup_pid = 0;
}
- string binary = GLib.Path.build_filename(BINDIR, "ibus-setup");
+ string binary = GLib.Path.build_filename(Config.BINDIR, "ibus-setup");
try {
GLib.Process.spawn_async(null,
{binary, "ibus-setup"},
if (m_about_dialog == null) {
m_about_dialog = new Gtk.AboutDialog();
m_about_dialog.set_program_name("IBus");
- m_about_dialog.set_version(IBUS_VERSION);
+ m_about_dialog.set_version(Config.PACKAGE_VERSION);
string copyright = _(
"Copyright (c) 2007-2012 Peng Huang\n" +
item.activate.connect((i) => show_about_dialog());
m_sys_menu.append(item);
- m_sys_menu.append(new SeparatorMenuItem());
+ m_sys_menu.append(new Gtk.SeparatorMenuItem());
item = new Gtk.ImageMenuItem.from_stock(Gtk.Stock.REFRESH, null);
item.set_label(_("Restart"));
// Show properties and IME switching menu
m_property_manager.create_menu_items(m_ime_menu);
- m_ime_menu.append(new SeparatorMenuItem());
+ m_ime_menu.append(new Gtk.SeparatorMenuItem());
int width, height;
Gtk.icon_size_lookup(Gtk.IconSize.MENU, out width, out height);