From 53bdf254bdb5d960b3aed1a2ea66c3b38b3853b8 Mon Sep 17 00:00:00 2001 From: Dave Andreoli Date: Tue, 21 Apr 2020 11:49:02 +0200 Subject: [PATCH] Edgar: switch to meson ...still not working with recent e, that changed the way modules are loaded --- .gitignore | 60 +- COPYING.LESSER | 165 ---- GADGETS/audio/Makefile | 36 - GADGETS/calculator/Makefile | 36 - GADGETS/cpu/Makefile | 36 - GADGETS/dropbox/Makefile | 36 - GADGETS/led_clock/Makefile | 36 - GADGETS/mem/Makefile | 36 - GADGETS/netspeed/Makefile | 36 - INSTALL | 246 +---- Makefile.am | 25 - README | 24 +- autogen.sh | 16 - configure.ac | 84 -- {GADGETS => gadgets}/audio/__init__.py | 0 {GADGETS => gadgets}/audio/audio.edc | 0 {GADGETS => gadgets}/audio/images/cover.png | Bin .../audio/images/icon_mixer.png | Bin .../audio/images/icon_next.png | Bin .../audio/images/icon_pause.png | Bin .../audio/images/icon_play.png | Bin .../audio/images/icon_prev.png | Bin .../audio/images/inset_round_hilight.png | Bin .../audio/images/inset_round_shading.png | Bin .../audio/images/inset_round_shadow.png | Bin .../audio/images/led_dot_white.png | Bin {GADGETS => gadgets}/audio/images/speaker.png | Bin gadgets/audio/meson.build | 30 + {GADGETS => gadgets}/calculator/__init__.py | 0 .../calculator/calculator.edc | 0 .../calculator/fonts/Vera.ttf | Bin {GADGETS => gadgets}/calculator/images/0.png | Bin {GADGETS => gadgets}/calculator/images/1.png | Bin {GADGETS => gadgets}/calculator/images/2.png | Bin {GADGETS => gadgets}/calculator/images/3.png | Bin {GADGETS => gadgets}/calculator/images/4.png | Bin {GADGETS => gadgets}/calculator/images/5.png | Bin {GADGETS => gadgets}/calculator/images/6.png | Bin {GADGETS => gadgets}/calculator/images/7.png | Bin {GADGETS => gadgets}/calculator/images/8.png | Bin {GADGETS => gadgets}/calculator/images/9.png | Bin {GADGETS => gadgets}/calculator/images/bg.png | Bin .../calculator/images/canc.png | Bin .../calculator/images/divide.png | Bin .../calculator/images/m-c.png | Bin .../calculator/images/m-minus.png | Bin .../calculator/images/m-plus.png | Bin .../calculator/images/m-r.png | Bin .../calculator/images/minus.png | Bin .../calculator/images/multiply.png | Bin .../calculator/images/plus.png | Bin .../calculator/images/point.png | Bin .../calculator/images/result.png | Bin gadgets/calculator/meson.build | 21 + {GADGETS => gadgets}/cpu/__init__.py | 0 {GADGETS => gadgets}/cpu/cpu.edc | 0 {GADGETS => gadgets}/cpu/images/bar_bg.png | Bin {GADGETS => gadgets}/cpu/images/cpu.png | Bin {GADGETS => gadgets}/cpu/images/green_on.png | Bin {GADGETS => gadgets}/cpu/images/mockup.xcf | Bin {GADGETS => gadgets}/cpu/images/red_on.png | Bin {GADGETS => gadgets}/cpu/images/yellow_on.png | Bin gadgets/cpu/meson.build | 21 + {GADGETS => gadgets}/dropbox/__init__.py | 0 .../dropbox/docs/dropboxd-protocol | 0 {GADGETS => gadgets}/dropbox/dropbox.edc | 0 .../dropbox/images/dropbox.png | Bin .../dropbox/images/dropbox_gray.png | Bin .../dropbox/images/emblem-syncing.png | Bin .../dropbox/images/emblem-unsyncable.png | Bin .../dropbox/images/emblem-uptodate.png | Bin gadgets/dropbox/meson.build | 21 + {GADGETS => gadgets}/led_clock/__init__.py | 0 {GADGETS => gadgets}/led_clock/images/bg.png | Bin .../led_clock/images/bg_orig.png | Bin .../led_clock/images/icon.png | Bin .../led_clock/images/led_blu.png | Bin .../led_clock/images/led_green.png | Bin .../led_clock/images/led_off.png | Bin .../led_clock/images/led_red.png | Bin .../led_clock/images/template.png | Bin {GADGETS => gadgets}/led_clock/led_clock.edc | 0 gadgets/led_clock/meson.build | 21 + {GADGETS => gadgets}/mem/__init__.py | 0 {GADGETS => gadgets}/mem/images/bar_bg.png | Bin {GADGETS => gadgets}/mem/images/blu_on.png | Bin {GADGETS => gadgets}/mem/images/mem.png | Bin {GADGETS => gadgets}/mem/mem.edc | 0 gadgets/mem/meson.build | 21 + {GADGETS => gadgets}/netspeed/__init__.py | 0 {GADGETS => gadgets}/netspeed/images/base.png | Bin {GADGETS => gadgets}/netspeed/images/over.png | Bin {GADGETS => gadgets}/netspeed/images/rx.png | Bin {GADGETS => gadgets}/netspeed/images/tx.png | Bin gadgets/netspeed/meson.build | 21 + {GADGETS => gadgets}/netspeed/netspeed.edc | 0 m4/ac_attribute.m4 | 14 - m4/ax_python_devel.m4 | 324 ------- m4/ax_python_module.m4 | 50 - meson.build | 72 ++ module.desktop.in => module.desktop | 0 python/Makefile.am | 6 - src/Makefile.am | 22 - src/OLD_e_mod_config.c | 361 -------- src/OLD_e_mod_edgar.c | 869 ------------------ src/OLD_e_mod_edgar.h | 25 - src/OLD_e_mod_guardian.c | 217 ----- src/OLD_e_mod_guardian.h | 24 - src/e_mod_edgar.c | 8 +- src/efl.eo_api.h | 44 +- src/meson.build | 12 + 111 files changed, 286 insertions(+), 2790 deletions(-) delete mode 100644 COPYING.LESSER delete mode 100644 GADGETS/audio/Makefile delete mode 100644 GADGETS/calculator/Makefile delete mode 100644 GADGETS/cpu/Makefile delete mode 100644 GADGETS/dropbox/Makefile delete mode 100644 GADGETS/led_clock/Makefile delete mode 100644 GADGETS/mem/Makefile delete mode 100644 GADGETS/netspeed/Makefile delete mode 100644 Makefile.am delete mode 100755 autogen.sh delete mode 100644 configure.ac rename {GADGETS => gadgets}/audio/__init__.py (100%) rename {GADGETS => gadgets}/audio/audio.edc (100%) rename {GADGETS => gadgets}/audio/images/cover.png (100%) rename {GADGETS => gadgets}/audio/images/icon_mixer.png (100%) rename {GADGETS => gadgets}/audio/images/icon_next.png (100%) rename {GADGETS => gadgets}/audio/images/icon_pause.png (100%) rename {GADGETS => gadgets}/audio/images/icon_play.png (100%) rename {GADGETS => gadgets}/audio/images/icon_prev.png (100%) rename {GADGETS => gadgets}/audio/images/inset_round_hilight.png (100%) rename {GADGETS => gadgets}/audio/images/inset_round_shading.png (100%) rename {GADGETS => gadgets}/audio/images/inset_round_shadow.png (100%) rename {GADGETS => gadgets}/audio/images/led_dot_white.png (100%) rename {GADGETS => gadgets}/audio/images/speaker.png (100%) create mode 100644 gadgets/audio/meson.build rename {GADGETS => gadgets}/calculator/__init__.py (100%) rename {GADGETS => gadgets}/calculator/calculator.edc (100%) rename {GADGETS => gadgets}/calculator/fonts/Vera.ttf (100%) rename {GADGETS => gadgets}/calculator/images/0.png (100%) rename {GADGETS => gadgets}/calculator/images/1.png (100%) rename {GADGETS => gadgets}/calculator/images/2.png (100%) rename {GADGETS => gadgets}/calculator/images/3.png (100%) rename {GADGETS => gadgets}/calculator/images/4.png (100%) rename {GADGETS => gadgets}/calculator/images/5.png (100%) rename {GADGETS => gadgets}/calculator/images/6.png (100%) rename {GADGETS => gadgets}/calculator/images/7.png (100%) rename {GADGETS => gadgets}/calculator/images/8.png (100%) rename {GADGETS => gadgets}/calculator/images/9.png (100%) rename {GADGETS => gadgets}/calculator/images/bg.png (100%) rename {GADGETS => gadgets}/calculator/images/canc.png (100%) rename {GADGETS => gadgets}/calculator/images/divide.png (100%) rename {GADGETS => gadgets}/calculator/images/m-c.png (100%) rename {GADGETS => gadgets}/calculator/images/m-minus.png (100%) rename {GADGETS => gadgets}/calculator/images/m-plus.png (100%) rename {GADGETS => gadgets}/calculator/images/m-r.png (100%) rename {GADGETS => gadgets}/calculator/images/minus.png (100%) rename {GADGETS => gadgets}/calculator/images/multiply.png (100%) rename {GADGETS => gadgets}/calculator/images/plus.png (100%) rename {GADGETS => gadgets}/calculator/images/point.png (100%) rename {GADGETS => gadgets}/calculator/images/result.png (100%) create mode 100644 gadgets/calculator/meson.build rename {GADGETS => gadgets}/cpu/__init__.py (100%) rename {GADGETS => gadgets}/cpu/cpu.edc (100%) rename {GADGETS => gadgets}/cpu/images/bar_bg.png (100%) rename {GADGETS => gadgets}/cpu/images/cpu.png (100%) rename {GADGETS => gadgets}/cpu/images/green_on.png (100%) rename {GADGETS => gadgets}/cpu/images/mockup.xcf (100%) rename {GADGETS => gadgets}/cpu/images/red_on.png (100%) rename {GADGETS => gadgets}/cpu/images/yellow_on.png (100%) create mode 100644 gadgets/cpu/meson.build rename {GADGETS => gadgets}/dropbox/__init__.py (100%) rename {GADGETS => gadgets}/dropbox/docs/dropboxd-protocol (100%) rename {GADGETS => gadgets}/dropbox/dropbox.edc (100%) rename {GADGETS => gadgets}/dropbox/images/dropbox.png (100%) rename {GADGETS => gadgets}/dropbox/images/dropbox_gray.png (100%) rename {GADGETS => gadgets}/dropbox/images/emblem-syncing.png (100%) rename {GADGETS => gadgets}/dropbox/images/emblem-unsyncable.png (100%) rename {GADGETS => gadgets}/dropbox/images/emblem-uptodate.png (100%) create mode 100644 gadgets/dropbox/meson.build rename {GADGETS => gadgets}/led_clock/__init__.py (100%) rename {GADGETS => gadgets}/led_clock/images/bg.png (100%) rename {GADGETS => gadgets}/led_clock/images/bg_orig.png (100%) rename {GADGETS => gadgets}/led_clock/images/icon.png (100%) rename {GADGETS => gadgets}/led_clock/images/led_blu.png (100%) rename {GADGETS => gadgets}/led_clock/images/led_green.png (100%) rename {GADGETS => gadgets}/led_clock/images/led_off.png (100%) rename {GADGETS => gadgets}/led_clock/images/led_red.png (100%) rename {GADGETS => gadgets}/led_clock/images/template.png (100%) rename {GADGETS => gadgets}/led_clock/led_clock.edc (100%) create mode 100644 gadgets/led_clock/meson.build rename {GADGETS => gadgets}/mem/__init__.py (100%) rename {GADGETS => gadgets}/mem/images/bar_bg.png (100%) rename {GADGETS => gadgets}/mem/images/blu_on.png (100%) rename {GADGETS => gadgets}/mem/images/mem.png (100%) rename {GADGETS => gadgets}/mem/mem.edc (100%) create mode 100644 gadgets/mem/meson.build rename {GADGETS => gadgets}/netspeed/__init__.py (100%) rename {GADGETS => gadgets}/netspeed/images/base.png (100%) rename {GADGETS => gadgets}/netspeed/images/over.png (100%) rename {GADGETS => gadgets}/netspeed/images/rx.png (100%) rename {GADGETS => gadgets}/netspeed/images/tx.png (100%) create mode 100644 gadgets/netspeed/meson.build rename {GADGETS => gadgets}/netspeed/netspeed.edc (100%) delete mode 100644 m4/ac_attribute.m4 delete mode 100644 m4/ax_python_devel.m4 delete mode 100644 m4/ax_python_module.m4 create mode 100644 meson.build rename module.desktop.in => module.desktop (100%) delete mode 100644 python/Makefile.am delete mode 100644 src/Makefile.am delete mode 100644 src/OLD_e_mod_config.c delete mode 100644 src/OLD_e_mod_edgar.c delete mode 100644 src/OLD_e_mod_edgar.h delete mode 100644 src/OLD_e_mod_guardian.c delete mode 100644 src/OLD_e_mod_guardian.h create mode 100644 src/meson.build diff --git a/.gitignore b/.gitignore index e50db78..567609b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,59 +1 @@ -# Object files -*.o -*.ko -*.obj -*.elf - -# Libraries -*.lib -*.a - -# Shared objects (inc. Windows DLLs) -*.dll -*.so -*.so.* -*.dylib - -# Executables -*.exe -*.out -*.app -*.i*86 -*.x86_64 -*.hex - -*~ -*.edj -*.pyc -/Makefile -/src/Makefile -/python/Makefile -Makefile.in -*.lo -config.h -config.h.in -configure -/compile -/config.cache -/config.guess -/config.log -/config.rpath -/config.status -/config.sub -aclocal.m4 -autom4te.cache/ -depcomp -install-sh -libtool -ltmain.sh -m4/libtool.m4 -m4/ltoptions.m4 -m4/ltsugar.m4 -m4/ltversion.m4 -m4/lt~obsolete.m4 -missing -module.desktop -src/.deps/ -src/.libs/ -src/module.la -stamp-h1 +build/ diff --git a/COPYING.LESSER b/COPYING.LESSER deleted file mode 100644 index 1604322..0000000 --- a/COPYING.LESSER +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/GADGETS/audio/Makefile b/GADGETS/audio/Makefile deleted file mode 100644 index c6e7b10..0000000 --- a/GADGETS/audio/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# Simple Makefile for Enlightenment (edgar) gadgets - -# gadget specific config -GADGET_NAME = audio -EXTRA_FILES = - - -# nothing should be changed below this point -GADGET_FILES = __init__.pyc $(GADGET_NAME).edj -prefix = $(shell pkg-config --variable=libdir enlightenment) -gadget_folder = ${prefix}/enlightenment/gadgets/$(GADGET_NAME) - -.PHONY: all install clean - -all: $(GADGET_FILES) $(EXTRA_FILES) - -install: all - @mkdir -p -v ${gadget_folder} - @cp --preserve=mode -v $(GADGET_FILES) $(EXTRA_FILES) $(gadget_folder) - -uninstall: all - @rm -rfv ${gadget_folder} - -clean: - @rm -fv *.edj *.pyc - - -EDJE_CC = edje_cc -EDJE_FLAGS = -v -id images/ -fd fonts/ - -%.edj: %.edc images/* - $(EDJE_CC) $(EDJE_FLAGS) $< - @chmod -v og+r $@ - -%.pyc: %.py - python3 -c "from py_compile import compile; compile('$<', '$@')" diff --git a/GADGETS/calculator/Makefile b/GADGETS/calculator/Makefile deleted file mode 100644 index 3a38ebb..0000000 --- a/GADGETS/calculator/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# Simple Makefile for Enlightenment (edgar) gadgets - -# gadget specific config -GADGET_NAME = calculator -EXTRA_FILES = - - -# nothing should be changed below this point -GADGET_FILES = __init__.pyc $(GADGET_NAME).edj -prefix = $(shell pkg-config --variable=libdir enlightenment) -gadget_folder = ${prefix}/enlightenment/gadgets/$(GADGET_NAME) - -.PHONY: all install clean - -all: $(GADGET_FILES) $(EXTRA_FILES) - -install: all - @mkdir -p -v ${gadget_folder} - @cp --preserve=mode -v $(GADGET_FILES) $(EXTRA_FILES) $(gadget_folder) - -uninstall: all - @rm -rfv ${gadget_folder} - -clean: - @rm -fv *.edj *.pyc - - -EDJE_CC = edje_cc -EDJE_FLAGS = -v -id images/ -fd fonts/ - -%.edj: %.edc images/* - $(EDJE_CC) $(EDJE_FLAGS) $< - @chmod -v og+r $@ - -%.pyc: %.py - python3 -c "from py_compile import compile; compile('$<', '$@')" diff --git a/GADGETS/cpu/Makefile b/GADGETS/cpu/Makefile deleted file mode 100644 index 26d1f77..0000000 --- a/GADGETS/cpu/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# Simple Makefile for Enlightenment (edgar) gadgets - -# gadget specific config -GADGET_NAME = cpu -EXTRA_FILES = - - -# nothing should be changed below this point -GADGET_FILES = __init__.pyc $(GADGET_NAME).edj -prefix = $(shell pkg-config --variable=libdir enlightenment) -gadget_folder = ${prefix}/enlightenment/gadgets/$(GADGET_NAME) - -.PHONY: all install clean - -all: $(GADGET_FILES) $(EXTRA_FILES) - -install: all - @mkdir -p -v ${gadget_folder} - @cp --preserve=mode -v $(GADGET_FILES) $(EXTRA_FILES) $(gadget_folder) - -uninstall: all - @rm -rfv ${gadget_folder} - -clean: - @rm -fv *.edj *.pyc - - -EDJE_CC = edje_cc -EDJE_FLAGS = -v -id images/ -fd fonts/ - -%.edj: %.edc images/* - $(EDJE_CC) $(EDJE_FLAGS) $< - @chmod -v og+r $@ - -%.pyc: %.py - python3 -c "from py_compile import compile; compile('$<', '$@')" diff --git a/GADGETS/dropbox/Makefile b/GADGETS/dropbox/Makefile deleted file mode 100644 index 50b1f27..0000000 --- a/GADGETS/dropbox/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# Simple Makefile for Enlightenment (edgar) gadgets - -# gadget specific config -GADGET_NAME = dropbox -EXTRA_FILES = - - -# nothing should be changed below this point -GADGET_FILES = __init__.pyc $(GADGET_NAME).edj -prefix = $(shell pkg-config --variable=libdir enlightenment) -gadget_folder = ${prefix}/enlightenment/gadgets/$(GADGET_NAME) - -.PHONY: all install clean - -all: $(GADGET_FILES) $(EXTRA_FILES) - -install: all - @mkdir -p -v ${gadget_folder} - @cp --preserve=mode -v $(GADGET_FILES) $(EXTRA_FILES) $(gadget_folder) - -uninstall: all - @rm -rfv ${gadget_folder} - -clean: - @rm -fv *.edj *.pyc - - -EDJE_CC = edje_cc -EDJE_FLAGS = -v -id images/ -fd fonts/ - -%.edj: %.edc images/* - $(EDJE_CC) $(EDJE_FLAGS) $< - @chmod -v og+r $@ - -%.pyc: %.py - python3 -c "from py_compile import compile; compile('$<', '$@')" diff --git a/GADGETS/led_clock/Makefile b/GADGETS/led_clock/Makefile deleted file mode 100644 index 1001ca0..0000000 --- a/GADGETS/led_clock/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# Simple Makefile for Enlightenment (edgar) gadgets - -# gadget specific config -GADGET_NAME = led_clock -EXTRA_FILES = - - -# nothing should be changed below this point -GADGET_FILES = __init__.pyc $(GADGET_NAME).edj -prefix = $(shell pkg-config --variable=libdir enlightenment) -gadget_folder = ${prefix}/enlightenment/gadgets/$(GADGET_NAME) - -.PHONY: all install clean - -all: $(GADGET_FILES) $(EXTRA_FILES) - -install: all - @mkdir -p -v ${gadget_folder} - @cp --preserve=mode -v $(GADGET_FILES) $(EXTRA_FILES) $(gadget_folder) - -uninstall: all - @rm -rfv ${gadget_folder} - -clean: - @rm -fv *.edj *.pyc - - -EDJE_CC = edje_cc -EDJE_FLAGS = -v -id images/ -fd fonts/ - -%.edj: %.edc images/* - $(EDJE_CC) $(EDJE_FLAGS) $< - @chmod -v og+r $@ - -%.pyc: %.py - python3 -c "from py_compile import compile; compile('$<', '$@')" diff --git a/GADGETS/mem/Makefile b/GADGETS/mem/Makefile deleted file mode 100644 index 1d3957d..0000000 --- a/GADGETS/mem/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# Simple Makefile for Enlightenment (edgar) gadgets - -# gadget specific config -GADGET_NAME = mem -EXTRA_FILES = - - -# nothing should be changed below this point -GADGET_FILES = __init__.pyc $(GADGET_NAME).edj -prefix = $(shell pkg-config --variable=libdir enlightenment) -gadget_folder = ${prefix}/enlightenment/gadgets/$(GADGET_NAME) - -.PHONY: all install clean - -all: $(GADGET_FILES) $(EXTRA_FILES) - -install: all - @mkdir -p -v ${gadget_folder} - @cp --preserve=mode -v $(GADGET_FILES) $(EXTRA_FILES) $(gadget_folder) - -uninstall: all - @rm -rfv ${gadget_folder} - -clean: - @rm -fv *.edj *.pyc - - -EDJE_CC = edje_cc -EDJE_FLAGS = -v -id images/ -fd fonts/ - -%.edj: %.edc images/* - $(EDJE_CC) $(EDJE_FLAGS) $< - @chmod -v og+r $@ - -%.pyc: %.py - python3 -c "from py_compile import compile; compile('$<', '$@')" diff --git a/GADGETS/netspeed/Makefile b/GADGETS/netspeed/Makefile deleted file mode 100644 index 026eaea..0000000 --- a/GADGETS/netspeed/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# Simple Makefile for Enlightenment (edgar) gadgets - -# gadget specific config -GADGET_NAME = netspeed -EXTRA_FILES = - - -# nothing should be changed below this point -GADGET_FILES = __init__.pyc $(GADGET_NAME).edj -prefix = $(shell pkg-config --variable=libdir enlightenment) -gadget_folder = ${prefix}/enlightenment/gadgets/$(GADGET_NAME) - -.PHONY: all install clean - -all: $(GADGET_FILES) $(EXTRA_FILES) - -install: all - @mkdir -p -v ${gadget_folder} - @cp --preserve=mode -v $(GADGET_FILES) $(EXTRA_FILES) $(gadget_folder) - -uninstall: all - @rm -rfv ${gadget_folder} - -clean: - @rm -fv *.edj *.pyc - - -EDJE_CC = edje_cc -EDJE_FLAGS = -v -id images/ -fd fonts/ - -%.edj: %.edc images/* - $(EDJE_CC) $(EDJE_FLAGS) $< - @chmod -v og+r $@ - -%.pyc: %.py - python3 -c "from py_compile import compile; compile('$<', '$@')" diff --git a/INSTALL b/INSTALL index d3c5b40..fc64386 100644 --- a/INSTALL +++ b/INSTALL @@ -1,237 +1,23 @@ -Installation Instructions -************************* +To build using meson +==================== +meson build +cd build +ninja +ninja install -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006, 2007 Free Software Foundation, Inc. -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -Briefly, the shell commands `./configure; make; make install' should -configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for -instructions specific to this package. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. - - Running `configure' might take a while. While running, it prints - some messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - - 6. Often, you can also type `make uninstall' to remove the installed - files again. - -Compilers and Options -===================== - -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c99 CFLAGS=-g LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - -You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - With a non-GNU `make', it is safer to compile the package for one -architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before -reconfiguring for another architecture. - -Installation Names -================== - -By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults +Or without chdir ================ +meson build +ninja -C build +ninja -C build install -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. -Defining Variables -================== +Uninstall +========= +ninja -C build uninstall -Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). - -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf bug. Until the bug is fixed you can use this workaround: - - CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash - -`configure' Invocation -====================== - -`configure' recognizes the following options to control how it operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. +Clean build +=========== +rm -rf build/ diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index c7f07c4..0000000 --- a/Makefile.am +++ /dev/null @@ -1,25 +0,0 @@ -ACLOCAL_AMFLAGS = -I m4 -MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess config.h.in \ - config.sub configure depcomp install-sh ltmain.sh \ - missing module.desktop config.rpath mkinstalldirs - -SUBDIRS = src python - -EDJE_FLAGS = -v \ - -id $(top_srcdir) - -filesdir = $(datadir) -files_DATA = module.desktop e-module-edgar.edj - -EXTRA_DIST = module.desktop.in \ - module_icon.png \ - e-module-edgar.edc - -%.edj: %.edc - $(EDJE_CC) $(EDJE_FLAGS) $< $@ - -clean-local: - rm -rf e-module-edgar.edj module.desktop *~ - -uninstall: - rm -rf $(DESTDIR)$(datadir) diff --git a/README b/README index 9cf476d..7073db6 100644 --- a/README +++ b/README @@ -6,8 +6,8 @@ This module load python gadgets in Enlightenment. Requirements ============ -* Enlightenment >= 0.17 -* Python >= 3.2 (also the -dev package if your disto need them) +* Enlightenment >= 0.24 +* Python >= 3.5 (also the -dev package if your disto need them) * Python-EFL >= 1.11 (built for python3) * python3-dbus @@ -15,20 +15,11 @@ Requirements Install ======= -To install the edgar module use the standard: +To install the edgar and all the incluede gadgets just use: - ./autogen.sh - make - (sudo) make install - -If py3 is not the default on your system you need to specify the version: - - PYTHON_VERSION=3.x ./autogen.sh - - -Gadgets are in the GADGETS/ folder, to install them just use: - - (sudo) make install + meson build + ninja -C build + ninja -C build install The Audio gadget @@ -65,11 +56,10 @@ Usage tips: How to write your own gadget ============================ -I suggest to start from the ruler gadget, just copy it's folder and +I suggest to start from an existing gadget, just copy it's folder and start hacking, a minimal gadget require: base_folder/ (need to have the same name as the gadget) - Makefile (the provided makefile should work for you) __init__.py (the gadget python script) gadget.edc (the gadget edje file) images/ diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index 31ccda0..0000000 --- a/autogen.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -rm -rf autom4te.cache -rm -f aclocal.m4 ltmain.sh - -touch README - -echo "Running aclocal..." ; aclocal -I m4 $ACLOCAL_FLAGS || 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 - -if [ -z "$NOCONFIGURE" ]; then - ./configure "$@" -fi diff --git a/configure.ac b/configure.ac deleted file mode 100644 index 458a053..0000000 --- a/configure.ac +++ /dev/null @@ -1,84 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - -# get rid of that stupid cache mechanism -rm -f config.cache - -AC_INIT(edgar, 0.2.0, dave@gurumeditation.it) -AC_PREREQ(2.52) -AC_CONFIG_SRCDIR(configure.ac) -AC_CANONICAL_BUILD -AC_CANONICAL_HOST -AC_ISC_POSIX - -AM_INIT_AUTOMAKE(1.8) -AM_CONFIG_HEADER(config.h) - -AC_PROG_CC -AM_PROG_CC_STDC -AC_HEADER_STDC -AC_C_CONST -AC_C___ATTRIBUTE__ - -define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])dnl -define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl -AC_PROG_LIBTOOL - -#AM_GNU_GETTEXT([external]) -#AM_GNU_GETTEXT_VERSION(0.14) - -release=$(pkg-config --variable=release enlightenment) -MODULE_ARCH="$host_os-$host_cpu-$release" -AC_SUBST(MODULE_ARCH) -AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture") - -# Find edje_cc -PKG_CHECK_MODULES(EDJE, [edje >= 0.5.0]) -AC_ARG_WITH(edje-cc, - AC_HELP_STRING([--with-edje-cc=PATH], [specify a specific path to edje_cc]), - [ - v=$withval; - EDJE_CC=$v - ],[ - EDJE_CC=$(pkg-config --variable=prefix edje)/bin/edje_cc - ] -) -AC_SUBST(EDJE_CC) -AC_MSG_CHECKING([Which edje_cc to use]) -AC_MSG_RESULT(${EDJE_CC}) - -# Check enlightenment version >=0.18 -# (for e18 we manually define E_VERSION_MAJOR) -PKG_CHECK_MODULES(E, - [enlightenment >= 0.18 enlightenment < 0.19], - [AC_DEFINE([E_VERSION_MAJOR], [18], [Have exactly E18])], - [PKG_CHECK_MODULES(E, [enlightenment >= 0.19])] -) - -# Explicit link to Eo -PKG_CHECK_MODULES(EO, [eo]) - -# Check for python3 and required modules -# PKG_CHECK_MODULES(PYTHON3, [python3 >= 3.2]) -AX_PYTHON_DEVEL([>= '3.2']) -AC_SUBST([PYTHON]) - -AX_PYTHON3_MODULE(efl, "required") -AX_PYTHON3_MODULE(dbus, "required") - - - -datadir=$(pkg-config --variable=modules enlightenment)/${PACKAGE} - -AC_ARG_ENABLE(homedir-install, - AS_HELP_STRING([--enable-homedir-install], [Install module in homedir]), - [ datadir="${HOME}/.e/e/modules/${PACKAGE}" ] -) - - -AC_OUTPUT([ -Makefile -src/Makefile -python/Makefile -module.desktop -], [ -]) diff --git a/GADGETS/audio/__init__.py b/gadgets/audio/__init__.py similarity index 100% rename from GADGETS/audio/__init__.py rename to gadgets/audio/__init__.py diff --git a/GADGETS/audio/audio.edc b/gadgets/audio/audio.edc similarity index 100% rename from GADGETS/audio/audio.edc rename to gadgets/audio/audio.edc diff --git a/GADGETS/audio/images/cover.png b/gadgets/audio/images/cover.png similarity index 100% rename from GADGETS/audio/images/cover.png rename to gadgets/audio/images/cover.png diff --git a/GADGETS/audio/images/icon_mixer.png b/gadgets/audio/images/icon_mixer.png similarity index 100% rename from GADGETS/audio/images/icon_mixer.png rename to gadgets/audio/images/icon_mixer.png diff --git a/GADGETS/audio/images/icon_next.png b/gadgets/audio/images/icon_next.png similarity index 100% rename from GADGETS/audio/images/icon_next.png rename to gadgets/audio/images/icon_next.png diff --git a/GADGETS/audio/images/icon_pause.png b/gadgets/audio/images/icon_pause.png similarity index 100% rename from GADGETS/audio/images/icon_pause.png rename to gadgets/audio/images/icon_pause.png diff --git a/GADGETS/audio/images/icon_play.png b/gadgets/audio/images/icon_play.png similarity index 100% rename from GADGETS/audio/images/icon_play.png rename to gadgets/audio/images/icon_play.png diff --git a/GADGETS/audio/images/icon_prev.png b/gadgets/audio/images/icon_prev.png similarity index 100% rename from GADGETS/audio/images/icon_prev.png rename to gadgets/audio/images/icon_prev.png diff --git a/GADGETS/audio/images/inset_round_hilight.png b/gadgets/audio/images/inset_round_hilight.png similarity index 100% rename from GADGETS/audio/images/inset_round_hilight.png rename to gadgets/audio/images/inset_round_hilight.png diff --git a/GADGETS/audio/images/inset_round_shading.png b/gadgets/audio/images/inset_round_shading.png similarity index 100% rename from GADGETS/audio/images/inset_round_shading.png rename to gadgets/audio/images/inset_round_shading.png diff --git a/GADGETS/audio/images/inset_round_shadow.png b/gadgets/audio/images/inset_round_shadow.png similarity index 100% rename from GADGETS/audio/images/inset_round_shadow.png rename to gadgets/audio/images/inset_round_shadow.png diff --git a/GADGETS/audio/images/led_dot_white.png b/gadgets/audio/images/led_dot_white.png similarity index 100% rename from GADGETS/audio/images/led_dot_white.png rename to gadgets/audio/images/led_dot_white.png diff --git a/GADGETS/audio/images/speaker.png b/gadgets/audio/images/speaker.png similarity index 100% rename from GADGETS/audio/images/speaker.png rename to gadgets/audio/images/speaker.png diff --git a/gadgets/audio/meson.build b/gadgets/audio/meson.build new file mode 100644 index 0000000..ee95860 --- /dev/null +++ b/gadgets/audio/meson.build @@ -0,0 +1,30 @@ + +gadget_name = 'audio' + + +install_dir = join_paths(gadgets_install_dir, gadget_name) + + +# build gadget_name.edj +custom_target(gadget_name + '.edj', + input : gadget_name + '.edc', + output : gadget_name + '.edj', + command : [edje_cc, + '-id', meson.current_source_dir() / 'images', + '-fd', meson.current_source_dir() / 'fonts', + '@INPUT@', '@OUTPUT@'], + install_dir: install_dir, + install : true + ) + +# TODO: bytecompile gadget __init__.py +# py3_bytecompile = [py3, '-c', 'from py_compile import compile; compile("@INPUT@", "@OUTPUT@")'] +#custom_target('__init__.pyc', +# input : '__init__.py', +# output : '__init__.pyc', +# command : py3_bytecompile, +# install_dir: gadget_install_dir, +# install : true +# ) + +install_data('__init__.py', install_dir: install_dir) diff --git a/GADGETS/calculator/__init__.py b/gadgets/calculator/__init__.py similarity index 100% rename from GADGETS/calculator/__init__.py rename to gadgets/calculator/__init__.py diff --git a/GADGETS/calculator/calculator.edc b/gadgets/calculator/calculator.edc similarity index 100% rename from GADGETS/calculator/calculator.edc rename to gadgets/calculator/calculator.edc diff --git a/GADGETS/calculator/fonts/Vera.ttf b/gadgets/calculator/fonts/Vera.ttf similarity index 100% rename from GADGETS/calculator/fonts/Vera.ttf rename to gadgets/calculator/fonts/Vera.ttf diff --git a/GADGETS/calculator/images/0.png b/gadgets/calculator/images/0.png similarity index 100% rename from GADGETS/calculator/images/0.png rename to gadgets/calculator/images/0.png diff --git a/GADGETS/calculator/images/1.png b/gadgets/calculator/images/1.png similarity index 100% rename from GADGETS/calculator/images/1.png rename to gadgets/calculator/images/1.png diff --git a/GADGETS/calculator/images/2.png b/gadgets/calculator/images/2.png similarity index 100% rename from GADGETS/calculator/images/2.png rename to gadgets/calculator/images/2.png diff --git a/GADGETS/calculator/images/3.png b/gadgets/calculator/images/3.png similarity index 100% rename from GADGETS/calculator/images/3.png rename to gadgets/calculator/images/3.png diff --git a/GADGETS/calculator/images/4.png b/gadgets/calculator/images/4.png similarity index 100% rename from GADGETS/calculator/images/4.png rename to gadgets/calculator/images/4.png diff --git a/GADGETS/calculator/images/5.png b/gadgets/calculator/images/5.png similarity index 100% rename from GADGETS/calculator/images/5.png rename to gadgets/calculator/images/5.png diff --git a/GADGETS/calculator/images/6.png b/gadgets/calculator/images/6.png similarity index 100% rename from GADGETS/calculator/images/6.png rename to gadgets/calculator/images/6.png diff --git a/GADGETS/calculator/images/7.png b/gadgets/calculator/images/7.png similarity index 100% rename from GADGETS/calculator/images/7.png rename to gadgets/calculator/images/7.png diff --git a/GADGETS/calculator/images/8.png b/gadgets/calculator/images/8.png similarity index 100% rename from GADGETS/calculator/images/8.png rename to gadgets/calculator/images/8.png diff --git a/GADGETS/calculator/images/9.png b/gadgets/calculator/images/9.png similarity index 100% rename from GADGETS/calculator/images/9.png rename to gadgets/calculator/images/9.png diff --git a/GADGETS/calculator/images/bg.png b/gadgets/calculator/images/bg.png similarity index 100% rename from GADGETS/calculator/images/bg.png rename to gadgets/calculator/images/bg.png diff --git a/GADGETS/calculator/images/canc.png b/gadgets/calculator/images/canc.png similarity index 100% rename from GADGETS/calculator/images/canc.png rename to gadgets/calculator/images/canc.png diff --git a/GADGETS/calculator/images/divide.png b/gadgets/calculator/images/divide.png similarity index 100% rename from GADGETS/calculator/images/divide.png rename to gadgets/calculator/images/divide.png diff --git a/GADGETS/calculator/images/m-c.png b/gadgets/calculator/images/m-c.png similarity index 100% rename from GADGETS/calculator/images/m-c.png rename to gadgets/calculator/images/m-c.png diff --git a/GADGETS/calculator/images/m-minus.png b/gadgets/calculator/images/m-minus.png similarity index 100% rename from GADGETS/calculator/images/m-minus.png rename to gadgets/calculator/images/m-minus.png diff --git a/GADGETS/calculator/images/m-plus.png b/gadgets/calculator/images/m-plus.png similarity index 100% rename from GADGETS/calculator/images/m-plus.png rename to gadgets/calculator/images/m-plus.png diff --git a/GADGETS/calculator/images/m-r.png b/gadgets/calculator/images/m-r.png similarity index 100% rename from GADGETS/calculator/images/m-r.png rename to gadgets/calculator/images/m-r.png diff --git a/GADGETS/calculator/images/minus.png b/gadgets/calculator/images/minus.png similarity index 100% rename from GADGETS/calculator/images/minus.png rename to gadgets/calculator/images/minus.png diff --git a/GADGETS/calculator/images/multiply.png b/gadgets/calculator/images/multiply.png similarity index 100% rename from GADGETS/calculator/images/multiply.png rename to gadgets/calculator/images/multiply.png diff --git a/GADGETS/calculator/images/plus.png b/gadgets/calculator/images/plus.png similarity index 100% rename from GADGETS/calculator/images/plus.png rename to gadgets/calculator/images/plus.png diff --git a/GADGETS/calculator/images/point.png b/gadgets/calculator/images/point.png similarity index 100% rename from GADGETS/calculator/images/point.png rename to gadgets/calculator/images/point.png diff --git a/GADGETS/calculator/images/result.png b/gadgets/calculator/images/result.png similarity index 100% rename from GADGETS/calculator/images/result.png rename to gadgets/calculator/images/result.png diff --git a/gadgets/calculator/meson.build b/gadgets/calculator/meson.build new file mode 100644 index 0000000..5369a26 --- /dev/null +++ b/gadgets/calculator/meson.build @@ -0,0 +1,21 @@ + +gadget_name = 'calculator' + + +install_dir = join_paths(gadgets_install_dir, gadget_name) + + +# build gadget_name.edj +custom_target(gadget_name + '.edj', + input : gadget_name + '.edc', + output : gadget_name + '.edj', + command : [edje_cc, + '-id', meson.current_source_dir() / 'images', + '-fd', meson.current_source_dir() / 'fonts', + '@INPUT@', '@OUTPUT@'], + install_dir: install_dir, + install : true + ) + +# TODO: bytecompile gadget __init__.py +install_data('__init__.py', install_dir: install_dir) diff --git a/GADGETS/cpu/__init__.py b/gadgets/cpu/__init__.py similarity index 100% rename from GADGETS/cpu/__init__.py rename to gadgets/cpu/__init__.py diff --git a/GADGETS/cpu/cpu.edc b/gadgets/cpu/cpu.edc similarity index 100% rename from GADGETS/cpu/cpu.edc rename to gadgets/cpu/cpu.edc diff --git a/GADGETS/cpu/images/bar_bg.png b/gadgets/cpu/images/bar_bg.png similarity index 100% rename from GADGETS/cpu/images/bar_bg.png rename to gadgets/cpu/images/bar_bg.png diff --git a/GADGETS/cpu/images/cpu.png b/gadgets/cpu/images/cpu.png similarity index 100% rename from GADGETS/cpu/images/cpu.png rename to gadgets/cpu/images/cpu.png diff --git a/GADGETS/cpu/images/green_on.png b/gadgets/cpu/images/green_on.png similarity index 100% rename from GADGETS/cpu/images/green_on.png rename to gadgets/cpu/images/green_on.png diff --git a/GADGETS/cpu/images/mockup.xcf b/gadgets/cpu/images/mockup.xcf similarity index 100% rename from GADGETS/cpu/images/mockup.xcf rename to gadgets/cpu/images/mockup.xcf diff --git a/GADGETS/cpu/images/red_on.png b/gadgets/cpu/images/red_on.png similarity index 100% rename from GADGETS/cpu/images/red_on.png rename to gadgets/cpu/images/red_on.png diff --git a/GADGETS/cpu/images/yellow_on.png b/gadgets/cpu/images/yellow_on.png similarity index 100% rename from GADGETS/cpu/images/yellow_on.png rename to gadgets/cpu/images/yellow_on.png diff --git a/gadgets/cpu/meson.build b/gadgets/cpu/meson.build new file mode 100644 index 0000000..4fb0b2a --- /dev/null +++ b/gadgets/cpu/meson.build @@ -0,0 +1,21 @@ + +gadget_name = 'cpu' + + +install_dir = join_paths(gadgets_install_dir, gadget_name) + + +# build gadget_name.edj +custom_target(gadget_name + '.edj', + input : gadget_name + '.edc', + output : gadget_name + '.edj', + command : [edje_cc, + '-id', meson.current_source_dir() / 'images', + '-fd', meson.current_source_dir() / 'fonts', + '@INPUT@', '@OUTPUT@'], + install_dir: install_dir, + install : true + ) + +# TODO: bytecompile gadget __init__.py +install_data('__init__.py', install_dir: install_dir) diff --git a/GADGETS/dropbox/__init__.py b/gadgets/dropbox/__init__.py similarity index 100% rename from GADGETS/dropbox/__init__.py rename to gadgets/dropbox/__init__.py diff --git a/GADGETS/dropbox/docs/dropboxd-protocol b/gadgets/dropbox/docs/dropboxd-protocol similarity index 100% rename from GADGETS/dropbox/docs/dropboxd-protocol rename to gadgets/dropbox/docs/dropboxd-protocol diff --git a/GADGETS/dropbox/dropbox.edc b/gadgets/dropbox/dropbox.edc similarity index 100% rename from GADGETS/dropbox/dropbox.edc rename to gadgets/dropbox/dropbox.edc diff --git a/GADGETS/dropbox/images/dropbox.png b/gadgets/dropbox/images/dropbox.png similarity index 100% rename from GADGETS/dropbox/images/dropbox.png rename to gadgets/dropbox/images/dropbox.png diff --git a/GADGETS/dropbox/images/dropbox_gray.png b/gadgets/dropbox/images/dropbox_gray.png similarity index 100% rename from GADGETS/dropbox/images/dropbox_gray.png rename to gadgets/dropbox/images/dropbox_gray.png diff --git a/GADGETS/dropbox/images/emblem-syncing.png b/gadgets/dropbox/images/emblem-syncing.png similarity index 100% rename from GADGETS/dropbox/images/emblem-syncing.png rename to gadgets/dropbox/images/emblem-syncing.png diff --git a/GADGETS/dropbox/images/emblem-unsyncable.png b/gadgets/dropbox/images/emblem-unsyncable.png similarity index 100% rename from GADGETS/dropbox/images/emblem-unsyncable.png rename to gadgets/dropbox/images/emblem-unsyncable.png diff --git a/GADGETS/dropbox/images/emblem-uptodate.png b/gadgets/dropbox/images/emblem-uptodate.png similarity index 100% rename from GADGETS/dropbox/images/emblem-uptodate.png rename to gadgets/dropbox/images/emblem-uptodate.png diff --git a/gadgets/dropbox/meson.build b/gadgets/dropbox/meson.build new file mode 100644 index 0000000..d8087e3 --- /dev/null +++ b/gadgets/dropbox/meson.build @@ -0,0 +1,21 @@ + +gadget_name = 'dropbox' + + +install_dir = join_paths(gadgets_install_dir, gadget_name) + + +# build gadget_name.edj +custom_target(gadget_name + '.edj', + input : gadget_name + '.edc', + output : gadget_name + '.edj', + command : [edje_cc, + '-id', meson.current_source_dir() / 'images', + '-fd', meson.current_source_dir() / 'fonts', + '@INPUT@', '@OUTPUT@'], + install_dir: install_dir, + install : true + ) + +# TODO: bytecompile gadget __init__.py +install_data('__init__.py', install_dir: install_dir) diff --git a/GADGETS/led_clock/__init__.py b/gadgets/led_clock/__init__.py similarity index 100% rename from GADGETS/led_clock/__init__.py rename to gadgets/led_clock/__init__.py diff --git a/GADGETS/led_clock/images/bg.png b/gadgets/led_clock/images/bg.png similarity index 100% rename from GADGETS/led_clock/images/bg.png rename to gadgets/led_clock/images/bg.png diff --git a/GADGETS/led_clock/images/bg_orig.png b/gadgets/led_clock/images/bg_orig.png similarity index 100% rename from GADGETS/led_clock/images/bg_orig.png rename to gadgets/led_clock/images/bg_orig.png diff --git a/GADGETS/led_clock/images/icon.png b/gadgets/led_clock/images/icon.png similarity index 100% rename from GADGETS/led_clock/images/icon.png rename to gadgets/led_clock/images/icon.png diff --git a/GADGETS/led_clock/images/led_blu.png b/gadgets/led_clock/images/led_blu.png similarity index 100% rename from GADGETS/led_clock/images/led_blu.png rename to gadgets/led_clock/images/led_blu.png diff --git a/GADGETS/led_clock/images/led_green.png b/gadgets/led_clock/images/led_green.png similarity index 100% rename from GADGETS/led_clock/images/led_green.png rename to gadgets/led_clock/images/led_green.png diff --git a/GADGETS/led_clock/images/led_off.png b/gadgets/led_clock/images/led_off.png similarity index 100% rename from GADGETS/led_clock/images/led_off.png rename to gadgets/led_clock/images/led_off.png diff --git a/GADGETS/led_clock/images/led_red.png b/gadgets/led_clock/images/led_red.png similarity index 100% rename from GADGETS/led_clock/images/led_red.png rename to gadgets/led_clock/images/led_red.png diff --git a/GADGETS/led_clock/images/template.png b/gadgets/led_clock/images/template.png similarity index 100% rename from GADGETS/led_clock/images/template.png rename to gadgets/led_clock/images/template.png diff --git a/GADGETS/led_clock/led_clock.edc b/gadgets/led_clock/led_clock.edc similarity index 100% rename from GADGETS/led_clock/led_clock.edc rename to gadgets/led_clock/led_clock.edc diff --git a/gadgets/led_clock/meson.build b/gadgets/led_clock/meson.build new file mode 100644 index 0000000..92aa4fb --- /dev/null +++ b/gadgets/led_clock/meson.build @@ -0,0 +1,21 @@ + +gadget_name = 'led_clock' + + +install_dir = join_paths(gadgets_install_dir, gadget_name) + + +# build gadget_name.edj +custom_target(gadget_name + '.edj', + input : gadget_name + '.edc', + output : gadget_name + '.edj', + command : [edje_cc, + '-id', meson.current_source_dir() / 'images', + '-fd', meson.current_source_dir() / 'fonts', + '@INPUT@', '@OUTPUT@'], + install_dir: install_dir, + install : true + ) + +# TODO: bytecompile gadget __init__.py +install_data('__init__.py', install_dir: install_dir) diff --git a/GADGETS/mem/__init__.py b/gadgets/mem/__init__.py similarity index 100% rename from GADGETS/mem/__init__.py rename to gadgets/mem/__init__.py diff --git a/GADGETS/mem/images/bar_bg.png b/gadgets/mem/images/bar_bg.png similarity index 100% rename from GADGETS/mem/images/bar_bg.png rename to gadgets/mem/images/bar_bg.png diff --git a/GADGETS/mem/images/blu_on.png b/gadgets/mem/images/blu_on.png similarity index 100% rename from GADGETS/mem/images/blu_on.png rename to gadgets/mem/images/blu_on.png diff --git a/GADGETS/mem/images/mem.png b/gadgets/mem/images/mem.png similarity index 100% rename from GADGETS/mem/images/mem.png rename to gadgets/mem/images/mem.png diff --git a/GADGETS/mem/mem.edc b/gadgets/mem/mem.edc similarity index 100% rename from GADGETS/mem/mem.edc rename to gadgets/mem/mem.edc diff --git a/gadgets/mem/meson.build b/gadgets/mem/meson.build new file mode 100644 index 0000000..fb876cf --- /dev/null +++ b/gadgets/mem/meson.build @@ -0,0 +1,21 @@ + +gadget_name = 'mem' + + +install_dir = join_paths(gadgets_install_dir, gadget_name) + + +# build gadget_name.edj +custom_target(gadget_name + '.edj', + input : gadget_name + '.edc', + output : gadget_name + '.edj', + command : [edje_cc, + '-id', meson.current_source_dir() / 'images', + '-fd', meson.current_source_dir() / 'fonts', + '@INPUT@', '@OUTPUT@'], + install_dir: install_dir, + install : true + ) + +# TODO: bytecompile gadget __init__.py +install_data('__init__.py', install_dir: install_dir) diff --git a/GADGETS/netspeed/__init__.py b/gadgets/netspeed/__init__.py similarity index 100% rename from GADGETS/netspeed/__init__.py rename to gadgets/netspeed/__init__.py diff --git a/GADGETS/netspeed/images/base.png b/gadgets/netspeed/images/base.png similarity index 100% rename from GADGETS/netspeed/images/base.png rename to gadgets/netspeed/images/base.png diff --git a/GADGETS/netspeed/images/over.png b/gadgets/netspeed/images/over.png similarity index 100% rename from GADGETS/netspeed/images/over.png rename to gadgets/netspeed/images/over.png diff --git a/GADGETS/netspeed/images/rx.png b/gadgets/netspeed/images/rx.png similarity index 100% rename from GADGETS/netspeed/images/rx.png rename to gadgets/netspeed/images/rx.png diff --git a/GADGETS/netspeed/images/tx.png b/gadgets/netspeed/images/tx.png similarity index 100% rename from GADGETS/netspeed/images/tx.png rename to gadgets/netspeed/images/tx.png diff --git a/gadgets/netspeed/meson.build b/gadgets/netspeed/meson.build new file mode 100644 index 0000000..a6483da --- /dev/null +++ b/gadgets/netspeed/meson.build @@ -0,0 +1,21 @@ + +gadget_name = 'netspeed' + + +install_dir = join_paths(gadgets_install_dir, gadget_name) + + +# build gadget_name.edj +custom_target(gadget_name + '.edj', + input : gadget_name + '.edc', + output : gadget_name + '.edj', + command : [edje_cc, + '-id', meson.current_source_dir() / 'images', + '-fd', meson.current_source_dir() / 'fonts', + '@INPUT@', '@OUTPUT@'], + install_dir: install_dir, + install : true + ) + +# TODO: bytecompile gadget __init__.py +install_data('__init__.py', install_dir: install_dir) diff --git a/GADGETS/netspeed/netspeed.edc b/gadgets/netspeed/netspeed.edc similarity index 100% rename from GADGETS/netspeed/netspeed.edc rename to gadgets/netspeed/netspeed.edc diff --git a/m4/ac_attribute.m4 b/m4/ac_attribute.m4 deleted file mode 100644 index 46c1a42..0000000 --- a/m4/ac_attribute.m4 +++ /dev/null @@ -1,14 +0,0 @@ - -AC_DEFUN([AC_C___ATTRIBUTE__], -[ - AC_MSG_CHECKING(for __attribute__) - AC_CACHE_VAL(ac_cv___attribute__, [ - AC_TRY_COMPILE([#include ], - [int func(int x); int foo(int x __attribute__ ((unused))) { exit(1); }], - ac_cv___attribute__=yes, ac_cv___attribute__=no)]) - if test "$ac_cv___attribute__" = "yes"; then - AC_DEFINE(HAVE___ATTRIBUTE__, 1, [Define to 1 if your compiler has __attribute__]) - fi - AC_MSG_RESULT($ac_cv___attribute__) -]) - diff --git a/m4/ax_python_devel.m4 b/m4/ax_python_devel.m4 deleted file mode 100644 index 59a2ff0..0000000 --- a/m4/ax_python_devel.m4 +++ /dev/null @@ -1,324 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_python_devel.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PYTHON_DEVEL([version]) -# -# DESCRIPTION -# -# Note: Defines as a precious variable "PYTHON_VERSION". Don't override it -# in your configure.ac. -# -# This macro checks for Python and tries to get the include path to -# 'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LDFLAGS) -# output variables. It also exports $(PYTHON_EXTRA_LIBS) and -# $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code. -# -# You can search for some particular version of Python by passing a -# parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please -# note that you *have* to pass also an operator along with the version to -# match, and pay special attention to the single quotes surrounding the -# version number. Don't use "PYTHON_VERSION" for this: that environment -# variable is declared as precious and thus reserved for the end-user. -# -# This macro should work for all versions of Python >= 2.1.0. As an end -# user, you can disable the check for the python version by setting the -# PYTHON_NOVERSIONCHECK environment variable to something else than the -# empty string. -# -# If you need to use this macro for an older Python version, please -# contact the authors. We're always open for feedback. -# -# LICENSE -# -# Copyright (c) 2009 Sebastian Huber -# Copyright (c) 2009 Alan W. Irwin -# Copyright (c) 2009 Rafael Laboissiere -# Copyright (c) 2009 Andrew Collier -# Copyright (c) 2009 Matteo Settenvini -# Copyright (c) 2009 Horst Knorr -# Copyright (c) 2013 Daniel Mullner -# -# This program is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 17 - -AU_ALIAS([AC_PYTHON_DEVEL], [AX_PYTHON_DEVEL]) -AC_DEFUN([AX_PYTHON_DEVEL],[ - # - # Allow the use of a (user set) custom python version - # - AC_ARG_VAR([PYTHON_VERSION],[The installed Python - version to use, for example '2.3'. This string - will be appended to the Python interpreter - canonical name.]) - - AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]]) - if test -z "$PYTHON"; then - AC_MSG_ERROR([Cannot find python$PYTHON_VERSION in your system path]) - PYTHON_VERSION="" - fi - - # - # Check for a version of Python >= 2.1.0 - # - AC_MSG_CHECKING([for a version of Python >= '2.1.0']) - ac_supports_python_ver=`$PYTHON -c "import sys; \ - ver = sys.version.split ()[[0]]; \ - print (ver >= '2.1.0')"` - if test "$ac_supports_python_ver" != "True"; then - if test -z "$PYTHON_NOVERSIONCHECK"; then - AC_MSG_RESULT([no]) - AC_MSG_FAILURE([ -This version of the AC@&t@_PYTHON_DEVEL macro -doesn't work properly with versions of Python before -2.1.0. You may need to re-run configure, setting the -variables PYTHON_CPPFLAGS, PYTHON_LDFLAGS, PYTHON_SITE_PKG, -PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand. -Moreover, to disable this check, set PYTHON_NOVERSIONCHECK -to something else than an empty string. -]) - else - AC_MSG_RESULT([skip at user request]) - fi - else - AC_MSG_RESULT([yes]) - fi - - # - # if the macro parameter ``version'' is set, honour it - # - if test -n "$1"; then - AC_MSG_CHECKING([for a version of Python $1]) - ac_supports_python_ver=`$PYTHON -c "import sys; \ - ver = sys.version.split ()[[0]]; \ - print (ver $1)"` - if test "$ac_supports_python_ver" = "True"; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - AC_MSG_ERROR([this package requires Python $1. -If you have it installed, but it isn't the default Python -interpreter in your system path, please pass the PYTHON_VERSION -variable to configure. See ``configure --help'' for reference. -]) - PYTHON_VERSION="" - fi - fi - - # - # Check if you have distutils, else fail - # - AC_MSG_CHECKING([for the distutils Python package]) - ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` - if test -z "$ac_distutils_result"; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - AC_MSG_ERROR([cannot import Python module "distutils". -Please check your Python installation. The error was: -$ac_distutils_result]) - PYTHON_VERSION="" - fi - - # - # Check for Python include path - # - AC_MSG_CHECKING([for Python include path]) - if test -z "$PYTHON_CPPFLAGS"; then - python_path=`$PYTHON -c "import distutils.sysconfig; \ - print (distutils.sysconfig.get_python_inc ());"` - plat_python_path=`$PYTHON -c "import distutils.sysconfig; \ - print (distutils.sysconfig.get_python_inc (plat_specific=1));"` - if test -n "${python_path}"; then - if test "${plat_python_path}" != "${python_path}"; then - python_path="-I$python_path -I$plat_python_path" - else - python_path="-I$python_path" - fi - fi - PYTHON_CPPFLAGS=$python_path - fi - AC_MSG_RESULT([$PYTHON_CPPFLAGS]) - AC_SUBST([PYTHON_CPPFLAGS]) - - # - # Check for Python library path - # - AC_MSG_CHECKING([for Python library path]) - if test -z "$PYTHON_LDFLAGS"; then - # (makes two attempts to ensure we've got a version number - # from the interpreter) - ac_python_version=`cat<]], - [[Py_Initialize();]]) - ],[pythonexists=yes],[pythonexists=no]) - AC_LANG_POP([C]) - # turn back to default flags - CPPFLAGS="$ac_save_CPPFLAGS" - LIBS="$ac_save_LIBS" - - AC_MSG_RESULT([$pythonexists]) - - if test ! "x$pythonexists" = "xyes"; then - AC_MSG_FAILURE([ - Could not link test program to Python. Maybe the main Python library has been - installed in some non-standard library path. If so, pass it to configure, - via the LDFLAGS environment variable. - Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib" - ============================================================================ - ERROR! - You probably have to install the development version of the Python package - for your distribution. The exact name of this package varies among them. - ============================================================================ - ]) - PYTHON_VERSION="" - fi - - # - # all done! - # -]) diff --git a/m4/ax_python_module.m4 b/m4/ax_python_module.m4 deleted file mode 100644 index 559b569..0000000 --- a/m4/ax_python_module.m4 +++ /dev/null @@ -1,50 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_python_module.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PYTHON3_MODULE(modname[, fatal]) -# -# DESCRIPTION -# -# Checks for Python3 module. -# -# If fatal is non-empty then absence of a module will trigger an error. -# -# LICENSE -# -# Copyright (c) 2008 Andrew Collier -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 6 - -AU_ALIAS([AC_PYTHON3_MODULE], [AX_PYTHON3_MODULE]) -AC_DEFUN([AX_PYTHON3_MODULE],[ - # if test -z $PYTHON; - # then - # PYTHON="python" - # fi - PYTHON="python3" - PYTHON_NAME=`basename $PYTHON` - AC_MSG_CHECKING($PYTHON_NAME module: $1) - $PYTHON -c "import $1" 2>/dev/null - if test $? -eq 0; - then - AC_MSG_RESULT(yes) - eval AS_TR_CPP(HAVE_PYMOD_$1)=yes - else - AC_MSG_RESULT(no) - eval AS_TR_CPP(HAVE_PYMOD_$1)=no - # - if test -n "$2" - then - AC_MSG_ERROR(failed to find required python3 module $1) - exit 1 - fi - fi -]) diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..3e361a3 --- /dev/null +++ b/meson.build @@ -0,0 +1,72 @@ + +#### Project #### +project('edgar', 'c', + version: '0.4.0', + license: 'GPL v3', + meson_version: '>= 0.53.0') + +# NOTE: meson 51 needed for the 'modules' param of pymod.find_installation() +# NOTE: meson 53 needed for the 'embed' param of py3.dependency() + + +#### Enlightenemnt #### +dep_e = dependency('enlightenment', version: '>= 0.23.99') +e_modules_dir = dep_e.get_pkgconfig_variable('modules') +e_lib_dir = dep_e.get_pkgconfig_variable('libdir') +e_release = dep_e.get_pkgconfig_variable('release') +e_module_arch = dep_e.get_pkgconfig_variable('module_arch') + + +#### Python3 #### +py3 = import('python').find_installation('python3', modules: ['efl', 'dbus']) +dep_py3 = py3.dependency(embed: true) + + +#### Install dirs #### +mod_install_dir = join_paths(e_modules_dir, meson.project_name()) +lib_install_dir = join_paths(mod_install_dir, e_module_arch) +gadgets_install_dir = join_paths(e_lib_dir, 'enlightenment', 'edgar_gadgets') + + +#### Config.h #### +config_h = configuration_data() +config_h.set_quoted('PACKAGE', meson.project_name()) +config_dir = include_directories('.') + + +#### Edje cc #### +edje_cc = find_program('edje_cc') + + +#### Edgar sources #### +subdir('src') + + +#### Gadgets #### +subdir('gadgets/audio') +subdir('gadgets/calculator') +subdir('gadgets/cpu') +subdir('gadgets/dropbox') +subdir('gadgets/led_clock') +subdir('gadgets/mem') +subdir('gadgets/netspeed') + + +#### Write config.h #### +configure_file(output: 'edgar_config.h', configuration: config_h) + + +#### Data files #### +install_data('python/e.py', install_dir: gadgets_install_dir) +install_data('module.desktop', install_dir: mod_install_dir) + +cmd = [edje_cc, + '-id', meson.source_root(), + '@INPUT@', '@OUTPUT@'] +custom_target('e-module-edgar.edj', + input : 'e-module-edgar.edc', + output : 'e-module-edgar.edj', + command : cmd, + install_dir: mod_install_dir, + install : true + ) diff --git a/module.desktop.in b/module.desktop similarity index 100% rename from module.desktop.in rename to module.desktop diff --git a/python/Makefile.am b/python/Makefile.am deleted file mode 100644 index 9087c14..0000000 --- a/python/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -edgarpy_base = e.py -edgarpydir = $(shell pkg-config --variable=libdir enlightenment)/enlightenment/gadgets -edgarpy_DATA = $(edgarpy_base) -EXTRA_DIST = $(edgarpy_base) diff --git a/src/Makefile.am b/src/Makefile.am deleted file mode 100644 index 1dc0fd7..0000000 --- a/src/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -INCLUDES = -I. -Wall \ - -I$(top_srcdir) \ - -I$(includedir) \ - @EO_CFLAGS@ @E_CFLAGS@ @PYTHON_CPPFLAGS@ - -pkgdir = $(datadir)/$(MODULE_ARCH) -pkg_LTLIBRARIES = module.la -module_la_SOURCES = e_mod_main.h \ - e_mod_main.c \ - e_mod_edgar.c \ - e_mod_edgar.h - -module_la_CPPFLAGS = -DEFL_BETA_API_SUPPORT -DEFL_EO_API_SUPPORT -module_la_LIBADD = @EO_LIBS@ @E_LIBS@ @PYTHON_LDFLAGS@ \ - @PYTHON_EXTRA_LIBS@ @PYTHON_EXTRA_LDFLAGS@ -module_la_LDFLAGS = -module -avoid-version -module_la_DEPENDENCIES = $(top_builddir)/config.h - -clean-local: - rm -rf *~ diff --git a/src/OLD_e_mod_config.c b/src/OLD_e_mod_config.c deleted file mode 100644 index 220630a..0000000 --- a/src/OLD_e_mod_config.c +++ /dev/null @@ -1,361 +0,0 @@ -/* Copyright (C) 2008-2014 Davide Andreoli (see AUTHORS) - * - * This file is part of edgar. - * edgar is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * edgar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with edgar. If not, see . - */ - -#include -#include "e_mod_main.h" - -struct _E_Config_Dialog_Data -{ - Eina_List *key_list; - Evas_Object *ilist; - Evas_Object *allow_btn, *deny_btn, *ask_btn; -}; - -/* Local Function Prototypes */ -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(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); -static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); -extern Config *edgar_conf; - - -/* External Functions */ -#ifdef HAVE_E19 -EAPI E_Config_Dialog * -e_int_config_edgar_module(E_Comp *con, const char *params) -#else -EAPI E_Config_Dialog * -e_int_config_edgar_module(E_Container *con, const char *params) -#endif -{ - E_Config_Dialog_View *v = NULL; - char buf[PATH_MAX]; - - /* is this config dialog already visible ? */ - if (edgar_conf->cfd) - { - e_win_raise(edgar_conf->cfd->dia->win); -#ifndef HAVE_E19 - e_border_focus_set(edgar_conf->cfd->dia->win->border, 1, 1); -#endif - return NULL; - } - - v = E_NEW(E_Config_Dialog_View, 1); - if (!v) return NULL; - - v->create_cfdata = _create_data; - v->free_cfdata = _free_data; - v->basic.create_widgets = _basic_create; - v->basic.apply_cfdata = _basic_apply; - - /* Icon in the theme */ - //snprintf(buf, sizeof(buf), "%s/e-module-edgar.edj", edgar_conf->module->dir); - - /* create new config dialog */ - snprintf(buf, sizeof(buf), "%s/e-module-edgar.edj", edgar_conf->module->dir); - edgar_conf->cfd = e_config_dialog_new(con, "Edgar Gadgets Loader", // TODO i18n - "E", "extensions/edgar", - buf, 0, v, NULL); - - e_dialog_resizable_set(edgar_conf->cfd->dia, 1); - - return edgar_conf->cfd; -} - -/* Local Functions */ -static int -_cmp_func(const void *a, const void *b) -{ - const char *_a = a; - const char *_b = b; - if (_a[0] == ':' && _a[1] == ':') _a = _a + 2; - if (_b[0] == ':' && _b[1] == ':') _b = _b + 2; - return strcmp(_a, _b); -} - -static void * -_create_data(E_Config_Dialog *cfd) -{ - E_Config_Dialog_Data *cfdata; - Eina_Iterator *it; - const char *key; - - cfdata = E_NEW(E_Config_Dialog_Data, 1); - if (!cfdata) return NULL; - - // build a sorted list (with headers on top) of all the hash keys - it = eina_hash_iterator_key_new(edgar_conf->conf_guardian_hash); - while (eina_iterator_next(it, (void *)&key)) - cfdata->key_list = eina_list_sorted_insert(cfdata->key_list, _cmp_func, - eina_stringshare_add(key)); - eina_iterator_free(it); - - return cfdata; -} - -static void -_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) -{ - const char *key; - - edgar_conf->cfd = NULL; - EINA_LIST_FREE(cfdata->key_list, key) - eina_stringshare_del(key); - E_FREE(cfdata); -} - -static void -_list_selected_cb(void *data) -{ - E_Config_Dialog_Data *cfdata = data; - Guardian_Item *allow; - const char *key; - - key = e_widget_ilist_selected_value_get(cfdata->ilist); - allow = eina_hash_find(edgar_conf->conf_guardian_hash, key); - - if (!allow || allow->allow == EDGAR_GUARDIAN_ASK) - { - e_widget_disabled_set(cfdata->allow_btn, 0); - e_widget_disabled_set(cfdata->deny_btn, 0); - e_widget_disabled_set(cfdata->ask_btn, 1); - return; - } - - e_widget_disabled_set(cfdata->ask_btn, 0); - e_widget_disabled_set(cfdata->allow_btn, - (allow->allow == EDGAR_GUARDIAN_ALLOW) || - (allow->allow == EDGAR_GUARDIAN_ALLOW_ALL) ? 1 : 0); - e_widget_disabled_set(cfdata->deny_btn, - (allow->allow == EDGAR_GUARDIAN_ALLOW) || - (allow->allow == EDGAR_GUARDIAN_ALLOW_ALL) ? 0 : 1); -} - -static void -_allow_btn_cb(void *data, void *data2) -{ - E_Config_Dialog_Data *cfdata = data; - Guardian_Item *allow; - Evas_Object *end; - const char *key; - - key = e_widget_ilist_selected_value_get(cfdata->ilist); - allow = eina_hash_find(edgar_conf->conf_guardian_hash, key); - allow->allow = ((key[0] == ':') && (key[1] == ':')) ? - EDGAR_GUARDIAN_ALLOW_ALL : EDGAR_GUARDIAN_ALLOW; - - e_widget_disabled_set(cfdata->allow_btn, 1); - e_widget_disabled_set(cfdata->deny_btn, 0); - e_widget_disabled_set(cfdata->ask_btn, 0); - - end = e_widget_ilist_selected_end_get(cfdata->ilist); - edje_object_signal_emit(end, "e,state,checked", "e"); -} - -static void -_deny_btn_cb(void *data, void *data2) -{ - E_Config_Dialog_Data *cfdata = data; - Guardian_Item *allow; - Evas_Object *end; - const char *key; - - key = e_widget_ilist_selected_value_get(cfdata->ilist); - allow = eina_hash_find(edgar_conf->conf_guardian_hash, key); - allow->allow = ((key[0] == ':') && (key[1] == ':')) ? - EDGAR_GUARDIAN_DENY_ALL : EDGAR_GUARDIAN_DENY; - - e_widget_disabled_set(cfdata->allow_btn, 0); - e_widget_disabled_set(cfdata->deny_btn, 1); - e_widget_disabled_set(cfdata->ask_btn, 0); - - end = e_widget_ilist_selected_end_get(cfdata->ilist); - edje_object_signal_emit(end, "e,state,alert", "e"); -} - -static void -_ask_btn_cb(void *data, void *data2) -{ - E_Config_Dialog_Data *cfdata = data; - Guardian_Item *allow; - Evas_Object *end; - const char *key; - - key = e_widget_ilist_selected_value_get(cfdata->ilist); - allow = eina_hash_find(edgar_conf->conf_guardian_hash, key); - allow->allow = EDGAR_GUARDIAN_ASK; - - e_widget_disabled_set(cfdata->allow_btn, 0); - e_widget_disabled_set(cfdata->deny_btn, 0); - e_widget_disabled_set(cfdata->ask_btn, 1); - - end = e_widget_ilist_selected_end_get(cfdata->ilist); - edje_object_signal_emit(end, "e,state,unchecked", "e"); -} - -static void -_basic_populate_list(E_Config_Dialog_Data *cfdata) -{ - Evas_Object *icon, *end; - Evas *evas; - Eina_List *l; - Guardian_Item *allow; - const char *key; - char gadget[1024]; - char action[4096]; - - evas = evas_object_evas_get(cfdata->ilist); - - // populate the ilist with items and headers - EINA_LIST_FOREACH(cfdata->key_list, l, key) - { - DBG("KEY: '%s'", key); - if ((key[0] == ':') && (key[1] == ':')) - { - // extract the gadget name '::gadget_name::' - if (sscanf(key, "::%[^:]::", gadget) != 1) return; - DBG("'%s'", gadget); - - // append the header - icon = e_icon_add(evas); - if (!e_icon_file_edje_set(icon, gadget, "e/gadget/icon")) - { - evas_object_del(icon); - icon = NULL; - } - e_widget_ilist_header_append(cfdata->ilist, icon, gadget); - - // append the 'trust all' item - end = edje_object_add(evas); - if (!e_theme_edje_object_set(end, "base/theme/widgets", - "e/widgets/ilist/toggle_end")) - { - evas_object_del(end); - end = NULL; - } - else - { - edje_object_signal_emit(end, "e,state,unchecked", "e"); - allow = eina_hash_find(edgar_conf->conf_guardian_hash, key); - if (allow && allow->allow == EDGAR_GUARDIAN_ALLOW_ALL) - edje_object_signal_emit(end, "e,state,checked", "e"); - else if (allow && allow->allow == EDGAR_GUARDIAN_DENY_ALL) - edje_object_signal_emit(end, "e,state,alert", "e"); - } - e_widget_ilist_append_full(cfdata->ilist, NULL, end, - "Trust or Deny ALL from this gadget", - _list_selected_cb, cfdata, key); - } - else - { - // extract the gadget name and the action 'gadget_name::action' - // this is not really correct, will truncate action with the char ':' - if (sscanf(key, "%[^:]::%[^:]", gadget, action) != 2) return; - DBG("'%s' '%s'", gadget, action); - - // append the action - allow = eina_hash_find(edgar_conf->conf_guardian_hash, key); - end = edje_object_add(evas); - if (!e_theme_edje_object_set(end, "base/theme/widgets", - "e/widgets/ilist/toggle_end")) - { - evas_object_del(end); - end = NULL; - } - else - { - edje_object_signal_emit(end, "e,state,unchecked", "e"); - if (allow && allow->allow == EDGAR_GUARDIAN_ALLOW) - edje_object_signal_emit(end, "e,state,checked", "e"); - else if (allow && allow->allow == EDGAR_GUARDIAN_DENY) - edje_object_signal_emit(end, "e,state,alert", "e"); - } - e_widget_ilist_append_full(cfdata->ilist, NULL, end, action, - _list_selected_cb, cfdata, key); - } - } -} - -static Evas_Object * -_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) -{ - Evas_Object *hbox, *frame, *icon; - - frame = e_widget_framelist_add(evas, "The Gadget Guardian", 0); - - // ilist - cfdata->ilist = e_widget_ilist_add(evas, 24, 24, NULL); - e_widget_size_min_set(cfdata->ilist, 180, 100); - e_widget_ilist_go(cfdata->ilist); - e_widget_framelist_object_append(frame, cfdata->ilist); - - // button box - hbox = e_widget_list_add(evas, 1, 1); - - // allow btn - cfdata->allow_btn = e_widget_button_add(evas, "Allow", NULL, - _allow_btn_cb, cfdata, NULL); - e_widget_disabled_set(cfdata->allow_btn, 1); - icon = edje_object_add(evas); - if (e_theme_edje_object_set(icon, "base/theme/widgets", - "e/widgets/ilist/toggle_end")) - { - edje_object_signal_emit(icon, "e,state,checked", "e"); - e_widget_button_icon_set(cfdata->allow_btn, icon); - } - e_widget_list_object_append(hbox, cfdata->allow_btn, 1, 1, 0.5); - - // deny btn - cfdata->deny_btn = e_widget_button_add(evas, "Deny", NULL, - _deny_btn_cb, cfdata, NULL); - e_widget_disabled_set(cfdata->deny_btn, 1); - icon = edje_object_add(evas); - if (e_theme_edje_object_set(icon, "base/theme/widgets", - "e/widgets/ilist/toggle_end")) - { - edje_object_signal_emit(icon, "e,state,alert", "e"); - e_widget_button_icon_set(cfdata->deny_btn, icon); - } - e_widget_list_object_append(hbox, cfdata->deny_btn, 1, 0, 0.5); - - // ask btn - cfdata->ask_btn = e_widget_button_add(evas, "Ask", NULL, - _ask_btn_cb, cfdata, NULL); - e_widget_disabled_set(cfdata->ask_btn, 1); - icon = edje_object_add(evas); - if (e_theme_edje_object_set(icon, "base/theme/widgets", - "e/widgets/ilist/toggle_end")) - { - edje_object_signal_emit(icon, "e,state,unchecked", "e"); - e_widget_button_icon_set(cfdata->ask_btn, icon); - } - e_widget_list_object_append(hbox, cfdata->ask_btn, 1, 0, 0.5); - - e_widget_framelist_object_append_full(frame, hbox, - 1, 0, 1, 0, 0.5, 0.5, 25, 25, 999, 999); - - _basic_populate_list(cfdata); - return frame; -} - -static int -_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) -{ - e_config_save_queue(); - return 1; -} diff --git a/src/OLD_e_mod_edgar.c b/src/OLD_e_mod_edgar.c deleted file mode 100644 index ec8c4b7..0000000 --- a/src/OLD_e_mod_edgar.c +++ /dev/null @@ -1,869 +0,0 @@ -/* Copyright (C) 2008-2014 Davide Andreoli (see AUTHORS) - * - * This file is part of edgar. - * edgar is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * edgar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with edgar. If not, see . - */ - -#include -#include -#include "config.h" -#include "e_mod_main.h" -#include "e_mod_edgar.h" -#include "e_mod_guardian.h" - - -/* Local Prototypes */ -static unsigned char edgar_load_class(const char *path); -static unsigned char edgar_unload_class(E_Gadcon_Client_Class *cclass); -static void _edgar_file_monitor_cb(void *data, Ecore_File_Monitor *em, Ecore_File_Event event, const char *path); -static void _edgar_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _edgar_edje_messagge_cb(void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *message); -static void _edgar_message_send(Instance *inst, int id, const char *args, ...); -static Eina_Bool _edgar_exec_pipe_data(void *data, int ev_type, void *ev); -static Eina_Bool _edgar_exec_pipe_exit(void *data, int ev_type, void *ev); - -/* Gadcon Prototypes */ -static E_Gadcon_Client *_edgar_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style); -static void _edgar_gc_shutdown(E_Gadcon_Client *gcc); -static void _edgar_gc_orient(E_Gadcon_Client *gcc, E_Gadcon_Orient orient); -static const char *_edgar_gc_label(const E_Gadcon_Client_Class *client_class); -static const char *_edgar_gc_id_new(const E_Gadcon_Client_Class *client_class); -static void _edgar_gc_id_del(const E_Gadcon_Client_Class *client_class, const char *id); -static Evas_Object *_edgar_gc_icon(const E_Gadcon_Client_Class *client_class, Evas *evas); - -/* Gadgets API Prototypes */ -static void _edgar_api_dbg (Instance *inst, int id, Edje_Message_String_Set *msg); -static void _edgar_api_conf_set (Instance *inst, int id, Edje_Message_String_Set *msg); -static void _edgar_api_conf_get (Instance *inst, int id, Edje_Message_String_Set *msg); -static void _edgar_api_id_get (Instance *inst, int id, Edje_Message_String_Set *msg); -static void _edgar_api_min_set (Instance *inst, int id, Edje_Message_String_Set *msg); -static void _edgar_api_exec (Instance *inst, int id, Edje_Message_String_Set *msg); -static void _edgar_api_action (Instance *inst, int id, Edje_Message_String_Set *msg); - -/* Local Variables */ -static const char *gadgets_user_dir; -static const char *gadgets_system_dir; - -static Eina_List *classes; -static Eina_List *instances; -static Ecore_File_Monitor *mon1, *mon2; - -extern Config *edgar_conf; -extern E_Config_DD *conf_edd; -extern E_Config_DD *conf_item_edd; - -Ecore_Event_Handler *eeh1, *eeh2, *eeh3; - -/* Implementation */ -void -edgar_init(void) -{ - char buf[PATH_MAX]; - Eina_List *files; - char *filename; - - classes = NULL; - - INF("EDGAR: ================================"); - INF("EDGAR: Init"); - - snprintf(buf, sizeof(buf), "%s/.e/e/gadgets", e_user_homedir_get()); - gadgets_user_dir = eina_stringshare_add(buf); - - snprintf(buf, sizeof(buf), "%s/data/gadgets", e_prefix_data_get()); - gadgets_system_dir = eina_stringshare_add(buf); - - //Create user dir if not exists - if (!ecore_file_exists(gadgets_user_dir)) - ecore_file_mkpath(gadgets_user_dir); - - /* search in user dir */ - DBG("EDGAR: Search in %s", gadgets_user_dir); - files = ecore_file_ls(gadgets_user_dir); - EINA_LIST_FREE(files, filename) - { - snprintf(buf, sizeof(buf), "%s/%s", gadgets_user_dir, filename); - edgar_load_class(buf); - free(filename); - } - eina_list_free(files); - - /* search in system dir */ - DBG("EDGAR: Search in %s", gadgets_system_dir); - files = ecore_file_ls(gadgets_system_dir); - EINA_LIST_FREE(files, filename) - { - snprintf(buf, PATH_MAX, "%s/%s", gadgets_system_dir, filename); - edgar_load_class(buf); - free(filename); - } - eina_list_free(files); - - /* Monitor the directories */ - mon1 = ecore_file_monitor_add(gadgets_user_dir, _edgar_file_monitor_cb, NULL); - mon2 = ecore_file_monitor_add(gadgets_system_dir, _edgar_file_monitor_cb, NULL); - - /* Pipe Handler */ - eeh1 = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, - _edgar_exec_pipe_exit, NULL); - eeh2 = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, - _edgar_exec_pipe_data, NULL); - eeh3 = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, - _edgar_exec_pipe_data, NULL); -} - -void -edgar_shutdown(void) -{ - INF("EDGAR Shutdown (%d)", eina_list_count(classes)); - - if (eeh1) ecore_event_handler_del(eeh1); - if (eeh2) ecore_event_handler_del(eeh2); - if (eeh3) ecore_event_handler_del(eeh3); - eeh1 = eeh2 = eeh3 = NULL; - - if (mon1) ecore_file_monitor_del(mon1); - if (mon2) ecore_file_monitor_del(mon2); - mon1 = mon2 = NULL; - - while (classes) - { - edgar_unload_class(classes->data); - classes = eina_list_remove_list(classes, classes); - } - eina_stringshare_del(gadgets_user_dir); - eina_stringshare_del(gadgets_system_dir); -} - -/* Internals */ -static Eina_Bool -_edgar_monitor_dalayed(void *data) -{ - edgar_shutdown(); - edgar_init(); - return 0; -} - -static void -_edgar_file_monitor_cb(void *data, Ecore_File_Monitor *em, Ecore_File_Event event, const char *path) -{ - static Ecore_Timer *monitor_timer = NULL; - - switch (event) - { - case ECORE_FILE_EVENT_CREATED_FILE: - case ECORE_FILE_EVENT_DELETED_FILE: - case ECORE_FILE_EVENT_MODIFIED: - DBG("EDGAR: FILE EVENT [%s]", path); - //TODO check if is an edje file - if (monitor_timer) ecore_timer_del(monitor_timer); - monitor_timer = ecore_timer_add(1.5, _edgar_monitor_dalayed, NULL); - break; - case ECORE_FILE_EVENT_DELETED_SELF: - //TODO handle this catasastrofic case... - break; - case ECORE_FILE_EVENT_CREATED_DIRECTORY: - case ECORE_FILE_EVENT_DELETED_DIRECTORY: - default: - break; - } - -} - -static unsigned char -edgar_load_class(const char *path) -{ - E_Gadcon_Client_Class *cclass; - Eina_List *l; - char *style; - - if (!path || !ecore_file_exists(path)) - return 0; - - //TODO check better if is an edje file - if (!eina_str_has_suffix(path, ".edj")) - return 0; - - DBG("EDGAR: Load Gadget %s", path); - - //Do not load twice - EINA_LIST_FOREACH(classes, l, cclass) - { - //DBG("EDGAR: SEARCH: %s", cclass->name); - if (!strcmp(ecore_file_file_get(path), - ecore_file_file_get(cclass->name))) - return 0; - } - - //Alloc & populate the gc_class - cclass = E_NEW(E_Gadcon_Client_Class, 1); - if (!cclass) return 0; - cclass->version = GADCON_CLIENT_CLASS_VERSION; - cclass->name = eina_stringshare_add(path); - cclass->func.init = _edgar_gc_init; - cclass->func.shutdown = _edgar_gc_shutdown; - cclass->func.orient = _edgar_gc_orient; - cclass->func.label = _edgar_gc_label; - cclass->func.icon = _edgar_gc_icon; - cclass->func.id_new = _edgar_gc_id_new; - cclass->func.id_del = _edgar_gc_id_del; - - style = edje_file_data_get(path, "e/gadget/apparence"); - if (!style) style = E_GADCON_CLIENT_STYLE_PLAIN; - cclass->default_style = (char*)eina_stringshare_add(style); - - //Register the new class - e_gadcon_provider_register(cclass); - - classes = eina_list_append(classes, cclass); - return 1; -} - -static unsigned char -edgar_unload_class(E_Gadcon_Client_Class *cclass) -{ - DBG("EDGAR: UnLoad Gadgets %s", cclass->name); - - /* Free the cclass */ - e_gadcon_provider_unregister(cclass); - eina_stringshare_del(cclass->name); - eina_stringshare_del(cclass->default_style); - free(cclass); - - return 1; -} - -/******************** - * Gadcon IFace * - ********************/ - -// static void -// _edgar_focus_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -// { - // Instance *inst = data; - // ERR("FOCUSIN on %s!!!", inst->gcc->cf->id); - // evas_object_focus_set(inst->obj, 1); -// } - -static E_Gadcon_Client * -_edgar_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) -{ - //E_Gadcon_Client *gcc; - Instance *inst; - Config_Item *ci = NULL; - - DBG("EDGAR: Gadcon Init name: %s id: %s", name, id); - - /* Search for a config for this id */ - ci = eina_hash_find(edgar_conf->conf_items_hash, id); - if (!ci) - { - ci = E_NEW(Config_Item, 1); - ci->id = eina_stringshare_add(id); //TODO freeme - ci->data_hash = NULL; - eina_hash_direct_add(edgar_conf->conf_items_hash, ci->id, ci); - } - - /* Create the gadget instance */ - inst = E_NEW(Instance, 1); - if (!inst) return 0; - inst->ci = ci; - - /* Create the edje object */ - inst->obj = edje_object_add(gc->evas); - edje_object_file_set(inst->obj, name, "e/gadget/main");//TODO Here search different group names...or load the first one - evas_object_data_set(inst->obj, "EDGAR:instance", inst); - //evas_object_repeat_events_set(inst->obj, 0); - //evas_object_pass_events_set(inst->obj, 0); - - - /* setup callbacks on the edje object */ - edje_object_message_handler_set(inst->obj, _edgar_edje_messagge_cb, NULL); - //TODO MOUSE_DOWN?? I prefer MOUSE_IN!! - //evas_object_event_callback_add(inst->obj, EVAS_CALLBACK_MOUSE_IN, - // _edgar_mouse_down_cb, inst); - - // evas_object_event_callback_add(inst->obj, EVAS_CALLBACK_FOCUS_IN, - // _edgar_focus_cb, inst); - evas_object_event_callback_add(inst->obj, EVAS_CALLBACK_MOUSE_DOWN, - _edgar_mouse_down_cb, inst); - - /* Create the Gadcon_Client*/ - inst->gcc = e_gadcon_client_new(gc, name, id, style, inst->obj); - inst->gcc->data = inst; - - instances = eina_list_append(instances, inst); - return inst->gcc; -} - -static void -_edgar_gc_shutdown(E_Gadcon_Client *gcc) -{ - Instance *inst = gcc->data; - - DBG("EDGAR: Shutdown"); - instances = eina_list_remove(instances, inst); - evas_object_del(inst->obj); - E_FREE(inst); -} - -static void -_edgar_gc_orient(E_Gadcon_Client *gcc, E_Gadcon_Orient orient) -{ - Instance *inst = gcc->data; - - DBG("EDGAR: Gadcon Orient: %d", orient); - switch (orient) - { - case E_GADCON_ORIENT_FLOAT: - _edgar_message_send(inst, 0, "EDGAR_ORIENT", "FLOAT", NULL); - break; - case E_GADCON_ORIENT_HORIZ: - case E_GADCON_ORIENT_TOP: - case E_GADCON_ORIENT_BOTTOM: - case E_GADCON_ORIENT_CORNER_TL: - case E_GADCON_ORIENT_CORNER_TR: - case E_GADCON_ORIENT_CORNER_BL: - case E_GADCON_ORIENT_CORNER_BR: - _edgar_message_send(inst, 0, "EDGAR_ORIENT", "HORIZ", NULL); - break; - case E_GADCON_ORIENT_VERT: - case E_GADCON_ORIENT_LEFT: - case E_GADCON_ORIENT_RIGHT: - case E_GADCON_ORIENT_CORNER_LT: - case E_GADCON_ORIENT_CORNER_RT: - case E_GADCON_ORIENT_CORNER_LB: - case E_GADCON_ORIENT_CORNER_RB: - _edgar_message_send(inst, 0, "EDGAR_ORIENT", "VERT", NULL); - break; - default: - break; - } - - if (!inst->min_w && !inst->min_h) - edje_object_size_min_get(inst->obj, &inst->min_w, &inst->min_h); - - //edje_object_size_min_calc(inst->obj, &inst->min_w, &inst->min_h); - // DBG("EDGAR: w:%d h:%d", inst->min_w, inst->min_h); - - e_gadcon_client_min_size_set(gcc, inst->min_w, inst->min_h); - // DBG("EDGAR: DOPO"); -} - -static const char* -_edgar_gc_label(const E_Gadcon_Client_Class *client_class) -{ - char *label; - DBG("EDGAR: Gadcon Label for class: %s", client_class->name); - - //Search the label in the edje file or use the filename as label - label = edje_file_data_get(client_class->name, "e/gadget/name"); - if (!label) - label = (char*)ecore_file_file_get(client_class->name); - - return label; -} - -static const char* -_edgar_gc_id_new(const E_Gadcon_Client_Class *client_class) -{ - Config_Item *ci = NULL; - char buf[128]; - - snprintf(buf, sizeof(buf), "ED.%s.%.0f", - ecore_file_file_get(client_class->name), ecore_time_get() * 1000000); - - DBG("EDGAR: Gadcon ID New [%s]", buf); - - ci = E_NEW(Config_Item, 1); - ci->id = eina_stringshare_add(buf); - ci->data_hash = eina_hash_string_superfast_new(NULL); - eina_hash_direct_add(edgar_conf->conf_items_hash, ci->id, ci); - - return ci->id; -} - -static void -_edgar_gc_id_del(const E_Gadcon_Client_Class *client_class, const char *id) -{ - //DBG("EDGAR: Gadcon ID Del [%s]", id); - //~ Config_Item *ci = NULL; - - //~ if (!(ci = _skel_conf_item_get(id))) return; - - //~ /* cleanup !! */ - //~ if (ci->id) eina_stringshare_del(ci->id); - - //~ skel_conf->conf_items = eina_list_remove(skel_conf->conf_items, ci); - //~ E_FREE(ci); -} - -static Evas_Object* -_edgar_gc_icon(const E_Gadcon_Client_Class *client_class, Evas *evas) -{ - Evas_Object *icon; - - DBG("EDGAR: Gadcon Icon for class: %s", client_class->name); - - icon = edje_object_add(evas); - if (edje_object_file_set(icon, client_class->name, "e/gadget/icon")) - return icon; - - evas_object_del(icon); - return NULL; -} - -/************************ - * Gadgets Callbacks * - ************************/ -static void -_edgar_menu_post_cb(void *data, E_Menu *m) -{ - E_Gadcon_Client *gcc; - - if (!(gcc = data)) return; - if (gcc->gadcon) e_gadcon_locked_set(gcc->gadcon, 0); - if (!gcc->menu) return; - if (gcc->gadcon && gcc->gadcon->shelf && (gcc->menu == gcc->gadcon->shelf->menu)) - gcc->gadcon->shelf->menu = NULL; - e_object_del(E_OBJECT(gcc->menu)); - gcc->menu = NULL; -} - -static void -_edgar_menu_configure_cb(void *data, E_Menu *m, E_Menu_Item *mi) -{ -#ifdef HAVE_E19 - e_int_config_edgar_module(m->zone->comp, NULL); -#else - e_int_config_edgar_module(m->zone->container, NULL); -#endif -} - -static void -_edgar_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Instance *inst = data; - Evas_Event_Mouse_Down *ev = event_info; - - // DBG("EDGAR: DONW on %s!!!", inst->gcc->cf->id); - // evas_object_focus_set(inst->obj, 1); - - if (inst->gcc->menu) return; - if (ev->button == 3) - { - E_Menu_Item *mi; - E_Zone *zone; - int cx, cy, cw, ch; - - e_gadcon_locked_set(inst->gcc->gadcon, 1); - inst->gcc->menu = e_menu_new(); - - mi = e_menu_item_new(inst->gcc->menu); - e_menu_item_label_set(mi, "Gadgets settings"); // TODO i18n - e_util_menu_item_theme_icon_set(mi, "configure"); - e_menu_item_callback_set(mi, _edgar_menu_configure_cb, NULL); - - inst->gcc->menu = e_gadcon_client_util_menu_items_append(inst->gcc, inst->gcc->menu, 0); - e_menu_post_deactivate_callback_set(inst->gcc->menu, _edgar_menu_post_cb, inst->gcc); - - if (inst->gcc->gadcon->shelf) inst->gcc->gadcon->shelf->menu = inst->gcc->menu; - - e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &cx, &cy, &cw, &ch); - zone = inst->gcc->gadcon->zone; - if (!zone) zone = e_util_zone_current_get(e_manager_current_get()); - e_menu_activate_mouse(inst->gcc->menu, zone, - cx + ev->output.x, - cy + ev->output.y, 1, 1, - E_MENU_POP_DIRECTION_AUTO, ev->timestamp); - } -} - -static void -_edgar_edje_messagge_cb(void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *message) -{ - Edje_Message_String_Set *msg; - Instance *inst; - char *cmd; - - if (type != EDJE_MESSAGE_STRING_SET) - return; - - msg = message; - if (msg->count < 1) - return; - cmd = msg->str[0]; - - inst = evas_object_data_get(obj, "EDGAR:instance"); - if (!inst) return; - - // int i; - // printf("CMD [%s](%d) ", cmd, msg->count); - // for(i = 1; i < msg->count; i++) printf("[%s]", msg->str[i]); - // printf(""); - - //command must start with EDGAR_ and must have at least 1 char after it - if (strlen(cmd) < 7 || strncmp(cmd, "EDGAR_", 6)) - return; - cmd += 6; - - if (!strcmp(cmd, "DBG")) _edgar_api_dbg (inst, id, msg); - else if (!strcmp(cmd, "MIN_SET")) _edgar_api_min_set (inst, id, msg); - else if (!strcmp(cmd, "EXEC")) _edgar_api_exec (inst, id, msg); - else if (!strcmp(cmd, "ACTION")) _edgar_api_action (inst, id, msg); - else if (!strcmp(cmd, "CONF_SET")) _edgar_api_conf_set (inst, id, msg); - else if (!strcmp(cmd, "CONF_GET")) _edgar_api_conf_get (inst, id, msg); - else if (!strcmp(cmd, "ID_GET")) _edgar_api_id_get (inst, id, msg); - else WRN("Warning: unknow command '%s'", cmd); -} - -static void -_edgar_message_send(Instance *inst, int id, const char *args, ...) -{ - Edje_Message_String_Set *rmsg; - va_list ap; - const char *param; - int n = 0; - int i; - - //DBG("MSG"); - - //Count the args - va_start(ap, args); - param = args; - while (param != 0) - { - param = va_arg(ap, const char *); - n++; - } - if (n < 1) return; - - //Alloc messagge - rmsg = alloca(sizeof(Edje_Message_String_Set) + ((n - 1) * sizeof(char *))); //TODO FREE??? - rmsg->count = n; - - //Populate messagge - va_start(ap, args); - param = args; - for (i = 0; i < n; i++) - { - rmsg->str[i] = (char*)eina_stringshare_add(param); //NEED TO FREE??? - param = va_arg(ap, const char *); - } - va_end(ap); - - //Send the messagge - edje_object_message_send(inst->obj, EDJE_MESSAGE_STRING_SET, id, rmsg); -} - -/******************* - * Gadgets API * - *******************/ - -/** EDGAR_DBG "string to print" "another one" ... "as many as you wish" - * - */ -static void -_edgar_api_dbg(Instance *inst, int id, Edje_Message_String_Set *msg) -{ - int i; - - printf("\033[31;1m[GADGET %s] ", - ecore_file_file_get(inst->gcc->client_class->name)); - for (i = 1; i < msg->count; i++) - printf("%s ", msg->str[i]); - printf("\033[0m"); - printf("\n"); -} - -/** EDGAR_ID_GET no_params - * - * replay with EDGAR_ID_GET_REPLAY "id" - */ -static void -_edgar_api_id_get(Instance *inst, int id, Edje_Message_String_Set *msg) -{ - DBG("EDGAR: ID_GET"); - _edgar_message_send(inst, id, "EDGAR_ID_GET_REPLY", (char*)inst->ci->id); -} - -/** EDGAR_MIN_SET "min_w min_h" - * - */ -static void -_edgar_api_min_set(Instance *inst, int id, Edje_Message_String_Set *msg) -{ - char *value; - int min_w, min_h; - //~ char *value; - //~ Data_Item *data; - - if (msg->count < 2) - return; - - value = msg->str[1]; - //~ value = msg->str[2]; - - DBG("EDGAR: MIN_SET '%s'", value); - - sscanf(value, "%d %d", &min_w, &min_h); - DBG("EDGAR: MIN_SET '%d' '%d'", min_w, min_h); - inst->gcc->min.w = min_w; - inst->gcc->min.h = min_h; - - //e_gadcon_client_min_size_set(inst->gcc, min_w, min_h); - - //~ e_config_save_queue(); -} - -static Eina_Bool -_edgar_exec_pipe_data(void *data, int ev_type, void *ev) -{ - Ecore_Exe_Event_Data *e = (Ecore_Exe_Event_Data *)ev; - Edgar_Exe_Data *exe_data; - - if (!e->exe) return 1; - if (!ecore_exe_tag_get(e->exe) )return 1; - if (strcmp(ecore_exe_tag_get(e->exe), "EdG")) return 1; - - exe_data = ecore_exe_data_get(e->exe); - if (!exe_data) return 1; - - //DBG("EDGAR: data received."); - if (e->lines) - { - int i; - for (i = 0; e->lines[i].line != NULL; i++) - { - _edgar_message_send(exe_data->inst, exe_data->id_msg, - "EDGAR_EXEC_DATA", e->lines[i].line, NULL); - - if (exe_data->last_line) eina_stringshare_del(exe_data->last_line); - exe_data->last_line = eina_stringshare_add(e->lines[i].line); - } - } - return 1; -} - -static Eina_Bool -_edgar_exec_pipe_exit(void *data, int ev_type, void *ev) -{ - Ecore_Exe_Event_Del *e = (Ecore_Exe_Event_Del *)ev; - Edgar_Exe_Data *exe_data; - - if (!e->exe) return 1; - if (!ecore_exe_tag_get(e->exe) )return 1; - if (strcmp(ecore_exe_tag_get(e->exe), "EdG")) return 1; - - exe_data = ecore_exe_data_get(e->exe); - if (!exe_data) return 1; - - if (e->exit_code) - { - //~ DBG("EDGAR: Error in EXEC, exit code: %d", e->exit_code); - _edgar_message_send(exe_data->inst, exe_data->id_msg, - "EDGAR_EXEC_REPLY", "ERR", exe_data->last_line, NULL); - } - else - { - //~ DBG("EDGAR: Operation completed"); - _edgar_message_send(exe_data->inst, exe_data->id_msg, - "EDGAR_EXEC_REPLY", "OK", exe_data->last_line, NULL); - } - - if (exe_data->last_line) eina_stringshare_del(exe_data->last_line); - E_FREE(exe_data); - - return 0; -} - -/** EDGAR_EXEC "command" - * - * replay with EDGAR_EXEC_REPLY "status" "last_line" when the command end. - * status can be 'OK' 'ERR'. - * You can also listen for EDGAR_EXEC_DATA "line" to catch every line of the - * output. - */ -static void -_edgar_api_exec(Instance *inst, int id, Edje_Message_String_Set *msg) -{ - char *exe; - Edgar_Exe_Data *exe_data; - Ecore_Exe *ee; - - if (msg->count < 2) - return; - - if (!edgar_guardian_is_allowed(inst, EDGAR_GUARDIAN_TYPE_COMMAND, msg->str[1])) - return; - - exe = msg->str[1]; - // DBG("EDGAR: EXEC '%s'", exe); - - // if (inst->eeh1) - // { - // WRN("There is another EXEC running...skipping."); - // return; - // } - - exe_data = E_NEW(Edgar_Exe_Data, 1); - exe_data->id_msg = id; - exe_data->inst = inst; - exe_data->last_line = NULL; - - ee = ecore_exe_pipe_run(exe, - ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_READ_LINE_BUFFERED | - ECORE_EXE_PIPE_ERROR | ECORE_EXE_PIPE_ERROR_LINE_BUFFERED, - exe_data); - ecore_exe_tag_set(ee, "EdG"); -} - -/** EDGAR_ACTION "action" - * - * replay with EDGAR_ACTION_REPLY "status". - * status can be 'OK' 'ERR'. - */ -static void -_edgar_api_action(Instance *inst, int id, Edje_Message_String_Set *msg) -{ - E_Action *ac; - char *action; - char *params; - - if (msg->count != 2) - { - ERR("Wrong args count: %d", msg->count); - return; - } - - if (!edgar_guardian_is_allowed(inst, EDGAR_GUARDIAN_TYPE_EACTION, msg->str[1])) - return; - - action = strdup(msg->str[1]); - params = strchr(action, ' '); - if (params) - { - *params = '\0'; - params++; - } - else - { - params = ""; - } - - ac = e_action_find(action); - if (!ac) - { - ERR("Cannot find action: %s", action); - _edgar_message_send(inst, id, "EDGAR_ACTION_REPLY", "ERR", NULL); - free(action); - return; - } - - if (!ac->func.go) - { - ERR("Cannot find go() func in action: %s", action); - _edgar_message_send(inst, id, "EDGAR_ACTION_REPLY", "ERR", NULL); - free(action); - return; - } - - DBG("EDGAR: GO! action:'%s' params:'%s'", action, params); - ac->func.go(NULL, params); - _edgar_message_send(inst, id, "EDGAR_ACTION_REPLY", "OK", NULL); - - free(action); - - /*** print the list of available actions - { - Eina_List *l, *l2; - - E_Action_Group *actg; - E_Action_Description *actd; - int g, a; - for (l = e_action_groups_get(), g = 0; l; l = l->next, g++) - { - actg = l->data; - - if (!actg->acts) continue; - printf("*** %s\n", actg->act_grp); - - for (l2 = actg->acts, a = 0; l2; l2 = l2->next, a++) - { - actd = l2->data; - printf(" - %s [%s]\n", actd->act_name, actd->act_cmd); - printf(" params:'%s' '%s'\n", actd->act_params, actd->param_example); - } - } - } - */ - -} - -/** EDGAR_CONF_SET "key" "value" - * - */ -static void -_edgar_api_conf_set(Instance *inst, int id, Edje_Message_String_Set *msg) -{ - char *key; - char *value; - Data_Item *data; - - if (msg->count < 3) - return; - - key = msg->str[1]; - value = msg->str[2]; - - DBG("EDGAR: CONF_SET key '%s' val: '%s'", key, value); - - data = eina_hash_find(inst->ci->data_hash, key); - if (!data) - { - DBG("EDGAR: DATA NOT EXIST. Create new"); - data = E_NEW(Data_Item, 1); - data->val_str = NULL; - data->val_int = 0; - eina_hash_add(inst->ci->data_hash, key, data); - } - - if (data->val_str) eina_stringshare_del(data->val_str); - data->val_str = eina_stringshare_add(value); - - e_config_save_queue(); -} - -/** EDGAR_CONF_GET "key" - * - * replay with EDGAR_CONF_GET_REPLAY "key" "value" - * note: if no conf with that key exists, than no REPLAY msg is sent. - */ -static void -_edgar_api_conf_get(Instance *inst, int id, Edje_Message_String_Set *msg) -{ - Data_Item *data; - char *key; - - DBG("EDGAR: CONF_GET"); - - if (msg->count < 2) - return; - - key = msg->str[1]; - data = eina_hash_find(inst->ci->data_hash, key); - if (!data) return; - - _edgar_message_send(inst, id, "EDGAR_CONF_GET_REPLY", key, data->val_str); -} diff --git a/src/OLD_e_mod_edgar.h b/src/OLD_e_mod_edgar.h deleted file mode 100644 index 76c2e61..0000000 --- a/src/OLD_e_mod_edgar.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright (C) 2008 Davide Andreoli (see AUTHORS) - * - * This file is part of edgar. - * edgar is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * edgar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with edgar. If not, see . - */ - -#ifndef E_MOD_EDGAR_H -#define E_MOD_EDGAR_H - -void edgar_init(void); -void edgar_shutdown(void); - - -#endif diff --git a/src/OLD_e_mod_guardian.c b/src/OLD_e_mod_guardian.c deleted file mode 100644 index a29a239..0000000 --- a/src/OLD_e_mod_guardian.c +++ /dev/null @@ -1,217 +0,0 @@ -/* Copyright (C) 2008-2014 Davide Andreoli (see AUTHORS) - * - * This file is part of edgar. - * edgar is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * edgar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with edgar. If not, see . - */ - -#include -#include "e_mod_main.h" -#include "e_mod_guardian.h" - -typedef struct { - const char *action; - int action_type; - int check_state; - Guardian_Item *inwait_item; -}Guardian_Dialog_Data; - -extern Config *edgar_conf; - -static Guardian_Item * -_edgar_guardian_allow_set(const char *gadget, const char *action, int allow) -{ - Guardian_Item *item; - char key[4096]; - - if (allow >= EDGAR_GUARDIAN_DENY_LAST) - return NULL; - - snprintf(key, sizeof(key), "::%s::", gadget); - if ((allow != EDGAR_GUARDIAN_DENY_ALL) && (allow != EDGAR_GUARDIAN_ALLOW_ALL)) - { - // we always want an 'header' item (simplify the config list) - if (!eina_hash_find(edgar_conf->conf_guardian_hash, &key)) - { - item = E_NEW(Guardian_Item, 1); - item->allow = EDGAR_GUARDIAN_ASK; - eina_hash_add(edgar_conf->conf_guardian_hash, key, item); - } - snprintf(key, sizeof(key), "%s::%s", gadget, action); - } - - item = eina_hash_find(edgar_conf->conf_guardian_hash, &key); - if (!item) - { - item = E_NEW(Guardian_Item, 1); - eina_hash_add(edgar_conf->conf_guardian_hash, key, item); - } - item->allow = allow; - - return item; -} - -static void -_edgar_guardian_dialog_allow_cb(void *data, E_Dialog *dia) -{ - Instance *inst = data; - Guardian_Dialog_Data *gdd; - - gdd = e_object_data_get((E_Object *)dia); - _edgar_guardian_allow_set(inst->gcc->client_class->name, gdd->action, - gdd->check_state ? EDGAR_GUARDIAN_ALLOW_ALL : EDGAR_GUARDIAN_ALLOW); - - e_object_del((E_Object *)dia); -} - -static void -_edgar_guardian_dialog_deny_cb(void *data, E_Dialog *dia) -{ - Instance *inst = data; - Guardian_Dialog_Data *gdd; - - gdd = e_object_data_get((E_Object *)dia); - _edgar_guardian_allow_set(inst->gcc->client_class->name, gdd->action, - gdd->check_state ? EDGAR_GUARDIAN_DENY_ALL : EDGAR_GUARDIAN_DENY); - e_object_del((E_Object *)dia); -} - -static void -_edgar_guardian_dialog_free_cb(void *dia) -{ - Guardian_Dialog_Data *gdd; - - gdd = e_object_data_get(dia); - if (!gdd) return; - - if (gdd->inwait_item && gdd->inwait_item->allow == EDGAR_GUARDIAN_IN_WAIT) - gdd->inwait_item->allow = EDGAR_GUARDIAN_ASK; - - if (gdd->action) eina_stringshare_del(gdd->action); - E_FREE(gdd); -} - -EAPI Eina_Bool -edgar_guardian_is_allowed(Instance *inst, int type, const char *action) -{ - Guardian_Item *allow; - Guardian_Dialog_Data *gdd; - E_Dialog *dia; - char buf[4096]; - int w, h; - - // just to be safe, in case something goes wrong loading from config - if (!edgar_conf->conf_guardian_hash) - edgar_conf->conf_guardian_hash = eina_hash_string_superfast_new(NULL); - - // check in the guardian hash - if (action && inst && inst->gcc && inst->gcc->client_class && - inst->gcc->client_class->name) - { - snprintf(buf, sizeof(buf), "::%s::", inst->gcc->client_class->name); - allow = eina_hash_find(edgar_conf->conf_guardian_hash, &buf); - if (!allow || allow->allow == EDGAR_GUARDIAN_ASK) - { - snprintf(buf, sizeof(buf), "%s::%s", inst->gcc->client_class->name, action); - allow = eina_hash_find(edgar_conf->conf_guardian_hash, &buf); - } - DBG("Guardian, can exec this? '%s'", buf); - - if (allow && allow->allow != EDGAR_GUARDIAN_ASK) - { - switch (allow->allow) - { - case EDGAR_GUARDIAN_ALLOW: - case EDGAR_GUARDIAN_ALLOW_ALL: - DBG("Yes, you can! go on."); - return EINA_TRUE; - - case EDGAR_GUARDIAN_DENY: - case EDGAR_GUARDIAN_DENY_ALL: - case EDGAR_GUARDIAN_IN_WAIT: - default: - DBG("NO! permission denied. (reason: %d)", allow->allow); - return EINA_FALSE; - } - } - } - - // or ask the user what to do - gdd = E_NEW(Guardian_Dialog_Data, 1); - if (!gdd) return EINA_FALSE; - gdd->action = eina_stringshare_add(action); - gdd->action_type = type; - - if (type == EDGAR_GUARDIAN_TYPE_EACTION) - snprintf(buf, sizeof(buf), - "The gadget \"%s\"
" - "want to execute the enlightenment action:
" - "
%s

