aboutsummaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2011-02-10 15:28:13 -0600
committerTed Gould <ted@gould.cx>2011-02-10 15:28:13 -0600
commit2c23d4b9534eacfae055b67c15fe3a254a2928fd (patch)
treebc5f4358efb541193e7e53033b5ad34179696322 /example
parent18d89929cb035b798916e10a6aa253fd5bcf4e7d (diff)
parente5b56ecf9a05381c8ba725f53f064c2c8569ea8f (diff)
downloadlibayatana-appindicator-2c23d4b9534eacfae055b67c15fe3a254a2928fd.tar.gz
libayatana-appindicator-2c23d4b9534eacfae055b67c15fe3a254a2928fd.tar.bz2
libayatana-appindicator-2c23d4b9534eacfae055b67c15fe3a254a2928fd.zip
Import upstream version 0.2.94
Diffstat (limited to 'example')
-rw-r--r--example/Makefile.am6
-rw-r--r--example/Makefile.in4
-rw-r--r--example/simple-client-vala.vala170
3 files changed, 176 insertions, 4 deletions
diff --git a/example/Makefile.am b/example/Makefile.am
index 606317c..dbea724 100644
--- a/example/Makefile.am
+++ b/example/Makefile.am
@@ -5,6 +5,7 @@ VER=
endif
CLEANFILES =
+EXTRA_DIST =
check_PROGRAMS = \
simple-client \
@@ -27,7 +28,7 @@ simple_client_LDADD = \
$(LIBRARY_LIBS) \
$(top_builddir)/src/libappindicator$(VER).la
-EXTRA_DIST = \
+EXTRA_DIST += \
simple-client-test-icon.png
#########################################
@@ -54,3 +55,6 @@ simple_client_vala_LDADD = $(simple_client_LDADD)
CLEANFILES += *.stamp *-vala.c
endif
+
+EXTRA_DIST += \
+ simple-client-vala.vala
diff --git a/example/Makefile.in b/example/Makefile.in
index c848ea3..7b73757 100644
--- a/example/Makefile.in
+++ b/example/Makefile.in
@@ -271,6 +271,7 @@ top_srcdir = @top_srcdir@
@USE_GTK3_FALSE@VER =
@USE_GTK3_TRUE@VER = 3
CLEANFILES = $(am__append_1)
+EXTRA_DIST = simple-client-test-icon.png simple-client-vala.vala
#########################################
#########################################
@@ -287,9 +288,6 @@ simple_client_LDADD = \
$(LIBRARY_LIBS) \
$(top_builddir)/src/libappindicator$(VER).la
-EXTRA_DIST = \
- simple-client-test-icon.png
-
#########################################
#########################################
diff --git a/example/simple-client-vala.vala b/example/simple-client-vala.vala
new file mode 100644
index 0000000..61e0c2f
--- /dev/null
+++ b/example/simple-client-vala.vala
@@ -0,0 +1,170 @@
+/*
+A small piece of sample code demonstrating a very simple application
+with an indicator.
+
+Copyright 2011 Canonical Ltd.
+
+Authors:
+ Marco Trevisan <mail@3v1n0.net>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 3, as published
+by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+using Gtk;
+using AppIndicator;
+
+static int main(string[] args) {
+ var sc = new SimpleClient(args);
+ sc.run();
+ return 0;
+}
+
+class SimpleClient {
+ Menu menu;
+ Indicator ci;
+ int percentage;
+ bool active;
+ bool can_haz_label;
+
+ public SimpleClient(string[] args) {
+ Gtk.init(ref args);
+
+ ci = new Indicator("example-simple-client",
+ "indicator-messages",
+ IndicatorCategory.APPLICATION_STATUS);
+
+ ci.set_status(IndicatorStatus.ACTIVE);
+ ci.set_attention_icon("indicator-messages-new");
+ ci.set_label("1%", "100%");
+
+ active = true;
+ can_haz_label = true;
+ }
+
+ private void toggle_sensitivity(Widget widget) {
+ widget.set_sensitive(!widget.is_sensitive());
+ }
+
+ private void append_submenu(MenuItem item) {
+ var menu = new Menu();
+ MenuItem mi;
+
+ mi = new MenuItem.with_label("Sub 1");
+ menu.append(mi);
+ mi.activate.connect(() => { print("Sub1\n"); });
+
+ MenuItem prev_mi = mi;
+ mi = new MenuItem.with_label("Sub 2");
+ menu.append(mi);
+ mi.activate.connect(() => { toggle_sensitivity(prev_mi); });
+
+ mi = new MenuItem.with_label("Sub 3");
+ menu.append(mi);
+ mi.activate.connect(() => { print("Sub3\n"); });
+
+ menu.show_all();
+ item.set_submenu(menu);
+ }
+
+ private void label_toggle(MenuItem item) {
+ can_haz_label = !can_haz_label;
+
+ if (can_haz_label) {
+ item.set_label("Hide label");
+ } else {
+ item.set_label("Show label");
+ }
+ }
+
+ public void run() {
+
+ ci.scroll_event.connect((delta, direction) => {
+ print(@"Got scroll event! delta: $delta, direction: $direction\n");
+ });
+
+ Timeout.add_seconds(1, () => {
+ percentage = (percentage + 1) % 100;
+ if (can_haz_label) {
+ ci.set_label(@"$(percentage+1)%", "");
+ } else {
+ ci.set_label("", "");
+ }
+ return true;
+ });
+
+ menu = new Menu();
+ var chk = new CheckMenuItem.with_label("1");
+ chk.activate.connect(() => { print("1\n"); });
+ menu.append(chk);
+ chk.show();
+
+ var radio = new RadioMenuItem.with_label(new SList<RadioMenuItem>(), "2");
+ radio.activate.connect(() => { print("2\n"); });
+ menu.append(radio);
+ radio.show();
+
+ var submenu = new MenuItem.with_label("3");
+ menu.append(submenu);
+ append_submenu(submenu);
+ submenu.show();
+
+ var toggle_item = new MenuItem.with_label("Toggle 3");
+ toggle_item.activate.connect(() => { toggle_sensitivity(submenu); });
+ menu.append(toggle_item);
+ toggle_item.show();
+
+ var imgitem = new ImageMenuItem.from_stock(Stock.NEW, null);
+ imgitem.activate.connect(() => {
+ Image img = (Image) imgitem.get_image();
+ img.set_from_stock(Stock.OPEN, IconSize.MENU);
+ });
+ menu.append(imgitem);
+ imgitem.show();
+
+ var att = new MenuItem.with_label("Get Attention");
+ att.activate.connect(() => {
+ if (active) {
+ ci.set_status(IndicatorStatus.ATTENTION);
+ att.set_label("I'm okay now");
+ active = false;
+ } else {
+ ci.set_status(IndicatorStatus.ACTIVE);
+ att.set_label("Get Attention");
+ active = false;
+ }
+ });
+ menu.append(att);
+ att.show();
+
+ var show = new MenuItem.with_label("Show Label");
+ label_toggle(show);
+ show.activate.connect(() => { label_toggle(show); });
+ menu.append(show);
+ show.show();
+
+ var icon = new CheckMenuItem.with_label("Set Local Icon");
+ icon.activate.connect(() => {
+ if (icon.get_active()) {
+ ci.set_icon("simple-client-test-icon.png");
+ } else {
+ ci.set_icon("indicator-messages");
+ }
+ });
+ menu.append(icon);
+ icon.show();
+
+ ci.set_menu(menu);
+
+ Gtk.main();
+ }
+}