diff options
| -rw-r--r-- | configure.ac | 202 | ||||
| -rw-r--r-- | src/Makefile.am | 13 | ||||
| -rw-r--r-- | src/applet-main.c | 77 | 
3 files changed, 256 insertions, 36 deletions
| diff --git a/configure.ac b/configure.ac index 918cef4..da97d3a 100644 --- a/configure.ac +++ b/configure.ac @@ -26,8 +26,12 @@ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])  GTK_REQUIRED_VERSION=3.14.0  PANEL_REQUIRED_VERSION=1.17.0 -INDICATOR_REQUIRED_VERSION=0.3.90 -INDICATOR_NG_VERSION=12.10.2 + +UBUNTU_INDICATOR_REQUIRED_VERSION=0.3.90 +UBUNTU_INDICATOR_NG_VERSION=12.10.2 + +AYATANA_INDICATOR_REQUIRED_VERSION=0.6.0 +AYATANA_INDICATOR_NG_VERSION=0.6.0  PKG_CHECK_MODULES(APPLET, gtk+-3.0 >= $GTK_REQUIRED_VERSION                            x11 @@ -37,20 +41,148 @@ PKG_CHECK_MODULES(APPLET, gtk+-3.0 >= $GTK_REQUIRED_VERSION  AC_SUBST(APPLET_CFLAGS)  AC_SUBST(APPLET_LIBS) -PKG_CHECK_EXISTS(indicator3-0.4 >= $INDICATOR_NG_VERSION, -                 [have_indicator_ng="yes"], -                 [have_indicator_ng="no"]) +# Which Indicator implementation shall we use? + +AC_ARG_WITH([ayatana-indicators], +             [AS_HELP_STRING([--with-ayatana-indicators], +                             [build against Ayatana Indicators])], +             [with_ayatana_indicators='yes'], +             [with_ayatana_indicators='no'] +) + +AC_ARG_WITH([ubuntu-indicators], +             [AS_HELP_STRING([--with-ubuntu-indicators], +             [build against Ubuntu Indicators])], +             [with_ubuntu_indicators='yes'], +             [with_ubuntu_indicators='no'] +) + +### +### Look for Ayatana Indicators +### + +PKG_CHECK_EXISTS(ayatana-indicator3-0.4, +                 [have_ayatanaindicator="yes"], +                 [have_ayatanaindicator="no"]) + +PKG_CHECK_EXISTS(ayatana-indicator3-0.4 >= $AYATANA_INDICATOR_NG_VERSION, +                 [have_ayatanaindicator_ng="yes"], +                 [have_ayatanaindicator_ng="no"]) + +### +### Look for Ubuntu Indicators +### + +PKG_CHECK_EXISTS(indicator3-0.4, +                 [have_ubuntuindicator="yes"], +                 [have_ubuntuindicator="no"]) + +PKG_CHECK_EXISTS(indicator3-0.4 >= $UBUNTU_INDICATOR_NG_VERSION, +                 [have_ubuntuindicator_ng="yes"], +                 [have_ubuntuindicator_ng="no"]) + +### decide on what Indicators implementation to use... + +if   test "x$have_ayatanaindicator" == "xyes" && +     test "x$have_ubuntuindicator" != "xyes" && +     test "x$with_ubuntu_indicators" != "xyes"; then + +    # use Ayatana Indicators (because they are present, and noone is enforcing Ubuntu Indicators) +    use_ayatanaindicator="yes"; +    indicator_enforced="no"; + +elif test "x$have_ubuntuindicator" == "xyes" && +     test "x$have_ayatanaindicator" != "xyes" && +     test "x$with_ayatana_indicators" != "xyes"; then + +    # use Ubuntu Indicators (because they are present, and noone is enforcing Ayatana Indicators) +    use_ubuntuindicator="yes"; +    indicator_enforced="no"; + +elif test "x$have_ubuntuindicator" == "xyes" && +     test "x$have_ayatanaindicator" == "xyes" && +     test "x$with_ayatana_indicators" == "xyes"; then + +    # both Indicator implementations are present, and we are asked to use Ayatana Indicators +    use_ayatanaindicator=yes; +    indicator_enforced=yes; + +elif test "x$have_ubuntuindicator" == "xyes" && +     test "x$have_ayatanaindicator" == "xyes" && +     test "x$with_ubuntu_indicators" == "xyes"; then + +    # both Indicator implementations are present, and we are asked to use Ubuntu Indicators +    use_ubuntuindicator=yes; +    indicator_enforced=yes; + +elif test "x$have_ubuntuindicator" == "xyes" && +     test "x$have_ayatanaindicator" != "xyes" && +     test "x$with_ayatana_indicators" == "xyes"; then + +    AC_MSG_ERROR([Ubuntu Indicators are present, but you want to build mate-indicator-applet against Ayatana Indicators. This does not match.]) + +elif test "x$have_ubuntuindicator" != "xyes" && +     test "x$have_ayatanaindicator" == "xyes" && +     test "x$with_ubuntu_indicators" == "xyes"; then + +    AC_MSG_ERROR([Ayatana Indicators are present, but you want to build mate-indicator-applet against Ubuntu Indicators. This does not match.]) -if test "x$have_indicator_ng" = "xyes"; then -    PKG_CHECK_MODULES(INDICATOR, indicator3-0.4 >= $INDICATOR_NG_VERSION -                      libido3-0.1 >= 13.10, -                      [AC_DEFINE(HAVE_INDICATOR_NG, 1, "New style indicators support")])  else -    PKG_CHECK_MODULES(INDICATOR, indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION) + +    AC_MSG_ERROR([Either Ayatana Indicators or Ubuntu Indicators are required to build mate-indicator-applet.]) +  fi -AC_SUBST(INDICATOR_CFLAGS) -AC_SUBST(INDICATOR_LIBS) +### prepare Ayatana or Ubuntu Indicators implementation for the build, regarding to the decision reached above... + +if   test "x$use_ayatanaindicator" == "xyes"; then + +    AM_CONDITIONAL(WITH_AYATANA_INDICATOR, true) +    AM_CONDITIONAL(WITH_UBUNTU_INDICATOR, false) +    AC_DEFINE(HAVE_AYATANA_INDICATOR, 1, "Ayatana Indicators Support") + +    if test "x$indicator_enforced" == "xyes"; then +        AC_MSG_NOTICE([Using Ayatana Indicators for this build (as requested via configure option).]) +    else +        AC_MSG_NOTICE([Using Ayatana Indicators for this build.]) +    fi + +    if test "x$have_ayatanaindicator_ng" = "xyes"; then +        PKG_CHECK_MODULES(AYATANA_INDICATOR_NG, ayatana-indicator3-0.4 >= $AYATANA_INDICATOR_NG_VERSION +                          libayatana-ido3-0.4 >= 0.4.0, +                          [AC_DEFINE(HAVE_AYATANA_INDICATOR_NG, 1, "New style indicators support")]) +    elif test "x$have_ayatanaindicator" = "xyes"; then +        PKG_CHECK_MODULES(AYATANA_INDICATOR, ayatana-indicator3-0.4 >= $AYATANA_INDICATOR_REQUIRED_VERSION) +    fi + +    AC_SUBST(AYATANA_INDICATOR_CFLAGS) +    AC_SUBST(AYATANA_INDICATOR_LIBS) + +elif test "x$use_ubuntuindicator" == "xyes"; then + +    # both Indicator implementations are present, and we are asked to use Ubuntu Indicators +    AM_CONDITIONAL(WITH_UBUNTU_INDICATOR, true) +    AM_CONDITIONAL(WITH_AYATANA_INDICATOR, false) +    AC_DEFINE(HAVE_UBUNTU_INDICATOR, 1, "Ubuntu Indicators Support") + +    if test "x$indicator_enforced" == "xyes"; then +        AC_MSG_NOTICE([Using Ubuntu Indicators for this build (as requested via configure option).]) +    else +        AC_MSG_NOTICE([Using Ubuntu Indicators for this build.]) +    fi + +    if test "x$have_ubuntuindicator_ng" = "xyes"; then +        PKG_CHECK_MODULES(UBUNTU_INDICATOR_NG, indicator3-0.4 >= $UBUNTU_INDICATOR_NG_VERSION +                          libido3-0.1 >= 13.10, +                          [AC_DEFINE(HAVE_UBUNTU_INDICATOR_NG, 1, "New style indicators support")]) +    elif test "x$have_ubuntuindicator" = "xyes"; then +        PKG_CHECK_MODULES(UBUNTU_INDICATOR, indicator3-0.4 >= $UBUNTU_INDICATOR_REQUIRED_VERSION) +    fi + +    AC_SUBST(UBUNTU_INDICATOR_CFLAGS) +    AC_SUBST(UBUNTU_INDICATOR_LIBS) + +fi  ###########################  # Check to see if we're local @@ -63,12 +195,24 @@ AC_ARG_ENABLE(localinstall, AS_HELP_STRING([--enable-localinstall], [install all  # Indicator Info  ########################### -if test "x$with_localinstall" = "xyes"; then -	INDICATORDIR="${libdir}/indicators/2/" -	INDICATORICONSDIR="${datadir}/indicator-applet/icons/" -else -	INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator3-0.4` -	INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir indicator3-0.4` +if test "x$use_ubuntuindicator" = "xyes"; then +	if test "x$with_localinstall" = "xyes"; then +		INDICATORDIR="${libdir}/indicators3/7/" +		INDICATORICONSDIR="${datadir}/indicator-applet/icons/" +	else +		INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator3-0.4` +		INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir indicator3-0.4` +	fi +fi + +if test "x$use_ayatanaindicator" = "xyes"; then +	if test "x$with_localinstall" = "xyes"; then +		INDICATORDIR="${libdir}/ayatana-indicators3/7/" +		INDICATORICONSDIR="${datadir}/ayatana-indicator-applet/icons/" +	else +		INDICATORDIR=`$PKG_CONFIG --variable=indicatordir ayatana-indicator3-0.4` +		INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir ayatana-indicator3-0.4` +	fi  fi  AC_SUBST(INDICATORDIR) @@ -147,10 +291,28 @@ po/Makefile.in  # Results  ########################### +if (test "x$use_ayatanaindicator" == "xyes" && +    test "x$have_ayatanaindicator_ng" == "xyes") || +   (test "x$use_ubuntuindicator" == "xyes" && +    test "x$have_ubuntuindicator_ng" == "xyes"); then +    have_indicator_ng="yes" +else +    have_indicator_ng="no" +fi + +if test "x$use_ayatanaindicator" == "xyes"; then +    indicator_implementation="Ayatana Indicators" +elif test "x$use_ubuntuindicator" == "xyes"; then +    indicator_implementation="Ubuntu Indicators" +fi +  AC_MSG_NOTICE([  Indicator Applet Configuration: -	Prefix:                 $prefix -	Indicator-ng support:   $have_indicator_ng +	Prefix:                         $prefix +	Indicator implementation:       $indicator_implementation +	Indicator NG support:           $have_indicator_ng +	Indicator Directory:            $INDICATORDIR +	Indicator Icons Directory:      $INDICATORICONSDIR  ]) diff --git a/src/Makefile.am b/src/Makefile.am index 63458e0..e60f286 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,3 +1,16 @@ +if WITH_AYATANA_INDICATOR +INDICATOR_CFLAGS = $(AYATANA_INDICATOR_CFLAGS)		\ +                   $(AYATANA_INDICATOR_NG_CFLAGS) +INDICATOR_LIBS   = $(AYATANA_INDICATOR_LIBS)		\ +                   $(AYATANA_INDICATOR_NG_LIBS) +endif + +if WITH_UBUNTU_INDICATOR +INDICATOR_CFLAGS = $(UBUNTU_INDICATOR_CFLAGS)		\ +                   $(UBUNTU_INDICATOR_NG_CFLAGS) +INDICATOR_LIBS   = $(UBUNTU_INDICATOR_LIBS)		\ +                   $(UBUNTU_INDICATOR_NG_LIBS) +endif  libexec_PROGRAMS = \  	mate-indicator-applet \ diff --git a/src/applet-main.c b/src/applet-main.c index 459be2a..327becd 100644 --- a/src/applet-main.c +++ b/src/applet-main.c @@ -28,22 +28,69 @@ with this program.  If not, see <http://www.gnu.org/licenses/>.  #include <gdk/gdkkeysyms.h>  #include <gtk/gtk.h> +#if HAVE_UBUNTU_INDICATOR + +#define INDICATOR_SERVICE_APPMENU	"libappmenu.so" +#define INDICATOR_SERVICE_ME		"libme.so" +#define INDICATOR_SERVICE_DATETIME	"libdatetime.so" + +#define INDICATOR_SERVICE_APPMENU_NG	"com.canonical.indicator.appmenu" +#define INDICATOR_SERVICE_ME_NG		"com.canonical.indicator.me" +#define INDICATOR_SERVICE_DATETIME_NG	"com.canonical.indicator.datetime" +  #include <libindicator/indicator-object.h> +#endif + +#if HAVE_AYATANA_INDICATOR + +#define INDICATOR_SERVICE_APPMENU	"libayatana-appmenu.so" +#define INDICATOR_SERVICE_ME		"libayatana-me.so" +#define INDICATOR_SERVICE_DATETIME	"libayatana-datetime.so" + +#define INDICATOR_SERVICE_APPMENU_NG	"org.ayatana.indicator.appmenu" +#define INDICATOR_SERVICE_ME_NG		"org.ayatana.indicator.me" +#define INDICATOR_SERVICE_DATETIME_NG	"org.ayatana.indicator.datetime" + +#include <libayatana-indicator/indicator-object.h> +#endif  /* For new style indicators */ -#if HAVE_INDICATOR_NG + +#if HAVE_UBUNTU_INDICATOR && HAVE_UBUNTU_INDICATOR_NG +  #include <libido/libido.h>  #include <libindicator/indicator-ng.h> + +#define INDICATOR_SERVICE_DIR "/usr/share/unity/indicators" + +#endif + +#if HAVE_AYATANA_INDICATOR && HAVE_AYATANA_INDICATOR_NG + +#include <libayatana-ido/libayatana-ido.h> +#include <libayatana-indicator/indicator-ng.h> + +#define INDICATOR_SERVICE_DIR "/usr/share/ayatana/indicators" +  #endif  #include "tomboykeybinder.h"  static gchar * indicator_order[] = { +#if HAVE_UBUNTU_INDICATOR  	"libapplication.so",  	"libmessaging.so",  	"libsoundmenu.so",  	"libdatetime.so",  	"libsession.so", +#endif +#if HAVE_AYATANA_INDICATOR +	"libayatana-application.so", +	"libayatana-messaging.so", +	"libayatana-soundmenu.so", +	"libayatana-datetime.so", +	"libayatana-session.so", +#endif  	NULL  }; @@ -511,7 +558,7 @@ load_indicator (GtkWidget * menubar, IndicatorObject *io, const gchar *name)  	indicator_object_set_environment(io, (const GStrv)indicator_env);  	/* Attach the 'name' to the object */ -#if HAVE_INDICATOR_NG +#if HAVE_AYATANA_INDICATOR_NG || HAVE_UBUNTU_INDICATOR_NG  	int pos = 5000 - indicator_object_get_position(io);  	if (pos > 5000) {  		pos = name2order(name); @@ -573,19 +620,19 @@ load_modules (GtkWidget *menubar, gint *indicators_loaded)  		gint count = 0;  		while ((name = g_dir_read_name(dir)) != NULL) {  #ifdef INDICATOR_APPLET_APPMENU -			if (g_strcmp0(name, "libappmenu.so")) { +			if (g_strcmp0(name, INDICATOR_SERVICE_APPMENU)) {  				continue;  			}  #else -			if (!g_strcmp0(name, "libappmenu.so")) { +			if (!g_strcmp0(name, INDICATOR_SERVICE_APPMENU)) {  				continue;  			}  #endif  #ifdef INDICATOR_APPLET -			if (!g_strcmp0(name, "libme.so")) { +			if (!g_strcmp0(name, INDICATOR_SERVICE_ME)) {  				continue;  			} -			if (!g_strcmp0(name, "libdatetime.so")) { +			if (!g_strcmp0(name, INDICATOR_SERVICE_DATETIME)) {  				continue;  			}  #endif @@ -600,9 +647,7 @@ load_modules (GtkWidget *menubar, gint *indicators_loaded)  	}  } -#if HAVE_INDICATOR_NG - -#define INDICATOR_SERVICE_DIR "/usr/share/unity/indicators" +#if HAVE_AYATANA_INDICATOR_NG || HAVE_UBUNTU_INDICATOR_NG  static void  load_indicators_from_indicator_files (GtkWidget *menubar, gint *indicators_loaded) @@ -630,19 +675,19 @@ load_indicators_from_indicator_files (GtkWidget *menubar, gint *indicators_loade  		g_free (filename);  #ifdef INDICATOR_APPLET_APPMENU -		if (g_strcmp0(name, "com.canonical.indicator.appmenu")) { +		if (g_strcmp0(name, INDICATOR_SERVICE_APPMENU_NG)) {  			continue;  		}  #else -		if (!g_strcmp0(name, "com.canonical.indicator.appmenu")) { +		if (!g_strcmp0(name, INDICATOR_SERVICE_APPMENU_NG)) {  			continue;  		}  #endif  #ifdef INDICATOR_APPLET -		if (!g_strcmp0(name, "com.canonical.indicator.me")) { +		if (!g_strcmp0(name, INDICATOR_SERVICE_ME_NG)) {  			continue;  		} -		if (!g_strcmp0(name, "com.canonical.indicator.datetime")) { +		if (!g_strcmp0(name, INDICATOR_SERVICE_DATETIME_NG)) {  			continue;  		}  #endif @@ -660,7 +705,7 @@ load_indicators_from_indicator_files (GtkWidget *menubar, gint *indicators_loade  	g_dir_close (dir);  } -#endif  /* HAVE_INDICATOR_NG */ +#endif  /* HAVE_AYATANA_INDICATOR_NG || HAVE_UBUNTU_INDICATOR_NG */  static void  hotkey_filter (char * keystring G_GNUC_UNUSED, gpointer data) @@ -885,7 +930,7 @@ static gboolean  applet_fill_cb (MatePanelApplet * applet, const gchar * iid G_GNUC_UNUSED,                  gpointer data G_GNUC_UNUSED)  { -#if HAVE_INDICATOR_NG +#if HAVE_AYATANA_INDICATOR_NG || HAVE_UBUNTU_INDICATOR_NG  	ido_init();  #endif @@ -966,7 +1011,7 @@ applet_fill_cb (MatePanelApplet * applet, const gchar * iid G_GNUC_UNUSED,  	tomboy_keybinder_bind(hotkey_keycode, hotkey_filter, menubar);  	load_modules(menubar, &indicators_loaded); -#if HAVE_INDICATOR_NG +#if HAVE_AYATANA_INDICATOR_NG || HAVE_UBUNTU_INDICATOR_NG  	load_indicators_from_indicator_files(menubar, &indicators_loaded);  #endif | 