" - "Do I have to allow the execution?", inst->ci->id ,action); - else if (type == EDGAR_GUARDIAN_TYPE_COMMAND) - snprintf(buf, sizeof(buf), - "The gadget \"%s\"
" - "want to execute the shell command:
" - "
%s

" - "Do I have to allow the execution?", inst->ci->id ,action); - - else if (type == EDGAR_GUARDIAN_TYPE_GETURL) - snprintf(buf, sizeof(buf), - "The gadget \"%s\"
" - "want to access the net at the url:
" - "
%s

" - "Do I have to allow the access?", inst->ci->id ,action); - - - // dialog -#ifdef HAVE_E19 - E_Comp *con; - con = e_manager_current_get()->comp; -#else - E_Container *con; - con = e_container_current_get(e_manager_current_get()); -#endif - dia = e_dialog_new(con, "can exec", "class"); - e_dialog_resizable_set(dia, EINA_TRUE); - e_dialog_title_set(dia, "The gadget guardian"); - e_dialog_button_add(dia, "Allow", NULL, _edgar_guardian_dialog_allow_cb, inst); - e_dialog_button_add(dia, "Deny", NULL, _edgar_guardian_dialog_deny_cb, inst); - e_object_data_set((E_Object*)dia, gdd); - e_object_free_attach_func_set((E_Object*)dia, _edgar_guardian_dialog_free_cb); - - // vbox - Evas_Object *vbox; - vbox = e_widget_list_add(dia->win->evas, 0, 0); - - // label - Evas_Object *text; - text = e_widget_textblock_add(dia->win->evas); - e_widget_textblock_markup_set(text, buf); - e_widget_size_min_set(text, 260 * e_scale, 90 * e_scale); // hmmm, :/ - e_widget_list_object_append(vbox, text, 1, 1, 0.0); - - // check - Evas_Object *chk; - chk = e_widget_check_add(dia->win->evas, "Allow or deny all the actions from this gadget", &gdd->check_state); //TODO i18n - e_widget_list_object_append(vbox, chk, 1, 1, 0.0); - - // resize & show the dialog - e_widget_size_min_get(vbox, &w, &h); - e_dialog_content_set(dia, vbox, w, h); - e_dialog_show(dia); - - // set to deny (in_wait), until the user choose or the dialog will be closed - gdd->inwait_item = _edgar_guardian_allow_set(inst->gcc->client_class->name, - action, EDGAR_GUARDIAN_IN_WAIT); - return EINA_FALSE; -} diff --git a/src/OLD_e_mod_guardian.h b/src/OLD_e_mod_guardian.h deleted file mode 100644 index bd0a81c..0000000 --- a/src/OLD_e_mod_guardian.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright (C) 2008 Davide Andreoli (see AUTHORS) - * - * This file is part of edgar. - * edgar is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * edgar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with edgar. If not, see . - */ - -#ifndef E_MOD_EDGAR_GUARDIAN_H -#define E_MOD_EDGAR_GUARDIAN_H - - -EAPI Eina_Bool edgar_guardian_is_allowed(Instance *inst, int type, const char *action); - -#endif diff --git a/src/e_mod_edgar.c b/src/e_mod_edgar.c index 70152f1..329fc95 100644 --- a/src/e_mod_edgar.c +++ b/src/e_mod_edgar.c @@ -18,10 +18,12 @@ #include #include +#include + #include "e_mod_main.h" #include "e_mod_edgar.h" #include "efl.eo_api.h" -#include "Efl_Ui.h" + #ifdef EFL_VERSION_1_21 @@ -147,7 +149,7 @@ edgar_init() int ret; // prepare the local scope - snprintf(buf, sizeof(buf), "%s/enlightenment/gadgets", e_prefix_lib_get()); + snprintf(buf, sizeof(buf), "%s/enlightenment/edgar_gadgets", e_prefix_lib_get()); edgar_gadgets_system_dir = eina_stringshare_add(buf); edgar_gadgets = eina_hash_string_superfast_new(edgar_gadgets_hash_free_func); @@ -165,6 +167,8 @@ edgar_init() if (import_efl__eo() != 0) { DBG("EDGAR: Cannot import python-efl"); + if (PyErr_Occurred()) + PyErr_Print(); e_util_dialog_internal("Edgar Error", "Python-efl not found.
" "Your python gadgets will not work.

