int main (int argc, char **argv) { IndicatorTestService indicator = { 0 }; GMenuItem *item; GMenu *submenu; GActionEntry entries[] = { { "_header", NULL, NULL, "{'label': <'Test'>," " 'icon': <'indicator-test'>," " 'accessible-desc': <'Test indicator'> }", NULL }, { "show", activate_show, NULL, NULL, NULL } }; GMainLoop *loop; indicator.actions = g_simple_action_group_new (); g_simple_action_group_add_entries (indicator.actions, entries, G_N_ELEMENTS (entries), NULL); submenu = g_menu_new (); g_menu_append (submenu, "Show", "indicator.show"); item = g_menu_item_new (NULL, "indicator._header"); g_menu_item_set_attribute (item, "x-canonical-type", "s", "com.canonical.indicator.root"); g_menu_item_set_submenu (item, G_MENU_MODEL (submenu)); indicator.menu = g_menu_new (); g_menu_append_item (indicator.menu, item); g_bus_own_name (G_BUS_TYPE_SESSION, "com.canonical.indicator.test", G_BUS_NAME_OWNER_FLAGS_NONE, bus_acquired, NULL, name_lost, &indicator, NULL); loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (loop); g_object_unref (submenu); g_object_unref (item); g_object_unref (indicator.actions); g_object_unref (indicator.menu); g_object_unref (loop); return 0; }
int main (int argc, char **argv) { IndicatorTestService indicator = { 0 }; indicator.action_delay = -1; indicator.change_interval = -1; GMenuItem *item; GMenu *submenu; GActionEntry entries[] = { { "_header", NULL, NULL, "{'title': <'Test'>," " 'label': <'Test'>," " 'visible': <true>," " 'accessible-desc': <'Test indicator'> }", NULL }, { "action.show", activate_show, NULL, NULL, NULL }, { "action.switch", activate_switch, NULL, "true", NULL }, { "action.checkbox", activate_switch, NULL, "true", NULL }, { "action.accessPoint", activate_switch, NULL, "false", NULL }, { "action.slider", NULL, NULL, "0.5", change_slider } }; GMainLoop *loop; int help = 0; if (argc > 1) { int i; for (i = 1; i < argc; i++) { const char *arg = argv[i]; if (arg[0] == '-') { switch (arg[1]) { case 't': { arg += 2; if (!arg[0] && i < argc-1) { i++; int delay = -1; if (sscanf(argv[i], "%d", &delay) == 1) { indicator.action_delay = delay; } else { printf("Invalid action delay value: %s\n", argv[i]); help = 1; } } else { printf("Invalid action delay value: %s\n", argv[i]); help = 1; } break; } case 'c': { arg += 2; if (!arg[0] && i < argc-1) { i++; int interval = -1; if (sscanf(argv[i], "%d", &interval) == 1) { indicator.change_interval = interval; } else { printf("Invalid change interval value: %s\n", argv[i]); help = 1; } } else { printf("Invalid change interval value: %s\n", argv[i]); help = 1; } break; } case 'h': help = 1; break; } } } } if (help) { printf("Usage: %s [<options>]\n" " -t DELAY Action activation delay\n" " -c CHANGE_INTERVAL Interval to change action values\n" " -h Show this help text\n" , argv[0]); return 0; } indicator.actions = g_simple_action_group_new (); g_action_map_add_action_entries (G_ACTION_MAP (indicator.actions), entries, G_N_ELEMENTS (entries), &indicator); submenu = g_menu_new (); g_menu_append (submenu, "Show", "indicator.action.show"); // Switch item = g_menu_item_new("Switch", "indicator.action.switch"); g_menu_item_set_attribute (item, "x-canonical-type", "s", "com.canonical.indicator.switch"); g_menu_append_item(submenu, item); // Checkbox item = g_menu_item_new("Checkbox", "indicator.action.checkbox"); g_menu_append_item(submenu, item); // Slider item = g_menu_item_new("Slider", "indicator.action.slider"); g_menu_item_set_attribute (item, "x-canonical-type", "s", "com.canonical.indicator.slider"); g_menu_append_item(submenu, item); // Access Point item = g_menu_item_new("Access Point", "indicator.action.accessPoint"); g_menu_item_set_attribute (item, "x-canonical-type", "s", "unity.widgets.systemsettings.tablet.accesspoint"); g_menu_append_item(submenu, item); item = g_menu_item_new (NULL, "indicator._header"); g_menu_item_set_attribute (item, "x-canonical-type", "s", "com.canonical.indicator.root"); g_menu_item_set_submenu (item, G_MENU_MODEL (submenu)); indicator.menu = g_menu_new (); g_menu_append_item (indicator.menu, item); g_bus_own_name (G_BUS_TYPE_SESSION, "com.canonical.indicator.mock", G_BUS_NAME_OWNER_FLAGS_NONE, bus_acquired, NULL, name_lost, &indicator, NULL); loop = g_main_loop_new (NULL, FALSE); if (indicator.change_interval != -1) { g_timeout_add(indicator.change_interval, change_interval, &indicator); } g_main_loop_run (loop); g_object_unref (submenu); g_object_unref (item); g_object_unref (indicator.actions); g_object_unref (indicator.menu); g_object_unref (loop); return 1; }