From cec260cdd5717347f92c6f562ea1e789308e98b3 Mon Sep 17 00:00:00 2001 From: Michael Jennings Date: Sun, 11 Feb 2007 15:28:53 +0000 Subject: [PATCH] Sun Feb 11 04:28:49 2007 Michael Jennings (mej) devilhorns' new net module. ---------------------------------------------------------------------- SVN revision: 28305 --- AUTHORS | 3 +- Makefile.am | 85 ++-- VeraMono.ttf | Bin 49204 -> 0 bytes autogen.sh | 13 +- configure.in | 178 ++----- e_mod_config.c | 220 --------- e_mod_main.c | 585 ----------------------- e_mod_main.h | 38 -- fonts/Vera.ttf | Bin 0 -> 65881 bytes fonts/VeraBd.ttf | Bin 0 -> 58675 bytes images/bd.png | Bin 0 -> 228 bytes module_icon.png => images/device.png | Bin images/icon.xcf | Bin 0 -> 5443 bytes images/idle.png | Bin 0 -> 1220 bytes images/module_icon.png | Bin 0 -> 2852 bytes images/module_icon.xcf | Bin 0 -> 7448 bytes images/rx.png | Bin 0 -> 1116 bytes images/tx.png | Bin 0 -> 1109 bytes m4/ac_path_generic.m4 | 138 ++++++ module.edc | 28 ++ net.edc | 685 ++++++++++----------------- po/Makefile.am | 28 -- po/eo.po | 63 --- po/fi.po | 47 -- po/it.po | 59 --- po/ja.po | 64 --- po/sv.po | 64 --- rx_00.png | Bin 99 -> 0 bytes rx_01.png | Bin 375 -> 0 bytes rx_02.png | Bin 526 -> 0 bytes rx_03.png | Bin 651 -> 0 bytes rx_04.png | Bin 743 -> 0 bytes rx_05.png | Bin 862 -> 0 bytes rx_06.png | Bin 974 -> 0 bytes rx_07.png | Bin 1087 -> 0 bytes rx_08.png | Bin 1208 -> 0 bytes rx_09.png | Bin 1295 -> 0 bytes rx_10.png | Bin 1381 -> 0 bytes src/Makefile.am | 27 ++ src/e_mod_config.c | 56 +++ src/e_mod_config.h | 28 ++ src/e_mod_configure.c | 139 ++++++ src/e_mod_configure.h | 6 + src/e_mod_gadcon.c | 106 +++++ src/e_mod_gadcon.h | 13 + src/e_mod_main.c | 96 ++++ src/e_mod_main.h | 29 ++ src/e_mod_net.c | 245 ++++++++++ src/e_mod_net.h | 9 + tx_00.png | Bin 99 -> 0 bytes tx_01.png | Bin 533 -> 0 bytes tx_02.png | Bin 812 -> 0 bytes tx_03.png | Bin 1021 -> 0 bytes tx_04.png | Bin 1226 -> 0 bytes tx_05.png | Bin 1452 -> 0 bytes tx_06.png | Bin 1679 -> 0 bytes tx_07.png | Bin 1887 -> 0 bytes tx_08.png | Bin 2096 -> 0 bytes tx_09.png | Bin 2272 -> 0 bytes tx_10.png | Bin 2409 -> 0 bytes 60 files changed, 1237 insertions(+), 1815 deletions(-) delete mode 100644 VeraMono.ttf delete mode 100644 e_mod_config.c delete mode 100644 e_mod_main.c delete mode 100644 e_mod_main.h create mode 100644 fonts/Vera.ttf create mode 100644 fonts/VeraBd.ttf create mode 100644 images/bd.png rename module_icon.png => images/device.png (100%) create mode 100644 images/icon.xcf create mode 100644 images/idle.png create mode 100644 images/module_icon.png create mode 100644 images/module_icon.xcf create mode 100644 images/rx.png create mode 100644 images/tx.png create mode 100644 m4/ac_path_generic.m4 create mode 100644 module.edc delete mode 100644 po/Makefile.am delete mode 100644 po/eo.po delete mode 100644 po/fi.po delete mode 100644 po/it.po delete mode 100644 po/ja.po delete mode 100644 po/sv.po delete mode 100644 rx_00.png delete mode 100644 rx_01.png delete mode 100644 rx_02.png delete mode 100644 rx_03.png delete mode 100644 rx_04.png delete mode 100644 rx_05.png delete mode 100644 rx_06.png delete mode 100644 rx_07.png delete mode 100644 rx_08.png delete mode 100644 rx_09.png delete mode 100644 rx_10.png create mode 100644 src/Makefile.am create mode 100644 src/e_mod_config.c create mode 100644 src/e_mod_config.h create mode 100644 src/e_mod_configure.c create mode 100644 src/e_mod_configure.h create mode 100644 src/e_mod_gadcon.c create mode 100644 src/e_mod_gadcon.h create mode 100644 src/e_mod_main.c create mode 100644 src/e_mod_main.h create mode 100644 src/e_mod_net.c create mode 100644 src/e_mod_net.h delete mode 100644 tx_00.png delete mode 100644 tx_01.png delete mode 100644 tx_02.png delete mode 100644 tx_03.png delete mode 100644 tx_04.png delete mode 100644 tx_05.png delete mode 100644 tx_06.png delete mode 100644 tx_07.png delete mode 100644 tx_08.png delete mode 100644 tx_09.png delete mode 100644 tx_10.png diff --git a/AUTHORS b/AUTHORS index 8d4affa..8a45efb 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,2 +1 @@ -Originally by Matthew Mullins. -Recoded into seperate modules by Christopher 'devilhorns' Michael +Christopher 'devilhorns' Michael diff --git a/Makefile.am b/Makefile.am index fe488df..6ea139a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,67 +1,38 @@ -MAINTAINERCLEANFILES = Makefile.in e_modules-net.spec +ACLOCAL_AMFLAGS = -I m4 +MAINTAINERCLEANFILES = Makefile.in -SUBDIRS = po +SUBDIRS = src -EDJE_CC = @edje_cc@ EDJE_FLAGS = -v \ --id $(top_srcdir) \ --fd $(top_srcdir) +-id $(top_srcdir)/images \ +-fd $(top_srcdir)/fonts -# data files for the module filesdir = $(datadir) +files_DATA = module.desktop \ + module.edj \ + net.edj + +EXTRA_DIST = $(files_DATA) \ + module.desktop.in \ + module.edc \ + net.edc \ + fonts/Vera.ttf \ + fonts/VeraBd.ttf \ + images/module_icon.png \ + images/bd.png \ + images/device.png \ + images/rx.png \ + images/tx.png \ + images/idle.png -files_DATA = module_icon.png \ - module.desktop \ - module.edj \ - net.edj - -EXTRA_DIST=$(files_DATA) \ - e_modules-net.spec \ - net.edc \ - rx_00.png \ - rx_01.png \ - rx_02.png \ - rx_03.png \ - rx_04.png \ - rx_05.png \ - rx_06.png \ - rx_07.png \ - rx_08.png \ - rx_09.png \ - rx_10.png \ - tx_00.png \ - tx_01.png \ - tx_02.png \ - tx_03.png \ - tx_04.png \ - tx_05.png \ - tx_06.png \ - tx_07.png \ - tx_08.png \ - tx_09.png \ - tx_10.png \ - VeraMono.ttf - -# the module .so file -INCLUDES = -I. \ - -I$(top_srcdir) \ - -I$(includedir) \ - @e_cflags@ - -pkgdir = $(datadir)/$(MODULE_ARCH) -pkg_LTLIBRARIES = module.la -module_la_SOURCES = e_mod_main.c \ - e_mod_main.h \ - e_mod_config.c - -module_la_LIBADD = @e_libs@ -module_la_LDFLAGS = -module -avoid-version -module_la_DEPENDENCIES = $(top_builddir)/config.h $(top_builddir)/net.edj - -%.edj: %.edc +%.edj: %.edc $(EDJE_CC) $(EDJE_FLAGS) $< $@ + +module.edj: module.edc + $(EDJE_CC) $(EDJE_FLAGS) module.edc module.edj clean-local: - rm -rf net.edj *~ + rm -rf module.edj net.edj *~ + uninstall: - rm -rf $(datadir) + rm -rf $(datadir) diff --git a/VeraMono.ttf b/VeraMono.ttf deleted file mode 100644 index 236056c49e937c730a27f0aae898d56b657e8d6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49204 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 z 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 diff --git a/autogen.sh b/autogen.sh index 977a5e2..995ff2f 100755 --- a/autogen.sh +++ b/autogen.sh @@ -5,22 +5,11 @@ rm -f aclocal.m4 ltmain.sh touch README -echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS || exit 1 +echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1 echo "Running autoheader..." ; autoheader || exit 1 echo "Running autoconf..." ; autoconf || exit 1 echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1 echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1 -echo "Generating gettext net.pot template"; \ -xgettext \ ---output net.pot \ ---output-dir=po \ ---language=C \ ---add-location \ ---keyword=D_ \ ---sort-by-file \ ---copyright-holder="TODO" \ ---foreign-user \ -`find . -name "*.[ch]" -print` || exit 1 if [ -z "$NOCONFIGURE" ]; then ./configure "$@" diff --git a/configure.in b/configure.in index fd030e7..ef3db61 100644 --- a/configure.in +++ b/configure.in @@ -1,156 +1,76 @@ -dnl Process this file with autoconf to produce a configure script. - -# get rid of that stupid cache mechanism rm -f config.cache -AC_INIT(configure.in) +AC_PREREQ(2.59) +AC_INIT([net2], [0.0.1], [devilhorns@devilhorns.us]) +AC_CONFIG_HEADERS(config.h) +AC_CONFIG_MACRO_DIR([m4]) +AM_INIT_AUTOMAKE([1.9 foreign]) + AC_CANONICAL_BUILD AC_CANONICAL_HOST -AM_INIT_AUTOMAKE(net, 0.0.1) -AM_CONFIG_HEADER(config.h) -AC_ISC_POSIX AC_PROG_CC -AM_PROG_CC_STDC -AC_HEADER_STDC -AC_C_CONST -AM_ENABLE_SHARED AM_PROG_LIBTOOL - -ALL_LINGUAS="eo fi it sv ja" -AC_SUBST(ALL_LINGUAS) - -AM_GNU_GETTEXT([external]) -AM_GNU_GETTEXT_VERSION(0.14) +AC_HEADER_STDC MODULE_ARCH="$host_os-$host_cpu" AC_SUBST(MODULE_ARCH) AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture") -if test "x${bindir}" = 'x${exec_prefix}/bin'; then - if test "x${exec_prefix}" = "xNONE"; then - if test "x${prefix}" = "xNONE"; then - bindir="${ac_default_prefix}/bin"; - else - bindir="${prefix}/bin"; - fi - else - if test "x${prefix}" = "xNONE"; then - bindir="${ac_default_prefix}/bin"; - else - bindir="${prefix}/bin"; - fi - fi +# Check Library Directory +if test "x${libdir}" = "x${exec_prefix}/lib"; then + if test "x${exec_prefix}" = "xNONE"; then + if test "x${prefix}" = "xNONE"; then + libdir="${ac_default_prefix}/lib"; + else + libdir="${prefix}/lib"; + fi + else + if test "x${prefix}" = "xNONE"; then + libdir="${ac_default_prefix}/lib"; + else + libdir="${prefix}/lib"; + fi + fi fi -if test "x${libdir}" = 'x${exec_prefix}/lib'; then - if test "x${exec_prefix}" = "xNONE"; then - if test "x${prefix}" = "xNONE"; then - libdir="${ac_default_prefix}/lib"; - else - libdir="${prefix}/lib"; - fi - else - if test "x${prefix}" = "xNONE"; then - libdir="${ac_default_prefix}/lib"; - else - libdir="${prefix}/lib"; - fi - fi -fi - -dnl Set PACKAGE_BIN_DIR in config.h. -if test "x${bindir}" = 'xNONE'; then - if test "x${prefix}" = "xNONE"; then - AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${ac_default_prefix}/bin", "Package installed binaries destination") - else - AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${prefix}/bin", "Package installed binaries destination") - fi +# +# Set Library Directory in config.h +# +if test "x${libdir}" = "xNONE"; then + if test "x${prefix}" = "xNONE"; then + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${ac_default_prefix}/lib", "Package libraries destination") + else + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${prefix}/lib", "Package libraries destination") + fi else - AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${bindir}", "Package installed binaries destination") + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${libdir}", "Package libraries destination") fi -dnl Set PACKAGE_LIB_DIR in config.h. -if test "x${libdir}" = 'xNONE'; then - if test "x${prefix}" = "xNONE"; then - AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${ac_default_prefix}/lib", "Package installed libraries destination") - else - AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${prefix}/lib", "Package installed libraries destination") - fi -else - AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${libdir}", "Package installed libraries destination") -fi - -dnl Set PACKAGE_DATA_DIR in config.h. +# +# Set Data Directory in config.h +# if test "x${prefix}" = "xNONE"; then - AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${HOME}/.e/e/modules/${PACKAGE}", "Package installed data destination") - datadir="${HOME}/.e/e/modules/${PACKAGE}" + datadir="${HOME}/.e/e/modules/${PACKAGE}" else - AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${libdir}/enlightenment/modules/${PACKAGE}", "Package installed data destination") - datadir="${libdir}/enlightenment/modules/${PACKAGE}" + datadir="${libdir}/enlightenment/modules/${PACKAGE}" fi +AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${datadir}", "Package data destination") -AC_PREFIX_DEFAULT(${HOME}/.e/e) -if test "x$prefix" = "xNONE"; then - datarootdir=${ac_default_prefix} -else - datarootdir=${prefix}/share -fi -localedir=${datarootdir}/locale -AC_SUBST(LOCALEDIR, "${localedir}") -AC_DEFINE_UNQUOTED(LOCALEDIR, "${localedir}", [Module Locale Directory]) +# +# Check EFL Libs +# +AC_PATH_GENERIC([edje], [0.5.0], [], [AC_MSG_ERROR(Edje is not installed)],) +AC_PATH_PROG(EDJE_CC, "edje_cc", "", $PATH) -#AC_CHECK_LIB(dl, dlopen, dlopen_libs=-ldl) -#AC_SUBST(dlopen_libs) - -AC_ARG_WITH(edje-config, -[ --with-edje-config=EDJE_CONFIG use edje-config specified ], -[ - EDJE_CONFIG=$withval; - echo "using "$EDJE_CONFIG" for edje-config"; -/ -],[ - PROG="edje-config"; - AC_PATH_PROG(EDJE_CONFIG, $PROG, "", $PATH) -]) -edje_cflags=`$EDJE_CONFIG --cflags` -edje_libs=`$EDJE_CONFIG --libs` -AC_SUBST(edje_cflags) -AC_SUBST(edje_libs) - -edje_cc="`$EDJE_CONFIG --prefix`/bin/edje_cc" -AC_ARG_WITH(edje-cc, -[ --with-edje-cc=PATH specify a specific path to edje_cc], -[ - v=$withval; - edje_cc=$v - echo " Enlightenment edje_cc explicitly set to "$edje_cc; -],[ - edje_cc="`$EDJE_CONFIG --prefix`/bin/edje_cc" -]) -AC_SUBST(edje_cc) - -AC_ARG_WITH(enlightenment-config, -[ --with-enlightenment-config=E_CONFIG use enlightenment-config specified ], -[ - E_CONFIG=$withval; - echo "using "$E_CONFIG" for enlightenment-config"; -],[ - PROG="enlightenment-config"; - AC_PATH_PROG(E_CONFIG, $PROG, "", $PATH) -]) -e_cflags=`$E_CONFIG --cflags` -e_libs=`$E_CONFIG --libs` -e_modules=`$E_CONFIG --module-dir` -AC_SUBST(e_cflags) -AC_SUBST(e_libs) -AC_SUBST(e_modules) +# +# Check Enlightenment +# +AC_PATH_GENERIC([enlightenment], [0.16.999.037], [], [AC_MSG_ERROR(Enlightenment is not installed)],) AC_OUTPUT([ Makefile -e_modules-net.spec +src/Makefile module.desktop -po/Makefile -],[ -]) +],[]) diff --git a/e_mod_config.c b/e_mod_config.c deleted file mode 100644 index d6effde..0000000 --- a/e_mod_config.c +++ /dev/null @@ -1,220 +0,0 @@ -#include -#include -#include "e_mod_main.h" - -struct _E_Config_Dialog_Data -{ - char *device; - double poll_time; - int always_text; - double max; - Ecore_List *devs; - int dev_num; -}; - -/* Protos */ -static void *_create_data (E_Config_Dialog * cfd); -static void _free_data (E_Config_Dialog * cfd, E_Config_Dialog_Data * cfdata); -static Evas_Object *_basic_create_widgets (E_Config_Dialog * cfd, Evas * evas, - E_Config_Dialog_Data * cfdata); -static int _basic_apply_data (E_Config_Dialog * cfd, - E_Config_Dialog_Data * cfdata); -static void _fill_data (Config_Item * ci, E_Config_Dialog_Data * cfdata); -static void _net_config_get_devices (Ecore_List * devs); - -/* Config Calls */ -void -_config_net_module (Config_Item * ci) -{ - E_Config_Dialog *cfd; - E_Config_Dialog_View *v; - E_Container *con; - char buf[4096]; - - v = E_NEW (E_Config_Dialog_View, 1); - - v->create_cfdata = _create_data; - v->free_cfdata = _free_data; - v->basic.apply_cfdata = _basic_apply_data; - v->basic.create_widgets = _basic_create_widgets; - - snprintf (buf, sizeof (buf), "%s/module.edj", - e_module_dir_get (net_config->module)); - con = e_container_current_get (e_manager_current_get ()); - cfd = e_config_dialog_new (con, D_ ("Net Configuration"), "Net", "_e_modules_net_config_dialog", buf, 0, v, ci); - net_config->config_dialog = cfd; -} - -static void -_fill_data (Config_Item * ci, E_Config_Dialog_Data * cfdata) -{ - char *tmp; - int i; - - cfdata->poll_time = ci->poll_time; - cfdata->always_text = ci->always_text; - cfdata->max = ci->max; - - if (ci->device != NULL) - cfdata->device = strdup (ci->device); - else - cfdata->device = NULL; - - if (!cfdata->device) - return; - - cfdata->devs = ecore_list_new (); - _net_config_get_devices (cfdata->devs); - - if (!cfdata->devs) - return; - - i = 0; - ecore_list_goto_first (cfdata->devs); - while ((tmp = ecore_list_next (cfdata->devs)) != NULL) - { - if (!strcmp (cfdata->device, tmp)) - { - cfdata->dev_num = i; - break; - } - i++; - } -} - -static void * -_create_data (E_Config_Dialog * cfd) -{ - E_Config_Dialog_Data *cfdata; - Config_Item *ci; - - ci = cfd->data; - cfdata = E_NEW (E_Config_Dialog_Data, 1); - - _fill_data (ci, cfdata); - return cfdata; -} - -static void -_free_data (E_Config_Dialog * cfd, E_Config_Dialog_Data * cfdata) -{ - if (!net_config) - return; - net_config->config_dialog = NULL; - E_FREE (cfdata->device); - if (cfdata->devs) - ecore_list_destroy (cfdata->devs); - free (cfdata); - cfdata = NULL; -} - -static Evas_Object * -_basic_create_widgets (E_Config_Dialog * cfd, Evas * evas, - E_Config_Dialog_Data * cfdata) -{ - Evas_Object *o, *of, *ob, *ot; - E_Radio_Group *rg; - char *tmp; - int i; - - o = e_widget_list_add (evas, 0, 0); - - of = e_widget_framelist_add (evas, D_ ("General Settings"), 0); - rg = e_widget_radio_group_new (&(cfdata->always_text)); - ob = e_widget_radio_add (evas, D_ ("Always Show Text"), 1, rg); - e_widget_framelist_object_append (of, ob); - ob = e_widget_radio_add (evas, D_ ("Show Text On Mouse Over"), 0, rg); - e_widget_framelist_object_append (of, ob); - e_widget_list_object_append (o, of, 1, 1, 0.5); - - of = e_widget_framelist_add (evas, D_ ("Device Settings"), 0); - ot = e_widget_table_add (evas, 0); - -if (cfdata->devs) -{ - rg = e_widget_radio_group_new (&(cfdata->dev_num)); - i = 0; - ecore_list_goto_first (cfdata->devs); - while ((tmp = ecore_list_next (cfdata->devs)) != NULL) - { - ob = e_widget_radio_add (evas, tmp, i, rg); - e_widget_table_object_append (ot, ob, 0, i, 1, 1, 1, 0, 1, 0); - i++; - } -} - - i++; - ob = e_widget_label_add (evas, D_ ("Check Interval:")); - e_widget_table_object_append (ot, ob, 0, i, 1, 1, 0, 0, 1, 0); - i++; - ob = - e_widget_slider_add (evas, 1, 0, _("%1.0f seconds"), 1, 60, 1, 0, - &(cfdata->poll_time), NULL, 150); - e_widget_table_object_append (ot, ob, 0, i, 1, 1, 1, 0, 1, 0); - i++; - ob = e_widget_label_add (evas, D_ ("Max MTU:")); - e_widget_table_object_append (ot, ob, 0, i, 1, 1, 0, 0, 1, 0); - i++; - ob = - e_widget_slider_add (evas, 1, 0, _("%1.0f"), 100, 1500, 100, 0, - &(cfdata->max), NULL, 150); - e_widget_table_object_append (ot, ob, 0, i, 1, 1, 1, 0, 1, 0); - e_widget_framelist_object_append (of, ot); - e_widget_list_object_append (o, of, 1, 1, 0.5); - - return o; -} - -static int -_basic_apply_data (E_Config_Dialog * cfd, E_Config_Dialog_Data * cfdata) -{ - char *tmp; - Config_Item *ci; - - ci = cfd->data; - tmp = ecore_list_goto_index (cfdata->devs, cfdata->dev_num); - if (tmp != NULL) - { - evas_stringshare_del (ci->device); - ci->device = evas_stringshare_add (tmp); - } - - ci->poll_time = cfdata->poll_time; - ci->always_text = cfdata->always_text; - ci->max = cfdata->max; - - e_config_save_queue (); - _net_config_updated (ci->id); - return 1; -} - -static void -_net_config_get_devices (Ecore_List * devs) -{ - FILE *stat; - char dev[64]; - char buf[256]; - unsigned long dummy; - - stat = fopen ("/proc/net/dev", "r"); - if (!stat) - return; - - while (fgets (buf, 256, stat)) - { - int i = 0; - - for (; buf[i] != 0; i++) - { - if (buf[i] == ':') - buf[i] = ' '; - } - if (sscanf (buf, "%s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu " - "%lu %lu %lu %lu\n", dev, &dummy, &dummy, &dummy, - &dummy, &dummy, &dummy, &dummy, &dummy, &dummy, &dummy, - &dummy, &dummy, &dummy, &dummy, &dummy, &dummy) < 16) - continue; - ecore_list_append (devs, strdup (dev)); - } - fclose (stat); -} diff --git a/e_mod_main.c b/e_mod_main.c deleted file mode 100644 index 777b009..0000000 --- a/e_mod_main.c +++ /dev/null @@ -1,585 +0,0 @@ -#include -#include "e_mod_main.h" - -typedef struct _Instance Instance; -typedef struct _Net Net; - -struct _Instance -{ - E_Gadcon_Client *gcc; - Evas_Object *net_obj; - Net *net; - Ecore_Timer *check_timer; - unsigned long old_in; - unsigned long old_out; -}; - -struct _Net -{ - Instance *inst; - Evas_Object *net_obj; -}; - -/* Func Protos for Gadcon */ -static E_Gadcon_Client *_gc_init (E_Gadcon * gc, const char *name, - const char *id, const char *style); -static void _gc_shutdown (E_Gadcon_Client * gcc); -static void _gc_orient (E_Gadcon_Client * gcc); -static char *_gc_label (void); -static Evas_Object *_gc_icon (Evas * evas); - -/* Func Protos for Module */ -static void _net_cb_mouse_down (void *data, Evas * e, Evas_Object * obj, - void *event_info); -static void _net_cb_mouse_in (void *data, Evas * e, Evas_Object * obj, - void *event_info); -static void _net_cb_mouse_out (void *data, Evas * e, Evas_Object * obj, - void *event_info); -static void _net_menu_cb_configure (void *data, E_Menu * m, E_Menu_Item * mi); -static void _net_menu_cb_post (void *data, E_Menu * m); -static Config_Item *_net_config_item_get (const char *id); -static Net *_net_new (Evas * evas); -static void _net_free (Net * net); -static void _net_update_rx (void *data, int value); -static void _net_update_tx (void *data, int value); -static int _net_cb_check (void *data); - -static E_Config_DD *conf_edd = NULL; -static E_Config_DD *conf_item_edd = NULL; - -Config *net_config = NULL; - -/* Define the gadcon class and functions provided by this module */ -static const E_Gadcon_Client_Class _gc_class = { - GADCON_CLIENT_CLASS_VERSION, - "net", {_gc_init, _gc_shutdown, _gc_orient, _gc_label, _gc_icon}, - E_GADCON_CLIENT_STYLE_PLAIN -}; - -static E_Gadcon_Client * -_gc_init (E_Gadcon * gc, const char *name, const char *id, const char *style) -{ - E_Gadcon_Client *gcc; - Evas_Object *o; - Instance *inst; - Config_Item *ci; - Net *net; - - inst = E_NEW (Instance, 1); - - ci = _net_config_item_get (id); - if (!ci->id) - ci->id = evas_stringshare_add (id); - - net = _net_new (gc->evas); - net->inst = inst; - inst->net = net; - - o = net->net_obj; - gcc = e_gadcon_client_new (gc, name, id, style, o); - gcc->data = inst; - inst->gcc = gcc; - inst->net_obj = o; - - evas_object_event_callback_add (o, EVAS_CALLBACK_MOUSE_DOWN, - _net_cb_mouse_down, inst); - evas_object_event_callback_add (o, EVAS_CALLBACK_MOUSE_MOVE, - _net_cb_mouse_in, inst); - evas_object_event_callback_add (o, EVAS_CALLBACK_MOUSE_IN, _net_cb_mouse_in, - inst); - evas_object_event_callback_add (o, EVAS_CALLBACK_MOUSE_OUT, - _net_cb_mouse_out, inst); - - if (ci->always_text) - edje_object_signal_emit (inst->net_obj, "label_active", ""); - - _net_cb_check (inst); - - inst->check_timer = ecore_timer_add (ci->poll_time, _net_cb_check, inst); - net_config->instances = evas_list_append (net_config->instances, inst); - - return gcc; -} - -static void -_gc_orient (E_Gadcon_Client * gcc) -{ - e_gadcon_client_aspect_set (gcc, 16, 16); - e_gadcon_client_min_size_set (gcc, 16, 16); -} - -static char * -_gc_label (void) -{ - return D_ ("Net"); -} - -static Evas_Object * -_gc_icon (Evas * evas) -{ - Evas_Object *o; - char buf[4096]; - - o = edje_object_add (evas); - snprintf (buf, sizeof (buf), "%s/module.edj", - e_module_dir_get (net_config->module)); - edje_object_file_set (o, buf, "icon"); - return o; -} - -static void -_gc_shutdown (E_Gadcon_Client * gcc) -{ - Instance *inst; - Net *net; - - inst = gcc->data; - net = inst->net; - - if (inst->check_timer) - ecore_timer_del (inst->check_timer); - net_config->instances = evas_list_remove (net_config->instances, inst); - - evas_object_event_callback_del (net->net_obj, EVAS_CALLBACK_MOUSE_DOWN, - _net_cb_mouse_down); - evas_object_event_callback_del (net->net_obj, EVAS_CALLBACK_MOUSE_MOVE, - _net_cb_mouse_in); - evas_object_event_callback_del (net->net_obj, EVAS_CALLBACK_MOUSE_IN, - _net_cb_mouse_in); - evas_object_event_callback_del (net->net_obj, EVAS_CALLBACK_MOUSE_OUT, - _net_cb_mouse_out); - - _net_free (net); - free (inst); - inst = NULL; -} - -static void -_net_cb_mouse_down (void *data, Evas * e, Evas_Object * obj, void *event_info) -{ - Instance *inst; - Evas_Event_Mouse_Down *ev; - - inst = data; - ev = event_info; - if ((ev->button == 3) && (!net_config->menu)) - { - E_Menu *mn; - E_Menu_Item *mi; - int x, y, w, h; - - mn = e_menu_new (); - e_menu_post_deactivate_callback_set (mn, _net_menu_cb_post, inst); - net_config->menu = mn; - - mi = e_menu_item_new (mn); - e_menu_item_label_set (mi, D_ ("Configuration")); - e_util_menu_item_edje_icon_set (mi, "enlightenment/configuration"); - e_menu_item_callback_set (mi, _net_menu_cb_configure, inst); - - mi = e_menu_item_new (mn); - e_menu_item_separator_set (mi, 1); - - e_gadcon_client_util_menu_items_append (inst->gcc, mn, 0); - e_gadcon_canvas_zone_geometry_get (inst->gcc->gadcon, &x, &y, &w, &h); - e_menu_activate_mouse (mn, - e_util_zone_current_get (e_manager_current_get - ()), x + ev->output.x, - y + ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_DOWN, ev->timestamp); - evas_event_feed_mouse_up (inst->gcc->gadcon->evas, ev->button, - EVAS_BUTTON_NONE, ev->timestamp, NULL); - } -} - -static void -_net_menu_cb_post (void *data, E_Menu * m) -{ - if (!net_config->menu) - return; - e_object_del (E_OBJECT (net_config->menu)); - net_config->menu = NULL; -} - -static void -_net_menu_cb_configure (void *data, E_Menu * m, E_Menu_Item * mi) -{ - Instance *inst; - Config_Item *ci; - - inst = data; - ci = _net_config_item_get (inst->gcc->id); - _config_net_module (ci); -} - -void -_net_config_updated (const char *id) -{ - Evas_List *l; - Config_Item *ci; - - if (!net_config) - return; - ci = _net_config_item_get (id); - for (l = net_config->instances; l; l = l->next) - { - Instance *inst; - - inst = l->data; - if (!inst->gcc->id) - continue; - if (!strcmp (inst->gcc->id, ci->id)) - { - if (inst->check_timer) - ecore_timer_del (inst->check_timer); - inst->check_timer = - ecore_timer_add ((double) ci->poll_time, _net_cb_check, inst); - if (ci->always_text) - edje_object_signal_emit (inst->net_obj, "label_active", ""); - else - edje_object_signal_emit (inst->net_obj, "label_passive", ""); - - break; - } - } -} - -static Config_Item * -_net_config_item_get (const char *id) -{ - Evas_List *l; - Config_Item *ci; - - for (l = net_config->items; l; l = l->next) - { - ci = l->data; - if (!ci->id) - continue; - if (!strcmp (ci->id, id)) - return ci; - } - ci = E_NEW (Config_Item, 1); - ci->id = evas_stringshare_add (id); - ci->device = evas_stringshare_add ("eth0"); - ci->poll_time = 1.0; - ci->max = 1500.0; - ci->always_text = 0; - net_config->items = evas_list_append (net_config->items, ci); - return ci; -} - -/* Module routines */ -EAPI E_Module_Api e_modapi = { - E_MODULE_API_VERSION, - "Net" -}; - -EAPI void * -e_modapi_init (E_Module * m) -{ - bindtextdomain (PACKAGE, LOCALEDIR); - bind_textdomain_codeset (PACKAGE, "UTF-8"); - - conf_item_edd = E_CONFIG_DD_NEW ("Net_Config_Item", Config_Item); - -#undef T -#undef D -#define T Config_Item -#define D conf_item_edd - E_CONFIG_VAL (D, T, id, STR); - E_CONFIG_VAL (D, T, device, STR); - E_CONFIG_VAL (D, T, max, DOUBLE); - E_CONFIG_VAL (D, T, poll_time, DOUBLE); - E_CONFIG_VAL (D, T, always_text, INT); - - conf_edd = E_CONFIG_DD_NEW ("Net_Config", Config); - -#undef T -#undef D -#define T Config -#define D conf_edd - E_CONFIG_LIST (D, T, items, conf_item_edd); - - net_config = e_config_domain_load ("module.net", conf_edd); - if (!net_config) - { - Config_Item *ci; - - net_config = E_NEW (Config, 1); - ci = E_NEW (Config_Item, 1); - - ci->id = evas_stringshare_add ("0"); - ci->device = evas_stringshare_add ("eth0"); - ci->poll_time = 1.0; - ci->max = 1500.0; - ci->always_text = 0; - net_config->items = evas_list_append (net_config->items, ci); - } - net_config->module = m; - e_gadcon_provider_register (&_gc_class); - return m; -} - -EAPI int -e_modapi_shutdown (E_Module * m) -{ - net_config->module = NULL; - e_gadcon_provider_unregister (&_gc_class); - - if (net_config->config_dialog) - e_object_del (E_OBJECT (net_config->config_dialog)); - if (net_config->menu) - { - e_menu_post_deactivate_callback_set (net_config->menu, NULL, NULL); - e_object_del (E_OBJECT (net_config->menu)); - net_config->menu = NULL; - } - while (net_config->items) - { - Config_Item *ci; - - ci = net_config->items->data; - net_config->items = - evas_list_remove_list (net_config->items, net_config->items); - if (ci->id) - evas_stringshare_del (ci->id); - if (ci->device) - evas_stringshare_del (ci->device); - - free (ci); - ci = NULL; - } - free (net_config); - net_config = NULL; - E_CONFIG_DD_FREE (conf_item_edd); - E_CONFIG_DD_FREE (conf_edd); - return 1; -} - -EAPI int -e_modapi_save (E_Module * m) -{ - Evas_List *l; - - for (l = net_config->instances; l; l = l->next) - { - Instance *inst; - Config_Item *ci; - - inst = l->data; - ci = _net_config_item_get (inst->gcc->id); - if (ci->id) - evas_stringshare_del (ci->id); - ci->id = evas_stringshare_add (inst->gcc->id); - } - e_config_domain_save ("module.net", conf_edd, net_config); - return 1; -} - -EAPI int -e_modapi_about (E_Module * m) -{ - e_module_dialog_show (m, D_ ("Enlightenment Network Monitor Module"), - D_ - ("This module is used to monitor a network device.")); - return 1; -} - -static Net * -_net_new (Evas * evas) -{ - Net *net; - char buf[4096]; - - net = E_NEW (Net, 1); - net->net_obj = edje_object_add (evas); - snprintf (buf, sizeof (buf), "%s/net.edj", - e_module_dir_get (net_config->module)); - if (!e_theme_edje_object_set - (net->net_obj, "base/theme/modules/net", "modules/net/main")) - edje_object_file_set (net->net_obj, buf, "modules/net/main"); - evas_object_show (net->net_obj); - return net; -} - -static void -_net_free (Net * n) -{ - evas_object_del (n->net_obj); - free (n); - n = NULL; -} - -static void -_net_update_rx (void *data, int value) -{ - Edje_Message_Int_Set *val; - Instance *inst; - - inst = data; - val = malloc (sizeof (Edje_Message_Int_Set) + (1 * sizeof (int))); - val->count = 1; - val->val[0] = value; - edje_object_message_send (inst->net_obj, EDJE_MESSAGE_INT_SET, 1, val); - free (val); - val = NULL; -} - -static void -_net_update_tx (void *data, int value) -{ - Edje_Message_Int_Set *val; - Instance *inst; - - inst = data; - val = malloc (sizeof (Edje_Message_Int_Set) + (1 * sizeof (int))); - val->count = 1; - val->val[0] = value; - edje_object_message_send (inst->net_obj, EDJE_MESSAGE_INT_SET, 2, val); - free (val); - val = NULL; -} - -static void -_net_cb_mouse_in (void *data, Evas * e, Evas_Object * obj, void *event_info) -{ - Instance *inst; - Config_Item *ci; - - inst = data; - ci = _net_config_item_get(inst->gcc->id); - if (!ci->always_text) - edje_object_signal_emit (inst->net_obj, "label_active", ""); -} - -static void -_net_cb_mouse_out (void *data, Evas * e, Evas_Object * obj, void *event_info) -{ - Instance *inst; - Config_Item *ci; - - inst = data; - ci = _net_config_item_get (inst->gcc->id); - if (!ci->always_text) - edje_object_signal_emit (inst->net_obj, "label_passive", ""); -} - -static int -_net_cb_check (void *data) -{ - Instance *inst; - Config_Item *ci; - FILE *stat; - char dev[64]; - char buf[256]; - unsigned long in = 0; - unsigned long out = 0; - unsigned long dummy = 0; - int found; - long bytes_in, bytes_out; - char in_str[100]; - char out_str[100]; - double i, o; - - inst = data; - ci = _net_config_item_get (inst->gcc->id); - - stat = fopen ("/proc/net/dev", "r"); - if (!stat) - return 1; - - found = 0; - while (fgets (buf, 256, stat)) - { - int i = 0; - - for (; buf[i] != 0; i++) - if (buf[i] == ':') - buf[i] = ' '; - - if (sscanf (buf, "%s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu " - "%lu %lu %lu %lu\n", dev, &in, &dummy, &dummy, - &dummy, &dummy, &dummy, &dummy, &dummy, &out, &dummy, - &dummy, &dummy, &dummy, &dummy, &dummy, &dummy) < 17) - continue; - if (!ci->device) - continue; - if (!strcmp (dev, ci->device)) - { - found = 1; - break; - } - } - fclose (stat); - - if (!found) - return 1; - - bytes_in = in - inst->old_in; - bytes_out = out - inst->old_out; - bytes_in = bytes_in / ci->poll_time; - bytes_out = bytes_out / ci->poll_time; - - if (bytes_in < 0) - bytes_in = 0; - if (bytes_out < 0) - bytes_out = 0; - - inst->old_in = in; - inst->old_out = out; - - edje_object_part_text_set (inst->net_obj, "net_label", ci->device); - - if (bytes_in <= 0) - edje_object_part_text_set (inst->net_obj, "rx_label", "Rx: 0 B"); - else - { - if (bytes_in > 1048576) - snprintf (in_str, sizeof (in_str), "Rx: %ld Mb", - (bytes_in / 1048576)); - else if (bytes_in > 1024 && bytes_in < 1048576) - snprintf (in_str, sizeof (in_str), "Rx: %ld Kb", (bytes_in / 1024)); - else - snprintf (in_str, sizeof (in_str), "Rx: %ld B", bytes_in); - - edje_object_part_text_set (inst->net_obj, "rx_label", in_str); - } - - if (bytes_out <= 0) - edje_object_part_text_set (inst->net_obj, "tx_label", "Tx: 0 B"); - else - { - if (bytes_out > 1048576) - snprintf (out_str, sizeof (out_str), "Tx: %ld Mb", - (bytes_out / 1048576)); - else if (bytes_out > 1024 && bytes_out < 1048576) - snprintf (out_str, sizeof (out_str), "Tx: %ld Kb", - (bytes_out / 1024)); - else - snprintf (out_str, sizeof (out_str), "Tx: %ld B", bytes_out); - - edje_object_part_text_set (inst->net_obj, "tx_label", out_str); - } - - i = 0.0; - if (bytes_in != 0.0) - i = ((double) bytes_in / (double) ci->max); - - o = 0.0; - if (bytes_out != 0.0) - o = ((double) bytes_out / (double) ci->max); - - if (i < 0.0) - i = 0.0; - if (o < 0.0) - o = 0.0; - if ((i > 0.0) && (i < 1.0)) - i = 1.0; - if ((o > 0.0) && (o < 1.0)) - o = 1.0; - - _net_update_rx (inst, i); - _net_update_tx (inst, o); - - return 1; -} diff --git a/e_mod_main.h b/e_mod_main.h deleted file mode 100644 index 21f733f..0000000 --- a/e_mod_main.h +++ /dev/null @@ -1,38 +0,0 @@ -#define D_(str) dgettext(PACKAGE, str) - -#ifndef E_MOD_MAIN_H -#define E_MOD_MAIN_H - -typedef struct _Config Config; -typedef struct _Config_Item Config_Item; - -struct _Config -{ - E_Module *module; - E_Config_Dialog *config_dialog; - E_Menu *menu; - Evas_List *instances; - Evas_List *items; -}; - -struct _Config_Item -{ - const char *id; - const char *device; - double poll_time; - double max; - int always_text; -}; - -EAPI extern E_Module_Api e_modapi; - -EAPI void *e_modapi_init(E_Module *m); -EAPI int e_modapi_shutdown(E_Module *m); -EAPI int e_modapi_save(E_Module *m); -EAPI int e_modapi_about(E_Module *m); - -void _net_config_updated(const char *id); -void _config_net_module(Config_Item *ci); -extern Config *net_config; - -#endif diff --git a/fonts/Vera.ttf b/fonts/Vera.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a4d30c38af69f3688be3db21d760274a34ecb72e GIT binary patch literal 65881 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 literal 0 HcmV?d00001 diff --git a/fonts/VeraBd.ttf b/fonts/VeraBd.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a2a6b1fa8e28ea37b737ebf17b0d6563d6ac99a6 GIT binary patch literal 58675 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

)8H!(8G@rx-d!Q-;QhA(|LmE(YmhV2rpz7XzY2 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 literal 0 HcmV?d00001 diff --git a/images/bd.png b/images/bd.png new file mode 100644 index 0000000000000000000000000000000000000000..d7138473f11e836f8c2a186da941590597df888b GIT binary patch literal 228 zcmeAS@N?&q;$mQ6;PUiv2?Ek=KpeyYBFir?T?rCM@^*J&_z!{$_AZ|c6yYrJh%9Dc z;O+!rM)Q-W*8&CEOFVsD*{?Foa|??eoE5MaC{*O>;uzv_{OuH5t^*1@Zt>llCwG^B z7m_=5*7!&1+6z3IOD`lTc-u`9Kf%A&wAWB={Z_3fa~RG1#FDS{B{Di(5}DF6^P#?| z%1?>uOY;uJzc|IeT{0}Z?niTT)Q9!?kB+aq_P=)8hL-!B3#T}FWm-+RXU+c0;|YJ` Tq|;l0wljFT`njxgN@xNA5`$EC literal 0 HcmV?d00001 diff --git a/module_icon.png b/images/device.png similarity index 100% rename from module_icon.png rename to images/device.png diff --git a/images/icon.xcf b/images/icon.xcf new file mode 100644 index 0000000000000000000000000000000000000000..be1a37db7813628530ec954735677ba8ef922321 GIT binary patch literal 5443 zcmeHLdr(tn7QZ(vkP=tj+7%O#P9H~PYXqRPKHn5ao(==qWh_pZ{I*ts( zP`V6jMT#PohmjJ&5J6ty9o`BGA_($+7)1yH7BP?#!k!Zn2fJ+l=#)-(#&71!J@@>+ z^PO|=m+$wx_p&)bpV1XQ z$>0#0x$0mQ!v2Iov$3{OwKa@GYUm(@ezHcW2B-aR14AQ1KVvXCr`WVZnq1&Ky_Qq$ zv-;u`Ck%>b{+)$YM+651gtEe36^POQ?OO4?9*Xxv-N^3tWpgtU@j%!8TA?6|*hwgr zOXQLi5c$IV%NNrVPX->fh>CI%B9};o^c5f;>UmIKns?(mAmfTf^h3m~^!by4$DQ}9 z^Rup91%x7>T$rDK2|30_`@0{sHCOPjB`0DCxMeTrW@jW%hx$6(?$+0o@iQ)6z%(++ z+>3utLBK#)TXS7yX;EG__sT^?W+l^;&!3JC_H?#3ib@M_cG zI$H16R3ehaO}mnW$na2q-{Y>%j@IU;`kKnJk^;ev%&V6X866(%@9pkvZEmQmsjet3 zDay~y$-0J!_{q>fPgi@(o!aWEs)|x!alRmz&tE}ChWdLSwcl@Us1;RLl>@}j$p&O* zp#O1a`@QCd8c{`AX{oS?ELtq!U&nhebGNa!Qg}Nr_eNGGmwPQejgqEFx%dqr)76#b z!u*`f)XNtyoR5$D=hv}htm3QaXd+UJwX#eKihN4;VrF7YJlN4#z)d*I@;GJ-kxGS} zluH4TPK=H8x7X!!&qpxa91$Yrq)hq>DBvYWb3C06TLCgIdx3t4=xM3S=O)FU^*>>2 zVFCz6Iyo^mHUc@y1?h>=QQQK1~BmxKB4ZJ0(Z8SL+B zg#d0sR5;t$)6MCKrI8^bJ(Bi2RmFnLK?p!F- z7ZF=aGoxLIWb@KflM>?N&V>han7&@_F2@dAo9sbEke!*Hk{Ew3Jdn-w_wjUhJK<<= zYk^2XK98H65EJn^%iqt>$J67Z6UQ7K999rMFFoaa%-Qfj7Q^3<4v>TW5kO|R=}GZ1 zXTk%S3?DB~PY*ZJZPCTS3h%*8Xb{WS!`aF4u&uSFrNsd=ikX6DxD}9Te_y)C343eP zJ%-!1P&ZOH=#hE~T`jFQ%k=-XOoq$5h@amhwE~bmHS~%yKz$_xh^(gwXuUCgGes&;PK=RbQt@DaM@tn@PVAW=j<1WIF>($mCI_WG9e3)Ac`0#cgBV^OE{?Wl z$OXVG$T$VrsfjTWY+rZS)Yb<~RY;wrs+iA9#myb)NB`)A<6#?fleaM@Tf$3C0crs< z2x9ruJ>8BUwKb;!GA`gFvz(7T8_HoZe1IgJogC~`L|KpzP-5)4&p8Y~KVLeKj+3LK znpp(d+|F#>m0dEe;m83uf&=yZvSvKhD>FNNn=#=0JDM^(`gA~hVrDG$# z?M)R0H!+u5y#WAaeK!2Kt)cvO4gi#;$rULERiAt|I?&l%U3l|*OoVQ=rc0g;^>sgJ zD9OE^iXn1xVG5-9#q>BxdS~0cx*H~X!!21rxo0O4r z(%G5GiKj!o9rqhWWx|5otTYr=kZ6={@o-;vdrMtq38-Ucda4SUkUW1nGSr7E*-%wp zoS%E+`;4o}7&9yx>gxrK232jWtu8Mux^*)vBL$H0(GisBM-T7ct*;eTfZE>9v?TI^?GBB$yb_ziQ3TA3D;(T zue{jQJ_FVDN9tT5loa9}Vu9R3)z_hbZZ0uNIG69Y*}r!yh1gHL)YjEEGTuSe)zv19 z2?e=*-+prc;yyz|6F4pzQwbwNy4k_S$;QY4$|JX!*t@t`YZH5k#hrVoB)pX^>hJx% z5j>%P06dV4*=Vn_X%kEDS;F}`Wh-Bmh$M~IDGeo>P>wfkZ&HrKCk15_d}Dy0-Es$2MN zkhhliOP?<@TW6P-FMA&(en%*_+W*;mllKokoUr3Nh~0#gVrc%ZldFdp-TNcDRW*|Ex_={7YBD9{H?57?dH3SAFY>UG}psm_u+tOBC8s9bn no=0kZ@M~={?JJPY`PbTHs%)Hf-(--+=FJxSg}0dYd&GYL#9mqs literal 0 HcmV?d00001 diff --git a/images/idle.png b/images/idle.png new file mode 100644 index 0000000000000000000000000000000000000000..a7fd46dfb687e4240a36f4246d8dac0d1458806a GIT binary patch literal 1220 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 literal 0 HcmV?d00001 diff --git a/images/rx.png b/images/rx.png new file mode 100644 index 0000000000000000000000000000000000000000..9672ef828ecf65091db61f2df4b603a0068570c1 GIT binary patch literal 1116 zcmV-i1f%zH% z01h1Zz0uVPE0^alrN~#$?+Q}FOf$ZuFYxTK(1IyXnDdM&O?X%z;K{?2$C_5GX+@-n zcYnX@envq5t;HV^e;#MeaO@Bz;xRvhln^B%NkWo@zyXdN03dRN&mNH?GG~a&PgkJ- z9`XOnJ^*CRSZIM`2geScJv@6z5lnf)2loL>UNEP58*zru9*NU#7HR^r<{y%OE`pTc z*kPs_Q6d&vu+oZ!768C#N8F$8;mBdlE9N+3i3>;wS`?WxSoqfn_|fy)GWF@%W6Bde z`y0zV?JWcfn8E~?9DMR1CWs0|cC^s9GXGovDIrK`c5&>m(h5?#@qCg5Rt717m2p4b zV@)gOFhf>w&g zoUo=9r4+d2_7@;U;Ms52hNsiDzN>NM*bc1f^>cs5$)1|E0H8O0+uY~=jL+^frZC~M zUO-IyUgq9@e2YuG;4wa8Neco6tZ7B!1Qtf-{8isBrNA1yow}UcHKBEx&S2;_%bfZX zL(QS%LshqR-D2WxUP^)L=I&g_=H3WF-I`-cE6FQ%v1TA__yW&P_E_&4jede;J|?c2M!!K iaNxj!0|yTLj`$Z4#S1<;+NA_gr66LUf3J@g9hFR5J z-E0E~4jede;J|?c2M!!K@IOWKt3M#j>Hb}c@x}eWE+GO<6a0@KU}He@j4+M}(*!?` zSRNli#(<20Ul#af0Xc`iKYeNdpxZMVuMxjrO9)`C5uHPLdV&xkI)~^zqW55HL0SU< z*f|7aK+b_ffRx|cO~5_D*P;&q5&~$R!CL3b7_c!&F(Qm3^p`IP^9(;t@Y4i0O$f$- zy??RyFAI*LDPij9B7_F%L1Bb06;qoI6XXov_@DKxM_l$XG9_-5pW2I z%)dv#Yxk{X>fIQGam*RmSf7THdgzrnNfQRXon$hUMy3ED3w#ct%KroDMh(<9AU0j5@s|? zp}$;iBHi{qdhbEbAvm|Afb;n|wQY;&T)uDS8MYQ=%nH#pqOr7L*;pirRR1?hq3!!j z_H@D@Z{Oyk{``3#0gX~nWrOPD^BJn|(GCOJVE|i;?s5TJizEUvrV8jv09O0dj1W~Z z5+mBahicor->$PzvCXW zltNc5)16L`7-6QVW|>Oe>>}Ww4 + +AC_DEFUN([AC_PATH_GENERIC], +[dnl +dnl we're going to need uppercase, lowercase and user-friendly versions of the +dnl string `LIBRARY' +pushdef([UP], translit([$1], [a-z], [A-Z]))dnl +pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl + +dnl +dnl Get the cflags and libraries from the LIBRARY-config script +dnl +AC_ARG_WITH(DOWN-prefix, + [ --with-]DOWN[-prefix=PFX Prefix where $1 is installed (optional)], + DOWN[]_config_prefix="$withval", DOWN[]_config_prefix="") +AC_ARG_WITH(DOWN-exec-prefix, + [ --with-]DOWN[-exec-prefix=PFX Exec prefix where $1 is installed (optional)], + DOWN[]_config_exec_prefix="$withval", DOWN[]_config_exec_prefix="") + + if test x$DOWN[]_config_exec_prefix != x ; then + DOWN[]_config_args="$DOWN[]_config_args --exec-prefix=$DOWN[]_config_exec_prefix" + if test x${UP[]_CONFIG+set} != xset ; then + UP[]_CONFIG=$DOWN[]_config_exec_prefix/bin/DOWN-config + fi + fi + if test x$DOWN[]_config_prefix != x ; then + DOWN[]_config_args="$DOWN[]_config_args --prefix=$DOWN[]_config_prefix" + if test x${UP[]_CONFIG+set} != xset ; then + UP[]_CONFIG=$DOWN[]_config_prefix/bin/DOWN-config + fi + fi + + AC_PATH_PROG(UP[]_CONFIG, DOWN-config, no) + ifelse([$2], , + AC_MSG_CHECKING(for $1), + AC_MSG_CHECKING(for $1 - version >= $2) + ) + no_[]DOWN="" + if test "$UP[]_CONFIG" = "no" ; then + no_[]DOWN=yes + else + UP[]_CFLAGS="`$UP[]_CONFIG $DOWN[]_config_args --cflags`" + UP[]_LIBS="`$UP[]_CONFIG $DOWN[]_config_args --libs`" + ifelse([$2], , ,[ + DOWN[]_config_major_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\).*/\1/'` + DOWN[]_config_minor_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\).*/\2/'` + DOWN[]_config_micro_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\).*/\3/'` + DOWN[]_wanted_major_version="regexp($2, [\<\([0-9]*\)], [\1])" + DOWN[]_wanted_minor_version="regexp($2, [\<\([0-9]*\)\.\([0-9]*\)], [\2])" + DOWN[]_wanted_micro_version="regexp($2, [\<\([0-9]*\).\([0-9]*\).\([0-9]*\)], [\3])" + + # Compare wanted version to what config script returned. + # If I knew what library was being run, i'd probably also compile + # a test program at this point (which also extracted and tested + # the version in some library-specific way) + if test "$DOWN[]_config_major_version" -lt \ + "$DOWN[]_wanted_major_version" \ + -o \( "$DOWN[]_config_major_version" -eq \ + "$DOWN[]_wanted_major_version" \ + -a "$DOWN[]_config_minor_version" -lt \ + "$DOWN[]_wanted_minor_version" \) \ + -o \( "$DOWN[]_config_major_version" -eq \ + "$DOWN[]_wanted_major_version" \ + -a "$DOWN[]_config_minor_version" -eq \ + "$DOWN[]_wanted_minor_version" \ + -a "$DOWN[]_config_micro_version" -lt \ + "$DOWN[]_wanted_micro_version" \) ; then + # older version found + no_[]DOWN=yes + echo -n "*** An old version of $1 " + echo -n "($DOWN[]_config_major_version" + echo -n ".$DOWN[]_config_minor_version" + echo ".$DOWN[]_config_micro_version) was found." + echo -n "*** You need a version of $1 newer than " + echo -n "$DOWN[]_wanted_major_version" + echo -n ".$DOWN[]_wanted_minor_version" + echo ".$DOWN[]_wanted_micro_version." + echo "***" + echo "*** If you have already installed a sufficiently new version, this error" + echo "*** probably means that the wrong copy of the DOWN-config shell script is" + echo "*** being found. The easiest way to fix this is to remove the old version" + echo "*** of $1, but you can also set the UP[]_CONFIG environment to point to the" + echo "*** correct copy of DOWN-config. (In this case, you will have to" + echo "*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf" + echo "*** so that the correct libraries are found at run-time)" + fi + ]) + fi + if test "x$no_[]DOWN" = x ; then + AC_MSG_RESULT(yes) + ifelse([$3], , :, [$3]) + else + AC_MSG_RESULT(no) + if test "$UP[]_CONFIG" = "no" ; then + echo "*** The DOWN-config script installed by $1 could not be found" + echo "*** If $1 was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the UP[]_CONFIG environment variable to the" + echo "*** full path to DOWN-config." + fi + UP[]_CFLAGS="" + UP[]_LIBS="" + ifelse([$4], , :, [$4]) + fi + AC_SUBST(UP[]_CFLAGS) + AC_SUBST(UP[]_LIBS) + + popdef([UP]) + popdef([DOWN]) +]) + diff --git a/module.edc b/module.edc new file mode 100644 index 0000000..c9bce00 --- /dev/null +++ b/module.edc @@ -0,0 +1,28 @@ +images +{ + image: "module_icon.png" COMP; +} + +collections +{ + group + { + name: "icon"; + max: 128 128; + parts + { + part + { + name: "base"; + mouse_events: 0; + description + { + state: "default" 0.0; + aspect: 1.0 1.0; + aspect_preference: BOTH; + image.normal: "module_icon.png"; + } + } + } + } +} diff --git a/net.edc b/net.edc index 8f4b2f7..65c72e0 100644 --- a/net.edc +++ b/net.edc @@ -1,499 +1,290 @@ -images +images { - image: "module_icon.png" COMP; - image: "rx_00.png" COMP; - image: "rx_01.png" COMP; - image: "rx_02.png" COMP; - image: "rx_03.png" COMP; - image: "rx_04.png" COMP; - image: "rx_05.png" COMP; - image: "rx_06.png" COMP; - image: "rx_07.png" COMP; - image: "rx_08.png" COMP; - image: "rx_09.png" COMP; - image: "rx_10.png" COMP; - image: "tx_00.png" COMP; - image: "tx_01.png" COMP; - image: "tx_02.png" COMP; - image: "tx_03.png" COMP; - image: "tx_04.png" COMP; - image: "tx_05.png" COMP; - image: "tx_06.png" COMP; - image: "tx_07.png" COMP; - image: "tx_08.png" COMP; - image: "tx_09.png" COMP; - image: "tx_10.png" COMP; + image: "device.png" COMP; + image: "rx.png" COMP; + image: "tx.png" COMP; + image: "idle.png" COMP; + image: "bd.png" COMP; } -fonts +fonts { - font: "VeraMono.ttf" "VeraMono"; + font: "Vera.ttf" "Vera"; + font: "VeraBd.ttf" "VeraBold"; } -collections +collections { - group + group { name: "modules/net/main"; - min: 4 4; max: 128 128; - script + parts { - public message(Msg_Type:type, id, ...) + part { - if ((type == MSG_INT_SET) && (id == 1)) - { - new f = getarg(2); - new Float:value; - - value = f; - value = (value / 10); - set_state(PART:"rx_meter", "default", value); - } - if ((type == MSG_INT_SET) && (id == 2)) - { - new f = getarg(2); - new Float:value; - - value = f; - value = (value / 10); - set_state(PART:"tx_meter", "default", value); - } - } - } - - parts - { - part - { - name: "fade_clip"; - type: RECT; - description - { - state: "default" 0.0; - color: 255 255 255 255; - rel1 - { - relative: 0.0 0.0; - offset: 0 0; - } - rel2 - { - relative: 1.0 1.0; - offset: -1 -1; - } - } - } - part - { - name: "net"; + name: "rx"; type: IMAGE; - clip_to: "fade_clip"; - description + description { state: "default" 0.0; aspect: 1.0 1.0; aspect_preference: BOTH; - rel1 - { - relative: 0.0 0.0; - offset: 0 0; - } - rel2 - { - relative: 1.0 1.0; - offset: -1 -1; - } - image - { - normal: "module_icon.png"; - } - color: 255 255 255 192; + visible: 0; + rel1.to: "base"; + rel2.to: "base"; + image.normal: "rx.png"; + color: 255 255 255 0; + } + description + { + state: "active" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; } } part { - name: "net_label"; - type: TEXT; - effect: SOFT_SHADOW; - description - { - state: "default" 0.0; - color: 255 255 255 0; - color3: 0 0 0 0; - visible: 0; - rel1 - { - relative: 0.0 0.0; - offset: 0 0; - to: "net"; - } - rel2 - { - relative: 1.0 1.0; - offset: -1 -1; - to: "net"; - } - text - { - text: ""; - font: "VeraMono"; - size: 9; - min: 1 1; - align: 0.5 0.5; - text_class: "module_normal"; - } - } - description - { - state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - color: 255 255 255 255; - color3: 0 0 0 42; - color_class: "module_label"; - } - } - part - { - name: "rx_meter"; + name: "base"; type: IMAGE; - clip_to: "fade_clip"; - description + description { state: "default" 0.0; - rel1 - { - relative: 0.0 0.0; - offset: 0 0; - } - rel2 - { - relative: 1.0 0.25; - offset: -1 -1; - } - image - { - normal: "rx_00.png"; - } - color: 255 255 255 192; - } - description - { - state: "default" 0.1; - inherit: "default" 0.0; - image - { - normal: "rx_01.png"; - } - } - description - { - state: "default" 0.2; - inherit: "default" 0.0; - image - { - normal: "rx_02.png"; - } - } - description - { - state: "default" 0.3; - inherit: "default" 0.0; - image - { - normal: "rx_03.png"; - } - } - description - { - state: "default" 0.4; - inherit: "default" 0.0; - image - { - normal: "rx_04.png"; - } - } - description - { - state: "default" 0.5; - inherit: "default" 0.0; - image - { - normal: "rx_05.png"; - } - } - description - { - state: "default" 0.6; - inherit: "default" 0.0; - image - { - normal: "rx_06.png"; - } - } - description - { - state: "default" 0.7; - inherit: "default" 0.0; - image - { - normal: "rx_07.png"; - } - } - description - { - state: "default" 0.8; - inherit: "default" 0.0; - image - { - normal: "rx_08.png"; - } - } - description - { - state: "default" 0.9; - inherit: "default" 0.0; - image - { - normal: "rx_09.png"; - } - } - description - { - state: "default" 1.0; - inherit: "default" 0.0; - image - { - normal: "rx_10.png"; - } + aspect: 1.0 1.0; + aspect_preference: BOTH; + image.normal: "idle.png"; } } part { - name: "rx_label"; - type: TEXT; - effect: SOFT_SHADOW; - description - { - state: "default" 0.0; - color: 255 255 255 0; - color3: 0 0 0 0; - visible: 0; - rel1 - { - relative: 0.5 0.0; - offset: 0 0; - to: "rx_meter"; - } - rel2 - { - relative: 0.5 1.0; - offset: -1 -1; - to: "rx_meter"; - } - text - { - text: "Rx:"; - font: "VeraMono"; - size: 9; - min: 1 1; - align: 0.5 1.0; - text_class: "module_small"; - } - } - description - { - state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - color: 255 255 255 255; - color3: 0 0 0 42; - color_class: "module_label"; - } - } - part - { - name: "tx_meter"; + name: "tx"; type: IMAGE; - clip_to: "fade_clip"; - description - { - state: "default" 0.0; - rel1 - { - relative: 0.0 0.75; - offset: 0 0; - } - rel2 - { - relative: 1.0 1.0; - offset: -1 -1; - } - image - { - normal: "tx_00.png"; - } - color: 255 255 255 192; - } - description - { - state: "default" 0.1; - inherit: "default" 0.0; - image - { - normal: "tx_01.png"; - } - } - description - { - state: "default" 0.2; - inherit: "default" 0.0; - image - { - normal: "tx_02.png"; - } - } - description - { - state: "default" 0.3; - inherit: "default" 0.0; - image - { - normal: "tx_03.png"; - } - } - description - { - state: "default" 0.4; - inherit: "default" 0.0; - image - { - normal: "tx_04.png"; - } - } - description - { - state: "default" 0.5; - inherit: "default" 0.0; - image - { - normal: "tx_05.png"; - } - } - description - { - state: "default" 0.6; - inherit: "default" 0.0; - image - { - normal: "tx_06.png"; - } - } - description - { - state: "default" 0.7; - inherit: "default" 0.0; - image - { - normal: "tx_07.png"; - } - } - description - { - state: "default" 0.8; - inherit: "default" 0.0; - image - { - normal: "tx_08.png"; - } - } - description - { - state: "default" 0.9; - inherit: "default" 0.0; - image - { - normal: "tx_09.png"; - } - } - description - { - state: "default" 1.0; - inherit: "default" 0.0; - image - { - normal: "tx_10.png"; - } - } - } - part - { - name: "tx_label"; - type: TEXT; - effect: SOFT_SHADOW; description { state: "default" 0.0; - color: 255 255 255 0; - color3: 0 0 0 0; + aspect: 1.0 1.0; + aspect_preference: BOTH; visible: 0; - rel1 - { - relative: 0.5 0.0; - offset: 0 0; - to: "tx_meter"; - } - rel2 - { - relative: 0.5 1.0; - offset: -1 -1; - to: "tx_meter"; - } - text - { - text: "Tx:"; - font: "VeraMono"; - size: 9; - min: 1 1; - align: 0.5 1.0; - text_class: "module_small"; - } + rel1.to: "base"; + rel2.to: "base"; + image.normal: "tx.png"; + color: 255 255 255 0; } description { - state: "visible" 0.0; + state: "active" 0.0; inherit: "default" 0.0; visible: 1; color: 255 255 255 255; - color3: 0 0 0 42; - color_class: "module_label"; } - } + } } programs { program { - name: "go_active"; - signal: "label_active"; - source: ""; - action: STATE_SET "visible" 0.0; - transition: SINUSOIDAL 0.5; - target: "rx_label"; - target: "tx_label"; - target: "net_label"; + name: "recv"; + signal: "e,state,receive,active"; + source: "e"; + action: STATE_SET "active" 0.0; + target: "rx"; + transition: SINUSOIDAL 0.25; } program { - name: "go_passive"; - signal: "label_passive"; - source: ""; + name: "send"; + signal: "e,state,send,active"; + source: "e"; + action: STATE_SET "active" 0.0; + target: "tx"; + transition: SINUSOIDAL 0.25; + } + program + { + name: "recv_idle"; + signal: "e,state,receive,idle"; + source: "e"; action: STATE_SET "default" 0.0; - transition: SINUSOIDAL 1.0; - target: "rx_label"; - target: "tx_label"; - target: "net_label"; + target: "rx"; + transition: DECELERATE 0.75; + } + program + { + name: "send_idle"; + signal: "e,state,send,idle"; + source: "e"; + action: STATE_SET "default" 0.0; + target: "tx"; + transition: DECELERATE 0.75; + } + } + } + group + { + name: "modules/net/popup"; + parts + { + part + { + name: "base"; + mouse_events: 0; + type: RECT; + description + { + state: "default" 0.0; + rel1.offset: 1 1; + rel2.offset: -2 -2; + color: 221 221 221 255; + min: 125 50; + } + } + part + { + name: "bd"; + mouse_events: 0; + description + { + state: "default" 0.0; + rel1.offset: 0 0; + rel2.offset: -1 -1; + image + { + normal: "bd.png"; + border: 1 1 1 1; + middle: 0; + } + fill.smooth: 0; + } + } + part + { + name: "e.text.title"; + type: TEXT; + effect: SOFT_SHADOW; + mouse_events: 0; + description + { + state: "default" 0.0; + fixed: 0 1; + align: 0.5 0.0; + rel1.offset: 0 4; + rel2.relative: 1.0 0.0; + rel2.offset: -1 4; + color: 255 255 255 255; + color3: 0 0 0 42; + color_class: "menu_title"; + text + { + text: ""; + font: "VeraBold"; + size: 10; + min: 1 1; + align: 0.5 0.0; + text_class: "menu_title"; + elipsis: 0.0; + } + } + } + part + { + name: "icon"; + mouse_events: 0; + description + { + state: "default" 0.0; + min: 32 32; + max: 32 32; + align: 0.0 0.5; + fixed: 1 1; + rel1 + { + relative: 0.0 1.0; + offset: 6 10; + to_y: "e.text.title"; + } + rel2 + { + relative: 0.0 1.0; + offset: 6 10; + to_y: "e.text.title"; + } + image.normal: "device.png"; + } + } + part + { + name: "e.text.recv"; + type: TEXT; + effect: SHADOW; + mouse_events: 0; + description + { + state: "default" 0.0; + fixed: 1 1; + rel1 + { + relative: 1.0 0.0; + offset: 8 6; + to: "icon"; + } + rel2 + { + relative: 1.0 0.0; + offset: -8 6; + to_y: "icon"; + } + color: 74 180 74 255; + color3: 0 0 0 42; + color_class: "menu_item"; + text + { + text: "Rx:"; + font: "VeraBold"; + size: 10; + min: 1 1; + align: 0.0 0.5; + text_class: "menu_item"; + elipsis: 0.0; + } + } + } + part + { + name: "e.text.send"; + type: TEXT; + effect: SHADOW; + mouse_events: 0; + description + { + state: "default" 0.0; + fixed: 1 1; + rel1 + { + relative: 1.0 1.0; + offset: 8 -6; + to: "icon"; + } + rel2 + { + relative: 1.0 1.0; + offset: -8 -6; + to_y: "icon"; + } + color: 164 46 46 255; + color3: 0 0 0 42; + color_class: "menu_item"; + text + { + text: "Tx:"; + font: "VeraBold"; + size: 10; + min: 1 1; + align: 0.0 0.5; + text_class: "menu_item"; + elipsis: 0.0; + } + } } } } diff --git a/po/Makefile.am b/po/Makefile.am deleted file mode 100644 index 814cae7..0000000 --- a/po/Makefile.am +++ /dev/null @@ -1,28 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in $(PACKAGE).pot - -MSGFMT = msgfmt - -localedir = @LOCALEDIR@ -locale_DATA = $(addsuffix .mo,$(ALL_LINGUAS)) - -EXTRA_DIST = $(PACKAGE).pot $(addsuffix .po,$(ALL_LINGUAS)) - -%.mo : %.po - $(MSGFMT) -f -o $@ $< - -install-localeDATA: -uninstall-localeDATA: -install-data-local: - for L in $(ALL_LINGUAS); do \ - $(mkinstalldirs) $(DESTDIR)$(localedir)/$$L/LC_MESSAGES; \ - $(INSTALL_DATA) \ - $$L.mo $(DESTDIR)$(localedir)/$$L/LC_MESSAGES/$(PACKAGE).mo; \ - done - -uninstall: - for L in $(ALL_LINGUAS); do \ - rm -f $(DESTDIR)$(localedir)/$$L/LC_MESSAGES/$(PACKAGE).mo; \ - done - -clean-local: - rm -f *.mo diff --git a/po/eo.po b/po/eo.po deleted file mode 100644 index 7a730fe..0000000 --- a/po/eo.po +++ /dev/null @@ -1,63 +0,0 @@ -# translation of eo.po to -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Language-Team: Esperanto \n" -"Report-Msgid-Bugs-To: olivierweb@ifrance.com\n" -"Project-Id-Version: eo\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-08-29 10:20+0200\n" -"PO-Revision-Date: 2006-08-30 23:27+0200\n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.2\n" - -#: e_mod_config.c:44 -msgid "Net Configuration" -msgstr "Konfiguraĵo de Reto" - -#: e_mod_config.c:122 -msgid "General Settings" -msgstr "Ĝeneralaj Agordoj" - -#: e_mod_config.c:124 -msgid "Always Show Text" -msgstr "Cxiam Vidigi Tekston" - -#: e_mod_config.c:126 -msgid "Show Text On Mouse Over" -msgstr "Vidigi Tekston dum movado de muso" - -#: e_mod_config.c:130 -msgid "Device Settings" -msgstr "Aparataj Agordoj" - -#: e_mod_config.c:142 -msgid "Check Interval:" -msgstr "Kontroli Intervalon :" - -#: e_mod_config.c:150 -msgid "Max MTU:" -msgstr "" - -#: e_mod_main.c:114 -msgid "Net" -msgstr "Reto" - -#: e_mod_main.c:176 -msgid "Configuration" -msgstr "Konfiguraĵo" - -#: e_mod_main.c:379 -msgid "Enlightenment Network Monitor Module" -msgstr "\"Enlightenment-a Reta Kasxauxskulto\" Modulo" - -#: e_mod_main.c:381 -msgid "This module is used to monitor a network device." -msgstr "Tiu modulo uzigxas por kasxauxskulti retan aparaton" - diff --git a/po/fi.po b/po/fi.po deleted file mode 100644 index c2cd678..0000000 --- a/po/fi.po +++ /dev/null @@ -1,47 +0,0 @@ -# Enlightenment 0.17 net Finnish translation -# This file is put in the public domain. -# First author: Jyri Hämäläinen , 2005. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2006-04-04\n" -"PO-Revision-Date: 2006-04-04\n" -"Last-Translator: Jyri Hämäläinen \n" -"Language-Team: Jyri Hämäläinen \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: e_mod_config.c:39 -msgid "Net Configuration" -msgstr "Verkkovalvojan asetukset" - -#: e_mod_config.c:114 -msgid "General Settings" -msgstr "Yleiset asetukset" - -#: e_mod_config.c:115 -msgid "Show Text" -msgstr "Näytä teksti" - -#: e_mod_config.c:117 -msgid "Show Graph" -msgstr "Näytä kuvaaja" - -#: e_mod_config.c:121 -msgid "Device Settings" -msgstr "Laiteasetukset" - -#: e_mod_config.c:133 -msgid "Check Interval:" -msgstr "Terkistusväli:" - -#: e_mod_main.c:96 -msgid "Enlightenment Network Monitor Module" -msgstr "Enlightenment verkkovalvojamoduuli" - -#: e_mod_main.c:97 -msgid "This module is used to monitor a network device." -msgstr "Tämä moduuli tarkkailee verkkolaitetta." diff --git a/po/it.po b/po/it.po deleted file mode 100644 index 2d5bd4f..0000000 --- a/po/it.po +++ /dev/null @@ -1,59 +0,0 @@ -# Italian translation for E17 net module. -# This file is put in the public domain. -# Massimo Maiurana , 2005. -# -msgid "" -msgstr "" -"Project-Id-Version: Net\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-27 13:52+0200\n" -"PO-Revision-Date: 2006-05-27 13:58+0200\n" -"Last-Translator: Massimo Maiurana \n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: e_mod_config.c:39 -msgid "Net Configuration" -msgstr "Configurazione modulo Net" - -#: e_mod_config.c:115 -msgid "General Settings" -msgstr "Impostazioni generali" - -#: e_mod_config.c:117 -msgid "Always Show Text" -msgstr "Mostra testo sempre" - -#: e_mod_config.c:119 -msgid "Show Text On Mouse Over" -msgstr "Mostra testo al passaggio del mouse" - -#: e_mod_config.c:123 -msgid "Device Settings" -msgstr "Impostazione del dispositivo" - -#: e_mod_config.c:135 -msgid "Check Interval:" -msgstr "Frequenza di aggiornamento:" - -#: e_mod_config.c:141 -msgid "Max MTU:" -msgstr "MTU massima:" - -#: e_mod_main.c:105 -msgid "Net" -msgstr "Net" - -#: e_mod_main.c:152 -msgid "Configuration" -msgstr "Configurazione" - -#: e_mod_main.c:361 -msgid "Enlightenment Network Monitor Module" -msgstr "Modulo Net di Enlightenment" - -#: e_mod_main.c:361 -msgid "This module is used to monitor a network device." -msgstr "Questo modulo viene usato per monitorare un dispositivo di rete." diff --git a/po/ja.po b/po/ja.po deleted file mode 100644 index f5cd0d6..0000000 --- a/po/ja.po +++ /dev/null @@ -1,64 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# Yasufumi Haga , 2006 -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: Net\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-05-28 19:42+0900\n" -"PO-Revision-Date: 2006-05-28 22:42+0900\n" -"Last-Translator: Yasufumi Haga \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: e_mod_config.c:39 -msgid "Net Configuration" -msgstr "net の設定" - -#: e_mod_config.c:115 -msgid "General Settings" -msgstr "一般の設定" - -#: e_mod_config.c:117 -msgid "Always Show Text" -msgstr "常に表示する" - -#: e_mod_config.c:119 -msgid "Show Text On Mouse Over" -msgstr "マウスが乗れば表示する" - -#: e_mod_config.c:123 -msgid "Device Settings" -msgstr "デバイスの設定" - -#: e_mod_config.c:135 -msgid "Check Interval:" -msgstr "監視間隔" - -#: e_mod_config.c:141 -msgid "Max MTU:" -msgstr "最大 MTU:" - -#: e_mod_main.c:105 -msgid "Net" -msgstr "" - -#: e_mod_main.c:152 -msgid "Configuration" -msgstr "設定" - -#: e_mod_main.c:361 -msgid "Enlightenment Network Monitor Module" -msgstr "Enlightenment ネットワーク監視モジュール" - -#: e_mod_main.c:361 -msgid "This module is used to monitor a network device." -msgstr "これはネットワークデバイスを監視するためのモジュールです." - -#~ msgid "Show Graph" -#~ msgstr "グラフを表示する" diff --git a/po/sv.po b/po/sv.po deleted file mode 100644 index 6230162..0000000 --- a/po/sv.po +++ /dev/null @@ -1,64 +0,0 @@ -# Swedish translation of Net module for E17. -# This file is put in the public domain. -# Anders Trobäck , 2006. -# , fuzzy -# -# -msgid "" -msgstr "" -"Project-Id-Version: Net module for E17 N/A\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-07-05 17:22+0200\n" -"PO-Revision-Date: 2006-07-05 23:33+0200\n" -"Last-Translator: Anders Trobäck \n" -"Language-Team: Swedish\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit" - -#: e_mod_config.c:41 -msgid "Net Configuration" -msgstr "Net konfiguration" - -#: e_mod_config.c:117 -msgid "General Settings" -msgstr "Allmänna inställningar" - -#: e_mod_config.c:119 -msgid "Always Show Text" -msgstr "Visa alltid text" - -#: e_mod_config.c:121 -msgid "Show Text On Mouse Over" -msgstr "Visa text när musen är över" - -#: e_mod_config.c:125 -msgid "Device Settings" -msgstr "Enhetsinställningar" - -#: e_mod_config.c:137 -msgid "Check Interval:" -msgstr "Kontrollintervall:" - -#: e_mod_config.c:143 -msgid "Max MTU:" -msgstr "Max MTU:" - -#: e_mod_main.c:105 -msgid "Net" -msgstr "Net" - -#: e_mod_main.c:160 -msgid "Configuration" -msgstr "Konfiguration" - -#: e_mod_main.c:349 -msgid "Enlightenment Network Monitor Module" -msgstr "Enlightenment nätverksövervakningsmodul" - -#: e_mod_main.c:349 -msgid "This module is used to monitor a network device." -msgstr "Denna modul används för att övervaka ett nätverkskort." - -#~ msgid "Show Graph" -#~ msgstr "Visa graf" diff --git a/rx_00.png b/rx_00.png deleted file mode 100644 index 6847583d0fc5dafeca51fbbf919bba8f3b1e8765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99 zcmeAS@N?&q;$mQ6;PUiv2?EkNKy1Ll1|+{|&36P++MX_sAr-gY9yDYG@(wNd>YvNS ezW~U@0Q-0X4Hy^`4^5o`lJa!*b6Mw<&;$U-daLBuuh@B>&R3pC55Ed^_j!< zXFa9k(7_}7uO89`Acwm#+^gTA3P3agki-4pL3tcfSKy8wKt##%15qha6%5)8BqktY zxJC*xgpy?f5??wjfEe1|S^G2#^xCUkOn2IK74?fCiPjUvzKK8Qh%63$!g>f-dt=R>dYZ~#b0am(i_Vi Vbj|@+<{$t7002ovPDHLkV1j}~nwZ<|9zEvNr26;C^eSS3keu)gPzP%6lM1q0|NkH=XwDc=j-b8yk7s`AHO&t z+{O=ZZumGibxaG>D_cS_As1G}SdtiFlMuGaSdd}PcdqXVg$iM+z_j5uksx&x5yE_f z5d}vzLXkq?lqin`&-jG`4;g=2*V#K}C75IS@{nRevMbXj3!8*kqQhEc5~ytTwY?zT zkXa@|zEiSn@)nh=W< zS43GElS-NhVVMKSpN|NIgdk7^q>$$b$qX1H^A|P=0rIy@qLeOEZzx&pu5Uz;P?*#+ zr-YVhi-k=>=F8LBU^vuiJ)@9JNz&haKKq~6pm;Tfw8B4aPb8=Y~@P)%eE Qr2qf`07*qoM6N<$g27Vhi2wiq diff --git a/rx_03.png b/rx_03.png deleted file mode 100644 index d2ccb6cb51dd40b5793ad19ee7297fd49f53e7bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmV;60(AX}P)E7$} z$2T4be&GwaHfdd(wzh@sl`VE}ZLfhr$O}a_R1s6n_fO;n2SV5;<3L6=_q^`w)PaMF z0-+G53cPJBwi0wIRoJdq^Lell!hC}f1)-WUN?$+}f~G_*p#<0XQ?dpgvYRo85}0Wh zNo!HakPvsNn7kS#Bw-2&DI;NZWykTIJpfcTUdLV#Z*W!_Bqe42L&+-AZ%n)Tz#!z5 ztRPBR9incDaZDgQWZI8FC<7+Z!J!WU`Q;COLXQd3Yn#>uKbj^ zHtEKr5VK^dnNwjlf_Kytm?ev)BKLY3qy>Z6i@`5mrL!WbD`-mA-P6G(yhj~=1x?9< zQTJK&MROnGA@>_Ykg}ybp$3WwA!h7#Jb}g9C7Q=NMCgEc2u$CAF|TsQFo8%}Y*Up- z>`H+-{|ZbGS!BL-+HiGri_Eg_jZPqv(Gnw*ZoE<{S#yOsB40d9;N818FI|&9U%N>`%H2a)~{GmczPw6^()i?%(km)0$6QV-KO+r}D z!Dd}5{-$JoKnR2)AQV!YzX16w!fisF0i!e3P1*W@5DYd`m8tjG3!ITV| lhqEl@82~>`Ot=0qegMhaG}Shtu=xN0002ovPDHLkV1nAtB^dw! diff --git a/rx_04.png b/rx_04.png deleted file mode 100644 index fe0161c9fc91fcdd01aa8317e6904b94ce60f675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 743 zcmV?P)!-}g`P?CjqA zyJznjKj)7RJP@=!fmZ;=B^cKox1-wCy_|dl#q-zu!nWTD`Q9i3+9ig?^IZ~0F)-p1 zqJoS`GT4mjD!?f2XOp1l3Q<*oOJH$>pjohSyG|4KMtVYM!iXC2vr*0l`l@enlFY~o zK><-6?6|~VRZ*49Xb!pKIYcEW(xy;rvkFmg7oU(FRYbEQx{8`r3X>B;Lt#~cba>}3 z0BEQ)AYAsMY1F!%Mv@?UjiazOA&Wx7Vk41VGZ~){2nkw287ESgh8c zT7@etsIa&`1Y+b5qgQYmNE!-^heMv0bX_HO_Zk~=XDVbV_+fLc>n|X9NL5s9g#f+X zPOMq*PW4or#q>VJ3KSNuJI*eOP94R0wCu&gi0{-H1wYV8U?gPi&JK=-d)zKuHHnds z<@N*}-YZLFMa?1I%c|6k%L!bl2&dAR&LJ>4LCM?QojT>DdSTqJ<_*JVm3~}bv z|EMe#)Q%%C8PzMDe?{y_O$ZxebrvS5k&ev-$6F_z**6-?q_S6NRtFDcJ*C;V>f-M9 zFci&XyvpjDHwr0RsV*2M;t*99N$Rc&0<^6@>$Hir^}J_JeFJKoK(k4l>OJCRFYx|K zcA5~Tz6YF@i!GMB5cAG22&(F06QX(!z?&a&xyD)B#gmXa*fat?gB=J}rPS3~C}$ds zj;p)7(((MTGx?=$75h=hUO=zsh3N*wLsqAb+=(Tc?--3|7VTwqvxGEdF&aa$Q&vni z7w-_W;z0rb^C#|%?Biz)S0Txr@!RcPkP2BHsbfPK?aUgUrKA%ttK$s7|Jh~-s)%?C Z{tMHLm`;yg4+Q`K002ovPDHLkV1kU?PB{Po diff --git a/rx_05.png b/rx_05.png deleted file mode 100644 index 3a42927f1e7bd9e708e3261c1bb5ef7cf88fcefa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 862 zcmV-k1EKthP)xjVqA0hQ$pL~QZQ{0)B~q0Ah(G`U_&mP=#PfA^eLug%v#WdW zW3R@FWNhZ+KK|i>0mlVA3J@>Gcs+4@Rj0a_i|;`4eDzznxNpeu(;@#43WHXTVe)+C z#4wz(`U=C2OBxvqXRw&nnSqhqPs2eWCdudsQBi>x!{U~LAZBjdo{cw7h{ze^5So8n z&3Gn8qA}Bvj0%ym;sgvqlA@}#;{tycMKlV3H@f=l&tu3cA7_!EK${}pN5YUYM>(Vc zlO3{?$7x1H6;Z3GV1vDlV_7ceN0ENQh@2I`({x�O~3?cUTb$CuPx98Qa0CV^bCd zg~f&=onq1<0%IM5f`USTGZ(<_&}tM6DmKRW^BB^tM_^FeZbh$HSey|h*RPpLgT}(t zt7wn|7)2w^Ninuk-vRY7EAzXfSyb&VhK&^$Q51(&Dp^GUOo~k7KFqE~E=waKdJ?=7 zJ+8#gM66t;!I3G8V)nW3JIXGSN*&^wCt!$cJDO+OBG)B5`m(#5EQdaz~YN)P59amHgP0ESB=Jy osvGC*s`|usXA0+6z(3^p2GL*o$Od|4`Tzg`07*qoM6N<$f|XQ|O8@`> diff --git a/rx_06.png b/rx_06.png deleted file mode 100644 index 721a187f897a0a0982bc8e1f6ccda91c70559828..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 974 zcmV;<12O!GP)%AZT z`RNed9$+O89&HZJubjAmGj?ORj=6HSCO9NBvNq0eF{>j3D>&Z3K`WUg-i&n@6`mL& zSybruKrW1}+kQjX>qe6{Tp3Qg%MlzV`3a*{y0unhpXRJvPq5z^Q*rAC( ziXub9-;GHk%89cdokJ=-zR!9W1~4>I26u!ss0nXtl0!~#+%O`lh*B_{DSJ~8c>|f& zSBvwjfS&~-XJ;%!r>!KZ8$#F^+FLOciq|?Q{3>Ig7O9@)j5Ek`LSc2_NK#A^BCra! zrfEq%EA#~9i#v1}NFWimpVTA*P&O)ubn6iTO53gIGZsduv7nsFHA&GX!b4GQXp+?k2Rez_~KU#h_ za0;3ARjwgxyQ-Cn7HjWHf3P1yjpdEpQ9;fE(tX6#R1}n&%CczFiKx1#D;-bdbXrG^ zkxtYwrhs7_ROxO&T1WGuZ(n&TWOd%dsPwN+4}=<62Q|(p`90(Pr>_VQEYFOZ(O>$u zRi+?6+9A7jOP|u$(~h5D4s=MhvSpF4w%tN*N`S{ w1(DQs^aw4BET^F_+nhiZ`G*F7;N$_H|5NB+Ql-N~F8}}l07*qoM6N<$f?DptAOHXW diff --git a/rx_07.png b/rx_07.png deleted file mode 100644 index 348018dd394fb2377a645f119efc12389097fc60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1087 zcmV-F1i<@=P)j;fOvoJey`hiaqjNe z_1e2@MRIKx*Uj$zxj%|~F8f}8@WO@97w{fvd>G?%!}48i)v?^%1IhVnEZiK2;+ibZ z%dUIr^RGj&JU|o=o^4FdS56GW8M`rjj#)Vy!udbf!A*x$Mn*E=YF1|kMshp~2SqVS zxEbpj6-e$?IetWhR8g@Gl)~6p_S1yDZZu&t&g>kR(RnpOXg+u~uqf0fwWVMR_Ng(%EI z%;;{Bx`W3ZY2b{a@C>q8P*@x|(kUh#A`pVDt&vH?p(7juK|xU@XKoTZ5Agb=CV>HE zD5&?i9MY{v6k7rM6@A6RoaF4lE(&6Dy;6q|?mD$X_V6?q7z$!>qJyct#2L|%SL*Q~ z7j*V1L6FTHc3P8QQl+lohhm?ist`(R1t)koNl-Y@)y1wrmePaRl;BTfj7(x@B35<@ z0|ktZi4fONXzX_&1xclj;&+GcMk4jN#q22Bi^hysvy?@C;GqNErWuObi1T!;ydT0t zybhrlJIbviUMd#mu)<0|<88=tYXYaG$_GNEiUy!xAiDKP)|9(e7@{zUf)qC4!(~SC zOB+RWVG?9jD>Ibx3X$-6SU;eULfn~NjT1$Z2Zr?2U11Q0Ue%RhXx^`Kykbu*{w4BybAsS*AulE$5Wg9}A4k9V769q1jwvhXm}9T|kE+o(_T3g9hvs3z0M2L}&>apIyYEGok= zsnXeiw2tQGzI{b=;&B>eb>72J`d6n1;u=^nCK%7tX#rf-vQ(GQeMP{<@(?uFxj)3j zP%`_-RVQrDo-Rb3^yND*u7h)*;OseSx)1=Y;yut&VOj&11DFJG(a{1fWPMtzssf+s)PUl002ovPDHLk FV1l;k{eoka4Sa{~lj0>?f}CyJuveN>?U0Q`D?0;sRQtIyZ>=kVLr zvDb62&Q;C1Ih?n<_UrdGT$AEHn&Uox;{$Je{Q|x&UN6RYedF?XdQZo4aSAlQS8L(o zI1K0H@H=(hfB(kiIO53byF+lfff{bSd$akya$*_ISgql8&C1yj&c}alG{K!i8W6%;3eYn-f#BucDr(lX?m7SBTdxtDy-myiugC;BiG7 zRy9nQ+wfElNes^ccT-2YOhy??(N{D(KY{2+lloNX!H^lQ&_P22>27MLCV>HE7^rtb zv-w00N$U~CR)D;spIDe(7ztsZfYAg7aWX<&Lm~LyffO{AI)={)-R&d~+=w=(ia$bo5$t#di|^=T>Oi+? zHVK0aVR3Tm@qP$z>>z~3LQo{SEX-kr5RE4#HXd_GQWH2WRo)OHRWty3f#}vFNf+^G zgmml%K~7)@A1*VhH@#^jW;ZuJBEQ4T2@|b##61R1fhq3MtTSNN9TR~#T&4ftF)TB= zD!nR|VQ5}&ay){h%prRC(@EW_6I70X(dta`osB}PCP2zqtLl$%XnGw_>JE-Ng9%D= z+HtU3_$57ZnmvyC8QA(2iG2=lM^m6V(UBTd^X1eXkaioVO4x0H z?JzT#3=EAncARCY;*FSx3wC-E6J)rp)RcK8qdv|M;oFls0^C*7c+zihG_*wUbD;|c zd^-Bwah8QQgu0SJ6wkk#R{(F=VcJZ9H&gIvgrpTSO$bv;Elr4X8b}ll+8wSt4q54l z=pAVTLDY4-yf%!NPRG#5dB^23ATz2Gir;c)}aRj}SM;_S02KJ+2D!@F?oA$Mx zsT9SGoQ>yf6g~-A$#WP=|4Mowu7QEP#&N~Zq@Ti*kOi|#=sqIgVtEOg>s%i}$I+dN zbf*4~)gh}w=PrHS?fAj$fjC`1SDta^nK`WKc!Z?A?xbCtJ}#}AVKkC%Ix`07NBXY0 z^3kM@3TCv^HFT3Unn+3=?QEWjejk@koaeX!|6!XQsB->?2HtS8qOTLFf!H8#di?

x zj^juSgV}rkOYOm$wSRhm9RR3(7XlfbdddQcQqnXhwnBuV}`z9pTXzi;oK$9MDH zw{xG@e!JEwuI=W!)xCdzewurFc#iMk*@tz0{i`p5*FVzF&Cf4m{66&f+a2Axez}K= z?@w#-%Xw<9>E?UWb^rWZkMsO;uj;%b{QBD=dOW~s9=tkSe1CG{0nT_^!|ydu&eq_3 z6^2$}+%v3Qk3c~V>5Qym!Ch2W23B#tfrCyHBz{@zGb>cwYjS*bo{P^_IMv$>>9RtP z3wtp3Gdc`mFU=+jkt+z173_4`r6wrfG6gxr@WH!?_mJXUv+# zn;JyfVC;|zjvHpglu@*h8bmQ+OT>X4T|GgjtQ?Yf`7ERQS@0%yCJ2WLsJ6qx{+9I} zW1QGyM0*7nOBh+&_)W&%HmNSyj|TeP)iwptxb8zvXm}3=PRnZ^i2GJfUsXhY0?`WV z)kkWG04G09^cfWR312roi2#&oXy_=-p6Z=$AXV&z<(He%CflOX7@hHZNi!OT|^s0N6# z5*IZzhbJiNRc#QYrMe6fH4aRmFzJ1|XTgv)=|K)9_>GKFN$hSUjD#?FfYAg72{~9d zhSX3BJ|~c(qElD%KB2pnjbqI?V?>m;+QO`qs z5kU%#rJzZq&_VkGhe1Y~O5bKk(i4!8sxO4dDH{^`n}~;-@$tmUu4_og2xv`k2p^Og zoev!zvP(g2B-!j{lLV%{q$YHl(FF^_*#BXb{!h@0O_<* z%{-e9z&6ZGkb$Yt#spaEDnksLHxB~aW+u@=1|6lQ%q!XILzD^wcQxH+6-`;vRyD(AjB?{&a?<9kU^XO-+>{#E}7# z!6u2#<~q7f_G;IOf?Xsx(uRVptD^i|7?0Kqhc%BlCzjvI;z`sekyOFvq?{U#cLg$W zf?$V%wkYV?JcJs{FLK8OIR{Ah8Z@KIQIp)VDfk@&l|DG2A{5Tr$s@@yC&hKrN0Dw^ z!R&?LojB56k!06@R|hTjvxahn>t*yPh^TZfpZq9?46Xzj zk(*-eMV-?Ivb2DtbmEuxE&{_agQA=68SC~6=%rRBBZrR^buF0DW@<=_wu($j9ZiDA zVjIf}0%WCS8L}Abe&(?K9~yk&WD2yjBQ*j8s|nV?>p$yXdCQxjL`?ty002ovPDHLk FV1g6*VkQ6p diff --git a/rx_10.png b/rx_10.png deleted file mode 100644 index 075f8999589db9056e47ad51bd38de3e0cf458e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1381 zcmV-r1)BPaP)*O{{IU^j|%K&N<|wl!6FNTVwBbr~ zJIzZk0n5>#g~U45?BxWHC#7_QJdHK47OOi!X|Ng(&{sXn&A~dboJklPq5^?nH|JCN zIh`$T9S3=UBV9QD%8CpR{(Ft|a207Id8O<9d0y!b_s>Vo}fpx>QuQvi*`-yJPv zhX?P$!Rc~N8bDb&eN~Oy7@`&WE9b;#jXt8{;Fb0nICwSMB;Ca%0#K$QprbT<@^^wk zrz@v!cyI|@k@ASXV_|f|#JNty#6jFNu`~na`%<3u&mRg?1gR4>U|@#yG0lTbe#sD~ z9FiIjZ0ndhv2rd?1F`A5DIw_4huy{`f|jpFQ5}$t#%kBN2oiC28_J3(->8X-AxK3Aq*a1G=V`v4w4Y!OKBE9C2hc)a%#<<7EW__ zZ8emsrMTNcV<#vD@M{=9q)g32gGDj-LUDosLm>E>;Jb?qt%q7ml5O>1i30syG{*;n z#D#Fwkj6QzYfJ)m=)`G$jn+6U9*@zef2gypDA`ANyNUpfSVwxGQ>{TSNI=&^MzY1} zI(;hP-jqW93o%UBjX|3d_9ZhDWMC?CV*)HSP?Ck}3mwD=1bY)R>L7!bQd8!YwEB=t zg#+tv#;%wJ37Be9Zy-6eB;iM)OW*)W{*G2V#nMRY8fpZcJ;hjoZVu{KNLt*3G7&mE ztQpo=?+RGr1i=m!Ev>t#63FC41rAl}UxE=}SJS3kWC#Rm z7gaQ#kN{mIVZpWHqLX!(9=R>%Bmt!Z|DcA((=HqO5)iGz9$#s@d10n%DDL`s)4De4 zN|~4uQ9Pn3zOW|9G}r6C)Gq&}3_s(hGzItE1b>qy5O@sx%2pInChtek#R_h=YZRar zN7@xhy8c04YJ_-KjdH%!9t9ee*5#9za!BDyL3d*1tbO6<63aAw3-_iB`!;qFD26#q zbtftL>5V4?5;65893e}g(|!{er9R0(<9uO-g34pD#&QD%A@vT3sS!ivD%SW1j11dsI`c4c00000NkvXXu0mjfa(0W8 diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..499fb33 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,27 @@ +ACLOCAL_AMFLAGS = -I m4 +MAINTAINERCLEANFILES = Makefile.in + +INCLUDES = -I. \ + -I$(top_srcdir) \ + -I$(includedir) \ + @ENLIGHTENMENT_CFLAGS@ + +pkgdir = $(datadir)/$(MODULE_ARCH) +pkg_LTLIBRARIES = module.la +module_la_SOURCES = e_mod_main.h \ + e_mod_gadcon.h \ + e_mod_net.h \ + e_mod_config.h \ + e_mod_configure.h \ + e_mod_main.c \ + e_mod_gadcon.c \ + e_mod_net.c \ + e_mod_config.c \ + e_mod_configure.c + +module_la_LIBADD = @ENLIGHTENMENT_LIBS@ +module_la_LDFLAGS = -module -avoid-version +module_la_DEPENDENCIES = $(top_builddir)/config.h + +clean-local: + rm -rf *~ diff --git a/src/e_mod_config.c b/src/e_mod_config.c new file mode 100644 index 0000000..7b98394 --- /dev/null +++ b/src/e_mod_config.c @@ -0,0 +1,56 @@ +#include +#include "e_mod_main.h" +#include "e_mod_config.h" + +EAPI Config_Item * +_config_item_get(const char *id) +{ + Evas_List *l; + Config_Item *ci; + + for (l = cfg->items; l; l = l->next) + { + ci = l->data; + if (!ci->id) continue; + if (!strcmp(ci->id, id)) return ci; + } + ci = E_NEW(Config_Item, 1); + ci->id = evas_stringshare_add(id); + ci->device = evas_stringshare_add("eth0"); + ci->poll_time = 1.0; + cfg->items = evas_list_append(cfg->items, ci); + return ci; +} + +EAPI Ecore_List * +_config_devices_get(void) +{ + Ecore_List *devs = NULL; + FILE *f; + char buf[256]; + char dev[64]; + unsigned long dummy; + + f = fopen("/proc/net/dev", "r"); + if (!f) return NULL; + + devs = ecore_list_new(); + ecore_list_set_free_cb(devs, free); + while (fgets(buf, 256, f)) + { + int i = 0; + + for (; buf[i] != 0; i++) + if (buf[i] == ':') buf[i] = ' '; + + if (sscanf (buf, "%s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu " + "%lu %lu %lu %lu\n", dev, &dummy, &dummy, &dummy, + &dummy, &dummy, &dummy, &dummy, &dummy, &dummy, &dummy, + &dummy, &dummy, &dummy, &dummy, &dummy, &dummy) < 17) + continue; + ecore_list_append(devs, strdup(dev)); + } + fclose(f); + if (devs) ecore_list_goto_first(devs); + return devs; +} diff --git a/src/e_mod_config.h b/src/e_mod_config.h new file mode 100644 index 0000000..43d1514 --- /dev/null +++ b/src/e_mod_config.h @@ -0,0 +1,28 @@ +#ifndef E_MOD_CONFIG_H +#define E_MOD_CONFIG_H + +typedef struct _Config Config; +typedef struct _Config_Item Config_Item; + +struct _Config +{ + E_Module *mod; + E_Config_Dialog *cfd; + E_Menu *menu; + Evas_List *instances; + Evas_List *items; +}; + +struct _Config_Item +{ + const char *id; + const char *device; + double poll_time; +}; + +EAPI Config_Item *_config_item_get(const char *id); +EAPI Ecore_List *_config_devices_get(void); + +extern Config *cfg; + +#endif diff --git a/src/e_mod_configure.c b/src/e_mod_configure.c new file mode 100644 index 0000000..494bbb0 --- /dev/null +++ b/src/e_mod_configure.c @@ -0,0 +1,139 @@ +#include +#include "e_mod_main.h" +#include "e_mod_configure.h" +#include "e_mod_config.h" + +struct _E_Config_Dialog_Data +{ + char *device; + double poll_time; + + Ecore_List *devs; + int num; +}; + +static void *_create_data(E_Config_Dialog *cfd); +static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static void _fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata); +static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); +static int _apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); + +EAPI void +_configure_net_module(void *data) +{ + E_Config_Dialog *cfd; + E_Config_Dialog_View *v; + E_Container *con; + Config_Item *ci; + char buf[PATH_MAX]; + + if (e_config_dialog_find("Net", "_netmod_config_dialog")) return; + + ci = data; + v = E_NEW(E_Config_Dialog_View, 1); + v->create_cfdata = _create_data; + v->free_cfdata = _free_data; + v->basic.apply_cfdata = _apply_data; + v->basic.create_widgets = _basic_create; + + snprintf(buf, sizeof(buf), "%s/net.edj", e_module_dir_get(cfg->mod)); + con = e_container_current_get(e_manager_current_get()); + cfd = e_config_dialog_new(con, _("Net Module Configuration"), "Net", + "_netmod_config_dialog", buf, 0, v, ci); + cfg->cfd = cfd; +} + +static void * +_create_data(E_Config_Dialog *cfd) +{ + E_Config_Dialog_Data *cfdata; + Config_Item *ci; + + ci = cfd->data; + cfdata = E_NEW(E_Config_Dialog_Data, 1); + _fill_data(ci, cfdata); + return cfdata; +} + +static void +_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + if (cfdata->devs) ecore_list_destroy(cfdata->devs); + E_FREE(cfdata->device); + E_FREE(cfdata); + if (!cfg) return; + cfg->cfd = NULL; +} + +static void +_fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata) +{ + char *tmp; + int i = 0; + + cfdata->poll_time = ci->poll_time; + if (ci->device) cfdata->device = strdup(ci->device); + cfdata->devs = _config_devices_get(); + if (!cfdata->devs) return; + while ((tmp = ecore_list_next(cfdata->devs)) != NULL) + { + if (!strcmp(cfdata->device, tmp)) + { + cfdata->num = i; + break; + } + i++; + } +} + +static Evas_Object * +_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) +{ + Evas_Object *o, *ob, *of; + E_Radio_Group *rg; + char *tmp; + int i = 0; + + o = e_widget_list_add(evas, 0, 0); + of = e_widget_framelist_add(evas, _("General Settings"), 0); + ob = e_widget_label_add(evas, _("Check Interval")); + e_widget_framelist_object_append(of, ob); + ob = e_widget_slider_add(evas, 1, 0, _("%1.0f seconds"), 1, 60, 1, 0, + &(cfdata->poll_time), NULL, 150); + e_widget_framelist_object_append(of, ob); + e_widget_list_object_append(o, of, 1, 1, 0.5); + + if (!cfdata->devs) return o; + + of = e_widget_framelist_add(evas, _("Device Settings"), 0); + rg = e_widget_radio_group_new(&(cfdata->num)); + ecore_list_goto_first(cfdata->devs); + while ((tmp = ecore_list_next(cfdata->devs)) != NULL) + { + ob = e_widget_radio_add(evas, tmp, i, rg); + e_widget_framelist_object_append(of, ob); + i++; + } + + e_widget_list_object_append(o, of, 1, 1, 0.5); + return o; +} + +static int +_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + char *tmp; + Config_Item *ci; + + ci = cfd->data; + tmp = ecore_list_goto_index(cfdata->devs, cfdata->num); + if (tmp != NULL) + { + evas_stringshare_del(ci->device); + ci->device = evas_stringshare_add(tmp); + } + ci->poll_time = cfdata->poll_time; + + e_config_save_queue(); + return 1; +} diff --git a/src/e_mod_configure.h b/src/e_mod_configure.h new file mode 100644 index 0000000..bcf2ea8 --- /dev/null +++ b/src/e_mod_configure.h @@ -0,0 +1,6 @@ +#ifndef E_MOD_CONFIGURE_H +#define E_MOD_CONFIGURE_H + +EAPI void _configure_net_module(void *data); + +#endif diff --git a/src/e_mod_gadcon.c b/src/e_mod_gadcon.c new file mode 100644 index 0000000..1a28912 --- /dev/null +++ b/src/e_mod_gadcon.c @@ -0,0 +1,106 @@ +#include +#include "e_mod_main.h" +#include "e_mod_gadcon.h" +#include "e_mod_net.h" +#include "e_mod_config.h" + +static const E_Gadcon_Client_Class _gc_class = +{ + GADCON_CLIENT_CLASS_VERSION, "net", + {_gc_init, _gc_shutdown, _gc_orient, _gc_label, _gc_icon}, + E_GADCON_CLIENT_STYLE_PLAIN +}; + +static E_Gadcon_Client * +_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) +{ + Instance *inst; + E_Gadcon_Client *gcc; + Config_Item *ci; + char buf[PATH_MAX]; + + snprintf(buf, sizeof(buf), "%s/net.edj", e_module_dir_get(cfg->mod)); + + ci = _config_item_get(id); + if (!ci->id) evas_stringshare_add(id); + + inst = E_NEW(Instance, 1); + inst->o_net = edje_object_add(gc->evas); + if (!e_theme_edje_object_set(inst->o_net, "base/theme/modules/net", + "modules/net/main")) + edje_object_file_set(inst->o_net, buf, "modules/net/main"); + evas_object_show(inst->o_net); + + gcc = e_gadcon_client_new(gc, name, id, style, inst->o_net); + gcc->data = inst; + inst->gcc = gcc; + inst->timer = ecore_timer_add(ci->poll_time, _cb_poll, inst); + + evas_object_event_callback_add(inst->o_net, EVAS_CALLBACK_MOUSE_DOWN, + _cb_mouse_down, inst); + evas_object_event_callback_add(inst->o_net, EVAS_CALLBACK_MOUSE_IN, + _cb_mouse_in, inst); + evas_object_event_callback_add(inst->o_net, EVAS_CALLBACK_MOUSE_OUT, + _cb_mouse_out, inst); + + cfg->instances = evas_list_append(cfg->instances, inst); + return gcc; +} + +static void +_gc_shutdown(E_Gadcon_Client *gcc) +{ + Instance *inst; + + inst = gcc->data; + cfg->instances = evas_list_remove(cfg->instances, inst); + if (inst->timer) ecore_timer_del(inst->timer); + if (inst->o_net) + { + evas_object_event_callback_del(inst->o_net, EVAS_CALLBACK_MOUSE_DOWN, + _cb_mouse_down); + evas_object_event_callback_del(inst->o_net, EVAS_CALLBACK_MOUSE_IN, + _cb_mouse_in); + evas_object_event_callback_del(inst->o_net, EVAS_CALLBACK_MOUSE_OUT, + _cb_mouse_out); + evas_object_del(inst->o_net); + } + E_FREE(inst); +} + +static void +_gc_orient(E_Gadcon_Client *gcc) +{ + e_gadcon_client_aspect_set(gcc, 16, 16); + e_gadcon_client_min_size_set(gcc, 16, 16); +} + +static char * +_gc_label(void) +{ + return _("Net"); +} + +static Evas_Object * +_gc_icon(Evas *evas) +{ + Evas_Object *o; + char buf[PATH_MAX]; + + snprintf(buf, sizeof(buf), "%s/module.edj", e_module_dir_get(cfg->mod)); + o = edje_object_add(evas); + edje_object_file_set(o, buf, "icon"); + return o; +} + +EAPI void +_gc_register(void) +{ + e_gadcon_provider_register(&_gc_class); +} + +EAPI void +_gc_unregister(void) +{ + e_gadcon_provider_unregister(&_gc_class); +} diff --git a/src/e_mod_gadcon.h b/src/e_mod_gadcon.h new file mode 100644 index 0000000..a620b6d --- /dev/null +++ b/src/e_mod_gadcon.h @@ -0,0 +1,13 @@ +#ifndef E_MOD_GADCON_H +#define E_MOD_GADCON_H + +static E_Gadcon_Client *_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style); +static void _gc_shutdown(E_Gadcon_Client *gcc); +static void _gc_orient(E_Gadcon_Client *gcc); +static char *_gc_label(void); +static Evas_Object *_gc_icon(Evas *evas); + +EAPI void _gc_register(void); +EAPI void _gc_unregister(void); + +#endif diff --git a/src/e_mod_main.c b/src/e_mod_main.c new file mode 100644 index 0000000..dff02c7 --- /dev/null +++ b/src/e_mod_main.c @@ -0,0 +1,96 @@ +#include +#include "e_mod_main.h" +#include "e_mod_gadcon.h" +#include "e_mod_config.h" + +static E_Config_DD *conf_edd = NULL; +static E_Config_DD *item_edd = NULL; +Config *cfg = NULL; + +EAPI E_Module_Api e_modapi = +{ + E_MODULE_API_VERSION, "Net" +}; + +EAPI void * +e_modapi_init(E_Module *m) +{ + item_edd = E_CONFIG_DD_NEW("Config_Item", Config_Item); + E_CONFIG_VAL(item_edd, Config_Item, id, STR); + E_CONFIG_VAL(item_edd, Config_Item, device, STR); + E_CONFIG_VAL(item_edd, Config_Item, poll_time, DOUBLE); + + conf_edd = E_CONFIG_DD_NEW("Config", Config); + E_CONFIG_LIST(conf_edd, Config, items, item_edd); + + cfg = e_config_domain_load("module.net", conf_edd); + if (!cfg) + { + Config_Item *ci; + + cfg = E_NEW(Config, 1); + ci = _config_item_get("0"); + } + cfg->mod = m; + _gc_register(); + return m; +} + +EAPI int +e_modapi_shutdown(E_Module *m) +{ + cfg->mod = NULL; + _gc_unregister(); + + if (cfg->cfd) e_object_del(E_OBJECT(cfg->cfd)); + if (cfg->menu) + { + e_menu_post_deactivate_callback_set(cfg->menu, NULL, NULL); + e_object_del(E_OBJECT(cfg->menu)); + cfg->menu = NULL; + } + + while (cfg->items) + { + Config_Item *ci; + + ci = cfg->items->data; + if (ci->id) evas_stringshare_del(ci->id); + if (ci->device) evas_stringshare_del(ci->device); + cfg->items = evas_list_remove_list(cfg->items, cfg->items); + E_FREE(ci); + } + + E_FREE(cfg); + E_CONFIG_DD_FREE(item_edd); + E_CONFIG_DD_FREE(conf_edd); + return 1; +} + +EAPI int +e_modapi_save(E_Module *m) +{ + Evas_List *l; + + for (l = cfg->instances; l; l = l->next) + { + Instance *inst; + Config_Item *ci; + + inst = l->data; + ci = _config_item_get(inst->gcc->id); + if (ci->id) evas_stringshare_del(ci->id); + ci->id = evas_stringshare_add(inst->gcc->id); + } + + e_config_domain_save("module.net", conf_edd, cfg); + return 1; +} + +EAPI int +e_modapi_about(E_Module *m) +{ + e_module_dialog_show(m, _("Network Monitor Module"), + _("Module to monitor network traffic")); + return 1; +} diff --git a/src/e_mod_main.h b/src/e_mod_main.h new file mode 100644 index 0000000..1e1bfba --- /dev/null +++ b/src/e_mod_main.h @@ -0,0 +1,29 @@ +#ifndef E_MOD_MAIN_H +#define E_MOD_MAIN_H + +typedef struct _Instance Instance; +typedef struct _Popup Popup; + +struct _Instance +{ + E_Gadcon_Client *gcc; + Evas_Object *o_net; + Ecore_Timer *timer; + Popup *popup; + unsigned long in, out; +}; + +struct _Popup +{ + E_Popup *win; + Evas_Object *o_bg; +}; + +EAPI extern E_Module_Api e_modapi; + +EAPI void *e_modapi_init(E_Module *m); +EAPI int e_modapi_shutdown(E_Module *m); +EAPI int e_modapi_save(E_Module *m); +EAPI int e_modapi_about(E_Module *m); + +#endif diff --git a/src/e_mod_net.c b/src/e_mod_net.c new file mode 100644 index 0000000..ccb92a3 --- /dev/null +++ b/src/e_mod_net.c @@ -0,0 +1,245 @@ +#include +#include "e_mod_main.h" +#include "e_mod_net.h" +#include "e_mod_config.h" +#include "e_mod_configure.h" + +static void _cb_post(void *data, E_Menu *m); +static void _cb_configure(void *data, E_Menu *m, E_Menu_Item *mi); + +EAPI int +_cb_poll(void *data) +{ + Instance *inst; + Config_Item *ci; + FILE *f; + char buf[256], dev[64], tmp[100]; + int found = 0; + long bin, bout; + unsigned long in, out, dummy = 0; + + inst = data; + ci = _config_item_get(inst->gcc->id); + + f = fopen("/proc/net/dev", "r"); + if (!f) return 1; + + while (fgets(buf, 256, f)) + { + int i = 0; + + for (; buf[i] != 0; i++) + if (buf[i] == ':') buf[i] = ' '; + + if (sscanf (buf, "%s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu " + "%lu %lu %lu %lu\n", dev, &in, &dummy, &dummy, + &dummy, &dummy, &dummy, &dummy, &dummy, &out, &dummy, + &dummy, &dummy, &dummy, &dummy, &dummy, &dummy) < 17) + continue; + + if (!strcmp(dev, ci->device)) found = 1; + if (found) break; + } + fclose(f); + if (!found) return 1; + + bin = in - inst->in; + bout = out - inst->out; + bin = bin / ci->poll_time; + bout = bout / ci->poll_time; + inst->in = in; + inst->out = out; + + if (bin <= 0) + edje_object_signal_emit(inst->o_net, "e,state,receive,idle", "e"); + else + edje_object_signal_emit(inst->o_net, "e,state,receive,active", "e"); + if (bout <= 0) + edje_object_signal_emit(inst->o_net, "e,state,send,idle", "e"); + else + edje_object_signal_emit(inst->o_net, "e,state,send,active", "e"); + + if (!inst->popup) return 1; + + if (bin > 1048576) + snprintf(tmp, sizeof(tmp), "Rx: %ld Mb", (bin / 1048576)); + else if ((bin > 1024) && (bin < 1048576)) + snprintf(tmp, sizeof(tmp), "Rx: %ld Kb", (bin / 1024)); + else + snprintf(tmp, sizeof(tmp), "Rx: %ld B", bin); + edje_object_part_text_set(inst->popup->o_bg, "e.text.recv", tmp); + + if (bout > 1048576) + snprintf(tmp, sizeof(tmp), "Tx: %ld Mb", (bout / 1048576)); + else if ((bout > 1024) && (bout < 1048576)) + snprintf(tmp, sizeof(tmp), "Tx: %ld Kb", (bout / 1024)); + else + snprintf(tmp, sizeof(tmp), "Tx: %ld B", bout); + edje_object_part_text_set(inst->popup->o_bg, "e.text.send", tmp); + + return 1; +} + +EAPI void +_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event) +{ + Instance *inst; + Evas_Event_Mouse_Down *ev; + + inst = data; + ev = event; + if ((ev->button == 3) && (!cfg->menu)) + { + E_Menu *mn; + E_Menu_Item *mi; + int x, y; + + mn = e_menu_new(); + e_menu_post_deactivate_callback_set(mn, _cb_post, inst); + cfg->menu = mn; + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Configuration")); + e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration"); + e_menu_item_callback_set(mi, _cb_configure, inst); + + mi = e_menu_item_new(mn); + e_menu_item_separator_set(mi, 1); + + e_gadcon_client_util_menu_items_append(inst->gcc, mn, 0); + e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &x, &y, + NULL, NULL); + e_menu_activate_mouse(mn, + e_util_zone_current_get(e_manager_current_get()), + x + ev->output.x, y + ev->output.y, 1, 1, + E_MENU_POP_DIRECTION_DOWN, ev->timestamp); + e_util_evas_fake_mouse_up_later(inst->gcc->gadcon->evas, ev->button); + } +} + +EAPI void +_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event) +{ + Instance *inst; + Config_Item *ci; + E_Container *con; + Evas_Object *bg, *box, *icon, *label; + Evas_Coord x, y, w, h; + Evas_Coord ox, oy, ow, oh; + int top, wx, wy, ww, wh; + char buf[PATH_MAX]; + + inst = data; + if (inst->popup) return; + + inst->popup = E_NEW(Popup, 1); + ci = _config_item_get(inst->gcc->id); + + snprintf(buf, sizeof(buf), "%s/net.edj", e_module_dir_get(cfg->mod)); + evas_object_geometry_get(inst->o_net, &ox, &oy, &ow, &oh); + + con = e_container_current_get(e_manager_current_get()); + inst->popup->win = e_popup_new(e_zone_current_get(con), 0, 0, 0, 0); + bg = edje_object_add(inst->popup->win->evas); + inst->popup->o_bg = bg; + if (!e_theme_edje_object_set(bg, "base/theme/modules", + "modules/net/popup")) + edje_object_file_set(bg, buf, "modules/net/popup"); + snprintf(buf, sizeof(buf), _("Device - %s"), ci->device); + edje_object_part_text_set(bg, "e.text.title", buf); + evas_object_show(bg); + + snprintf(buf, sizeof(buf), "Rx: 0 B"); + edje_object_part_text_set(bg, "e.text.recv", buf); + snprintf(buf, sizeof(buf), "Tx: 0 B"); + edje_object_part_text_set(bg, "e.text.send", buf); + + edje_object_size_min_calc(bg, &ww, &wh); + evas_object_move(bg, 0, 0); + evas_object_resize(bg, ww, wh); + + e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &x, &y, &w, &h); + wx = x + ox; + wy = y + oy; + if ((wy - con->y) < (con->h / 2)) + top = 0; + else + top = 1; + + switch (inst->gcc->gadcon->orient) + { + case E_GADCON_ORIENT_CORNER_LT: + wx += ox + ow; + if (top) wy += (oh - 5); + break; + case E_GADCON_ORIENT_LEFT: + case E_GADCON_ORIENT_CORNER_LB: + wx += ox + ow; + wy = oy; + break; + case E_GADCON_ORIENT_CORNER_RT: + wx -= (ww - ((x + w) - (ox + ow)) + 5); + if (top) wy += oh; + break; + case E_GADCON_ORIENT_RIGHT: + wx -= (ww - ((x + w) - (ox + ow)) + 5); + if (top) wy -= (oh - 5); + break; + case E_GADCON_ORIENT_CORNER_RB: + wx -= (ww - ((x + w) - (ox + ow)) + 5); + wy = oy; + break; + case E_GADCON_ORIENT_TOP: + case E_GADCON_ORIENT_CORNER_TL: + case E_GADCON_ORIENT_CORNER_TR: + wx += ((ow - ww) / 2); + if (wx < x) wx = x; + if ((wx + ww) > (x + w)) wx = ((x + w) - ww); + if (!top) wy += oh; + break; + case E_GADCON_ORIENT_BOTTOM: + case E_GADCON_ORIENT_CORNER_BL: + case E_GADCON_ORIENT_CORNER_BR: + wx += ((ow - ww) / 2); + if (wx < x) wx = x; + if ((wx + ww) > (x + w)) wx = ((x + w) - ww); + wy = (oy - wh); + break; + default: + break; + } + e_popup_move_resize(inst->popup->win, wx, wy, ww, wh); + e_popup_show(inst->popup->win); +} + +EAPI void +_cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, void *event) +{ + Instance *inst; + + inst = data; + if (!inst->popup) return; + evas_object_del(inst->popup->o_bg); + e_object_del(E_OBJECT(inst->popup->win)); + E_FREE(inst->popup); +} + +static void +_cb_post(void *data, E_Menu *m) +{ + if (!cfg->menu) return; + e_menu_post_deactivate_callback_set(cfg->menu, NULL, NULL); + e_object_del(E_OBJECT(cfg->menu)); + cfg->menu = NULL; +} + +static void +_cb_configure(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Instance *inst; + Config_Item *ci; + + inst = data; + ci = _config_item_get(inst->gcc->id); + _configure_net_module(ci); +} diff --git a/src/e_mod_net.h b/src/e_mod_net.h new file mode 100644 index 0000000..8c72766 --- /dev/null +++ b/src/e_mod_net.h @@ -0,0 +1,9 @@ +#ifndef E_MOD_NET_H +#define E_MOD_NET_H + +EAPI int _cb_poll(void *data); +EAPI void _cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event); +EAPI void _cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event); +EAPI void _cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, void *event); + +#endif diff --git a/tx_00.png b/tx_00.png deleted file mode 100644 index 6847583d0fc5dafeca51fbbf919bba8f3b1e8765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99 zcmeAS@N?&q;$mQ6;PUiv2?EkNKy1Ll1|+{|&36P++MX_sAr-gY9yDYG@(wNd>YvNS ezW~U@0Q-0X4Hy^`4^5o`lJa!*b6Mw<&;$U-fKb7-5`NtPS(MPf>a>uP0LO0Woo!|(|Q(l)h^s%-QE)zs&B+E-zLYU%+S;jbFI zOua=R)5NWK$yA9zH1*h&u>LJl8j|{7>#sm2#6J+RhD3psL-JV4>#tPOVCtuu#FH{y z9>U(T>W5#I5x8=SMiw!L%<~T**Y8%$UTE5~ykrkkxyU92sUE58Z!95EAXX=9?x@NT zAykD}*{Y_WSgKM4szT0V%M=VdO+Ah(Q7~*Vb;n*TJ`1oyVN(vN2_5O^)^t&htB^RP zbSnf2R1c}&{#eXiq|gb8ak2Vj?(&f)h3sePq58dZ?X3Z^`ia_J9$v9sY{20yjnD{L z!{0m`(TQPOb+V4BtO`{pt<_14^N^fP1oDefl~+6(N(BA{}yMIn2aH48?KEgpUW X=iPKP>%q6k00000NkvXXu0mjf5KQu< diff --git a/tx_02.png b/tx_02.png deleted file mode 100644 index e1df5d1919b689af2889e4085946cfa286f001f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 812 zcmV+{1JnG8P)d#~9DJU}``^u#;G%5;gmhtWH@sKdU%wkDGt4Aa%wP(^4*|YReRcRk>A02~>L$c74mw0fa?SBV>;_)|3I&|s^?$=S zC|Luc8kPFn_=})ba$#g>6J>|=6ht?Lh$7L$Su_^sXZA^p4nZPklsd!rktF|0 zMo}4uQ`VbJVs6a?<626-0gKUZo#ZKNLQvEsTEZFut4XP6Jz)W|kcb_w8!U~?wBY|? z%F>b>BF99BI1)Xh0kTl?f`u_S6So(FkA*@WX@RUt;EA){*Of#+>gFX~MuT;t$UfCm zlxQfbE5Ph5A*pwFND5o4yNiWKjP}X@=nxc(RIAR2Ntf56F%C#wOQC0>Fd9hSl9&{B zNVg7I1)mHLOBb#XSOHhGPFgy|oJlAPY~`nZU3br&#W>^;DHER8LbUjug$a!v(xlXF zF$!(5MPl-iye{u^F^&r|)plhT?slHM2}wr7*oy*w{NfanK(rFF7%d&*52O+J=^jm- zvfBaAIP8!-A;q;3EV~nd_w7N92J56!+wrvo*$Tl-_Kai5io~r>lSCuY76UO7Jv*dL zhrHH1bL`!Jd~B)^KV-_wf%zKp`Ki$hQ(KCXvIp-n0w$$}ggA1c41g8TP%{W$!6 zLa*U`hlOWF{^~!Kv0{G?XG6rDkDq#;4<|wpu3vxSbnr42oX5Ji9%Gw;$nDh2na66z z9Tc2F@z*st7cR4Wz}DaOnXx7y@mN{1oUQ3B?jD3J@tNZt@85O3XN&|yZs(|5#oCq` zxNKM@3$DcZXVu+zJ%h=RT|g{23c;By02Tr$Asgy>l|vA08lxE^#fc!8Aa|+3c^#oF zAq9*9I3^g6_5;VD;3#e^Ki758EQrrULQqTB1m&S*<&|DnxUc(l#VY~%4B{1k#vVak zO0BmR>@_hmb(x^I`z^698Bl)*>fVtN*crp}WzEywOqq|yFgKDmCF?muA`bX6lpXF@ zI6{w+GblEagB>3lL$tjHN-67ml>DqD3SH^&Si`b-N#a2P3Cb#Ww(U(SH6CllMcJot zIS4h#7;*87bYi97K*#_o%!#otrK)iX;8@d#Xy~4EvnL7IC1gXS%uC~{nPP!fk8MFc z4w)D>M2s=Yxnkmz%Z!tuI6SF2&n?$7SSXrgbdpJ=T+e#T;@5EI^qu_B{v!MV<_Kl_9)r)vj9#j$k9BD3$IJ0y@@8C!krv z94sU|Bwz~5I>y?@nm)uf;-KA>7YPfL>R(oZiDo1`w(Uc@+ApDD^y~|b=5^d-o6M3a zS-T8@6A87Ht-PA++?`QeO^i&77&+Erh*F2=S%{JU<$YHmLn%q+P-NuyhfWl>3_YN>hH|K$z{ZGD@3QmedRyd(04o zPY7zwzsj1(em6VQ!1#E0Fk~w(GRN6w7QWjav>yczhI|wkvx1v@61EW{gFQqjLD1O_ z^sZz@;5OHjL?IDnmJxwoX|PyNGXZ&pA-uM)u3Lk0%Xg}vOdpXN!6{iEFeHD9z*l^S z9cVUc^PXm`35byn9j#)E3V6qPdH!Z`b}oL|;Bb{^`u0{Ct@Vahfj~0_#rvLbu rAwqR2G+Tf`fE}e#?7l6T!1VSXN&|u9DXFO=00000NkvXXu0mjfhkw-X diff --git a/tx_04.png b/tx_04.png deleted file mode 100644 index 46cfa3ff88e8693a314cae98694133ebe2b702ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1226 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 b2od-X-WwD(&l>2G00000NkvXXu0mjf5MrX2