" diff --git a/src/efl.eo_api.h b/src/efl.eo_api.h index 25419b8..20bdd3a 100644 --- a/src/efl.eo_api.h +++ b/src/efl.eo_api.h @@ -1,11 +1,16 @@ +/* Generated by Cython 0.29.14 */ + #ifndef __PYX_HAVE_API__efl__eo #define __PYX_HAVE_API__efl__eo +#ifdef __MINGW64__ +#define MS_WIN64 +#endif #include "Python.h" -static PyObject *(*__pyx_f_3efl_2eo_object_from_instance)(Eo *) = 0; -#define object_from_instance __pyx_f_3efl_2eo_object_from_instance -static Eo *(*__pyx_f_3efl_2eo_instance_from_object)(PyObject *) = 0; -#define instance_from_object __pyx_f_3efl_2eo_instance_from_object +static PyObject *(*__pyx_api_f_3efl_2eo_object_from_instance)(Eo *) = 0; +#define object_from_instance __pyx_api_f_3efl_2eo_object_from_instance +static Eo *(*__pyx_api_f_3efl_2eo_instance_from_object)(PyObject *) = 0; +#define instance_from_object __pyx_api_f_3efl_2eo_instance_from_object #if !defined(__Pyx_PyIdentifier_FromString) #if PY_MAJOR_VERSION < 3 #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) @@ -14,23 +19,6 @@ static Eo *(*__pyx_f_3efl_2eo_instance_from_object)(PyObject *) = 0; #endif #endif -#ifndef __PYX_HAVE_RT_ImportModule -#define __PYX_HAVE_RT_ImportModule -static PyObject *__Pyx_ImportModule(const char *name) { - PyObject *py_name = 0; - PyObject *py_module = 0; - py_name = __Pyx_PyIdentifier_FromString(name); - if (!py_name) - goto bad; - py_module = PyImport_Import(py_name); - Py_DECREF(py_name); - return py_module; -bad: - Py_XDECREF(py_name); - return 0; -} -#endif - #ifndef __PYX_HAVE_RT_ImportFunction #define __PYX_HAVE_RT_ImportFunction static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { @@ -46,14 +34,14 @@ static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (** cobj = PyDict_GetItemString(d, funcname); if (!cobj) { PyErr_Format(PyExc_ImportError, - "%s does not export expected C function %s", + "%.200s does not export expected C function %.200s", PyModule_GetName(module), funcname); goto bad; } -#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0) +#if PY_VERSION_HEX >= 0x02070000 if (!PyCapsule_IsValid(cobj, sig)) { PyErr_Format(PyExc_TypeError, - "C function %s.%s has wrong signature (expected %s, got %s)", + "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); goto bad; } @@ -67,7 +55,7 @@ static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (** while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } if (*s1 != *s2) { PyErr_Format(PyExc_TypeError, - "C function %s.%s has wrong signature (expected %s, got %s)", + "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", PyModule_GetName(module), funcname, sig, desc); goto bad; } @@ -87,10 +75,10 @@ bad: static int import_efl__eo(void) { PyObject *module = 0; - module = __Pyx_ImportModule("efl.eo"); + module = PyImport_ImportModule("efl.eo"); if (!module) goto bad; - if (__Pyx_ImportFunction(module, "object_from_instance", (void (**)(void))&__pyx_f_3efl_2eo_object_from_instance, "PyObject *(Eo *)") < 0) goto bad; - if (__Pyx_ImportFunction(module, "instance_from_object", (void (**)(void))&__pyx_f_3efl_2eo_instance_from_object, "Eo *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "object_from_instance", (void (**)(void))&__pyx_api_f_3efl_2eo_object_from_instance, "PyObject *(Eo *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "instance_from_object", (void (**)(void))&__pyx_api_f_3efl_2eo_instance_from_object, "Eo *(PyObject *)") < 0) goto bad; Py_DECREF(module); module = 0; return 0; bad: diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..a6740eb --- /dev/null +++ b/src/meson.build @@ -0,0 +1,12 @@ + +module = shared_module( + 'module', + 'e_mod_main.c', + 'e_mod_edgar.c', + + dependencies : [dep_e, dep_py3], + install_dir: lib_install_dir, + include_directories: config_dir, + install: true, + name_prefix: '', +)