davemds pushed a commit to branch master. http://git.enlightenment.org/enlightenment/modules/edgar.git/commit/?id=4a81ad6b471df7d6165f7ab318bcd3589a3a6f82
commit 4a81ad6b471df7d6165f7ab318bcd3589a3a6f82 Author: Dave Andreoli <d...@gurumeditation.it> Date: Sat Jul 14 17:26:32 2018 +0200 Update all gadgets to API 2 --- GADGETS/audio/__init__.py | 98 ++++++++++++++++++++++-------------------- GADGETS/audio/audio.edc | 35 --------------- GADGETS/calculator/__init__.py | 4 +- GADGETS/cpu/__init__.py | 90 +++++++++++++++++++++----------------- GADGETS/cpu/cpu.edc | 13 ------ GADGETS/dropbox/__init__.py | 42 +++++++++--------- GADGETS/dropbox/dropbox.edc | 18 -------- GADGETS/led_clock/__init__.py | 9 +++- GADGETS/mem/__init__.py | 91 +++++++++++++++++++-------------------- GADGETS/mem/mem.edc | 12 ------ GADGETS/netspeed/__init__.py | 55 ++++++++++++++---------- GADGETS/netspeed/netspeed.edc | 44 +------------------ 12 files changed, 208 insertions(+), 303 deletions(-) diff --git a/GADGETS/audio/__init__.py b/GADGETS/audio/__init__.py index 25a873c..a13f73f 100644 --- a/GADGETS/audio/__init__.py +++ b/GADGETS/audio/__init__.py @@ -11,20 +11,24 @@ from efl import ecore from efl import evas from efl import edje from efl.dbus_mainloop import DBusEcoreMainLoop -from efl.elementary.label import Label -from efl.elementary.layout import Layout -from efl.elementary.slider import Slider +from efl.evas import EXPAND_HORIZ, FILL_HORIZ +from efl import elementary as elm __gadget_name__ = 'Audio' -__gadget_vers__ = '0.1' +__gadget_vers__ = '0.2' __gadget_auth__ = 'DaveMDS' __gadget_mail__ = 'd...@gurumeditation.it' __gadget_desc__ = 'The complete audio gadget.' -__gadget_vapi__ = 1 +__gadget_vapi__ = 2 __gadget_opts__ = { 'popup_on_desktop': True } +# def DBG(msg): + # print("AUDIO: %s" % msg) + # sys.stdout.flush() + + _instance = None @@ -43,6 +47,7 @@ class Gadget(e.Gadget): self.pulse = PulseAudio_Client() def instance_created(self, obj, site): + # DBG("INSTANCE CREATED") super().instance_created(obj, site) obj.signal_callback_add('mouse,down,2', 'over', self.speaker_click_cb) @@ -51,6 +56,7 @@ class Gadget(e.Gadget): self.speaker_update(obj) def instance_destroyed(self, obj): + # DBG("INSTANCE DESTROYED") super().instance_destroyed(obj) def speaker_click_cb(self, obj, sig, source): @@ -76,54 +82,55 @@ class Gadget(e.Gadget): return ch.volume_set(min(max(0, new_vol), 65500)) - def popup_created(self, popup): - super().popup_created(popup) + def popup_created(self, elm_parent): + # DBG("POPUP CREATED") + main_box = elm.Box(elm_parent) + main_box.show() + + players_box = elm.Box(main_box, size_hint_expand=EXPAND_HORIZ, + size_hint_fill=FILL_HORIZ) + main_box.pack_end(players_box) + players_box.show() + + volumes_box = elm.Box(main_box, size_hint_expand=EXPAND_HORIZ, + size_hint_fill=FILL_HORIZ) + main_box.pack_end(volumes_box) + volumes_box.show() + + main_box.data['players_box'] = players_box + main_box.data['volumes_box'] = volumes_box # add all the available players to the popup edje box for player in self.mpris.players: - self.popup_player_add(popup, player) + self.popup_player_add(main_box, player) # add all the channel sliders if self.pulse.conn is not None: for ch in self.pulse.channels: - self.popup_volume_add(popup, ch) + self.popup_volume_add(main_box, ch) else: - lb = Label(popup, text='Cannot connect to PulseAudio') + lb = elm.Label(popup, text='Cannot connect to PulseAudio') + volumes_box.pack_start(lb) lb.show() - popup.part_box_append('volumes.box', lb) - - def popup_destroyed(self, popup): - super().popup_destroyed(popup) - while True: - # pop an item from the players box - obj = popup.part_box_remove_at('players.box', 0) - if obj is None: break + return main_box - # remove the obj from our lists + def popup_destroyed(self, popup): + # DBG("POPUP DESTROYED") + # remove the objects from our lists + for obj in popup.data['players_box'].children: for player, objs in self.player_objs.items(): - while obj in objs: objs.remove(obj) - - # delete the player layout - obj.delete() - - while True: - # pop an item from the players box - obj = popup.part_box_remove_at('volumes.box', 0) - if obj is None: break - - # remove the obj from our lists + while obj in objs: + objs.remove(obj) + for obj in popup.data['volumes_box'].children: for channel, objs in self.channel_objs.items(): - while obj in objs: objs.remove(obj) - - # delete the slider - obj.delete() + while obj in objs: + objs.remove(obj) def popup_player_add(self, popup, player): # create the edje obj for this player from 'e/gadgets/audio/player' - o = Layout(popup) + o = elm.Layout(popup) e.theme_object_set(o, 'audio', 'player') - o.size_hint_min = o.edje.size_min o.signal_callback_add('act,play', '', lambda o,sig,src: player.play()) o.signal_callback_add('act,prev', '', lambda o,sig,src: player.prev()) @@ -134,8 +141,7 @@ class Gadget(e.Gadget): o.show() # insert the player in the popup box - popup.part_box_append('players.box', o) - popup.size_hint_min = popup.size_min + popup.data['players_box'].pack_end(o) # keep track of this obj in the player_objs dict if not player in self.player_objs: @@ -158,9 +164,6 @@ class Gadget(e.Gadget): # remove the player from our list del self.player_objs[player] - for popup in self._popups: - popup.size_hint_min = popup.size_min - def player_update(self, obj, player): # player name obj.part_text_set('player_name', player.label or player.name) @@ -195,8 +198,10 @@ class Gadget(e.Gadget): pass def popup_volume_add(self, popup, channel): - sl = Slider(popup, text=channel.name, min_max=(0, 65500), - size_hint_align=(evas.EVAS_HINT_FILL, 0.0)) + sl = elm.Slider(popup, text=channel.name, min_max=(0, 65500), + span_size=150, + size_hint_expand=EXPAND_HORIZ, + size_hint_fill=FILL_HORIZ) sl.value = channel.volume sl.disabled = True if channel.muted else False sl.callback_changed_add(self.popup_slider_changed_cb, channel) @@ -207,8 +212,7 @@ class Gadget(e.Gadget): sl.show() # insert the slider in the popup box - popup.part_box_prepend('volumes.box', sl) - popup.size_hint_min = popup.size_min + popup.data['volumes_box'].pack_start(sl) # keep track of this obj in the channel_objs dict if not channel in self.channel_objs: @@ -257,8 +261,6 @@ class Gadget(e.Gadget): del self.channel_objs[channel][:] del self.channel_objs[channel] - for popup in self._popups: - popup.size_hint_min = popup.size_min class Mpris2_Client(object): BASE_PATH = 'org.mpris.MediaPlayer2.' @@ -296,6 +298,7 @@ class Mpris2_Client(object): del player break + class Mpris2_Player(object): MAIN_IFACE = 'org.mpris.MediaPlayer2' PLAYER_IFACE = 'org.mpris.MediaPlayer2.Player' @@ -374,6 +377,7 @@ class AudioChannel(object): return '[%s]: "%s" volume: %s' % \ (self.iface.split('.')[-1], self.name, self.volume[:]) + class PulseAudio_Client(object): PULSE_OBJ = '/org/pulseaudio/core1' PULSE_IFACE = 'org.PulseAudio.Core1' diff --git a/GADGETS/audio/audio.edc b/GADGETS/audio/audio.edc index 94e7c8a..5bb9685 100644 --- a/GADGETS/audio/audio.edc +++ b/GADGETS/audio/audio.edc @@ -269,41 +269,6 @@ collections { } } -/** - * API [e/gadget/popup] This is the group that will be placed inside popups - */ - group { name: "e/gadgets/audio/popup"; - min: 310 0; - parts { - part { name: "players.box"; - type: BOX; - description { state: "default" 0.0; - rel2.relative: 1.0 0.0; - align: 0.0 0.0; - box { - layout: "vertical"; - padding: 0 6; - min: 1 1; - } - } - } - part { name: "volumes.box"; - type: BOX; - description { state: "default" 0.0; - rel1.to: "players.box"; - rel1.relative: 0.0 1.0; - rel1.offset: 0 6; - align: 0.0 0.0; - box { - layout: "vertical"; - padding: 0 6; - min: 1 1; - } - } - } - } - } - group { name: "e/gadgets/audio/player"; min: 310 100; styles { diff --git a/GADGETS/calculator/__init__.py b/GADGETS/calculator/__init__.py index cc4e99a..375e031 100644 --- a/GADGETS/calculator/__init__.py +++ b/GADGETS/calculator/__init__.py @@ -4,11 +4,11 @@ import e __gadget_name__ = 'Calculator' -__gadget_vers__ = '0.1' +__gadget_vers__ = '0.2' __gadget_auth__ = 'DaveMDS' __gadget_mail__ = 'd...@gurumeditation.it' __gadget_desc__ = 'A pure edje calculator.' -__gadget_vapi__ = 1 +__gadget_vapi__ = 2 class Gadget(e.Gadget): diff --git a/GADGETS/cpu/__init__.py b/GADGETS/cpu/__init__.py index 7bf9366..da851b4 100644 --- a/GADGETS/cpu/__init__.py +++ b/GADGETS/cpu/__init__.py @@ -9,19 +9,23 @@ from efl import ecore from efl import evas from efl import edje from efl.evas import EXPAND_BOTH, FILL_BOTH -from efl.elementary import Box, Label, Entry, Icon, Genlist, GenlistItemClass, \ - ELM_OBJECT_SELECT_MODE_NONE, ELM_LIST_COMPRESS +from efl import elementary as elm __gadget_name__ = 'CPU Monitor' -__gadget_vers__ = '0.1' +__gadget_vers__ = '0.2' __gadget_auth__ = 'DaveMDS' __gadget_mail__ = 'd...@gurumeditation.it' __gadget_desc__ = 'Multicore CPU monitor' -__gadget_vapi__ = 1 +__gadget_vapi__ = 2 __gadget_opts__ = { 'popup_on_desktop': False } +# def DBG(msg): +# print("CPU: %s" % msg) +# sys.stdout.flush() + + class Gadget(e.Gadget): def __init__(self): @@ -31,7 +35,7 @@ class Gadget(e.Gadget): self.aspect = None self.main_poller = None self.popups_poller = None - self.popups_itc = GenlistItemClass(item_style='default', + self.popups_itc = elm.GenlistItemClass(item_style='default', text_get_func=self.gl_text_get, content_get_func=self.gl_content_get) @@ -73,37 +77,57 @@ class Gadget(e.Gadget): return ecore.ECORE_CALLBACK_RENEW - def popup_created(self, popup): - super().popup_created(popup) - - box = Box(popup) - popup.part_swallow('main.swallow', box) - box.show() + def popup_created(self, elm_parent): + table = elm.Table(elm_parent) + table.show() - en = Entry(popup, single_line=True, editable=False) + en = elm.Entry(table, single_line=True, editable=False) en.text_style_user_push("DEFAULT='font_weight=Bold'") - box.pack_end(en) + table.pack(en, 0, 0, 1, 1) en.show() - popup.data['head'] = en - li = Genlist(popup, homogeneous=True, mode=ELM_LIST_COMPRESS, - select_mode=ELM_OBJECT_SELECT_MODE_NONE, - size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH) - box.pack_end(li) + li = elm.Genlist(table, homogeneous=True, mode=elm.ELM_LIST_COMPRESS, + select_mode=elm.ELM_OBJECT_SELECT_MODE_NONE, + size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH) + table.pack(li, 0, 1, 1, 1) li.show() - popup.data['list'] = li + + rect = evas.Rectangle(table.evas, color=(0,0,0,0), + size_hint_min=(300,300)) + table.pack(rect, 0, 1, 1, 1) + + table.data['head'] = en + table.data['list'] = li self.popups_poller_cb() if self.popups_poller is None: self.popups_poller = ecore.Poller(16, self.popups_poller_cb) + self.popup_update(table) - def popup_destroyed(self, popup): - super().popup_destroyed(popup) + return table + def popup_destroyed(self, popup): if len(self._popups) < 1 and self.popups_poller is not None: self.popups_poller.delete() self.popups_poller = None - + + def popup_update(self, popup): + li = popup.data['list'] + + # adjust the size (items count) of the genlist + items_count = li.items_count() + procs_count = len(self.top_procs) + if procs_count > items_count: + for idx in range(items_count, procs_count): + li.item_append(self.popups_itc, idx) + elif procs_count < items_count: + for idx in range(procs_count, items_count): + li.last_item.delete() + + # update visible list items and the header text + li.realized_items_update() + popup.data['head'].text = '{} Running processes'.format(procs_count) + def popups_poller_cb(self): # build an orderd list of all running procs (pid, name, cpu_perc, mun_t) if psutil.version_info[0] < 2: @@ -118,23 +142,9 @@ class Gadget(e.Gadget): for p in psutil.process_iter() ] self.top_procs.sort(key=itemgetter(2), reverse=True) - # update all the visible genlists + # update all the visible popups for popup in self._popups: - li = popup.data['list'] - - # adjust the size (items count) of the genlist - items_count = li.items_count() - procs_count = len(self.top_procs) - if procs_count > items_count: - for idx in range(items_count, procs_count): - li.item_append(self.popups_itc, idx) - elif procs_count < items_count: - for idx in range(procs_count, items_count): - li.last_item.delete() - - # update visible list items and the header text - li.realized_items_update() - popup.data['head'].text = '{} Running processes'.format(procs_count) + self.popup_update(popup) return ecore.ECORE_CALLBACK_RENEW @@ -148,9 +158,9 @@ class Gadget(e.Gadget): def gl_content_get(self, gl, part, idx): pid, name, cpu, num_t = self.top_procs[idx] if part == 'elm.swallow.end': - return Label(gl, text='{0:.1f} %'.format(cpu)) + return elm.Label(gl, text='{0:.1f} %'.format(cpu)) if part == 'elm.swallow.icon': try: - return Icon(gl, standard=name) + return elm.Icon(gl, standard=name) except RuntimeWarning: # icon not found return None diff --git a/GADGETS/cpu/cpu.edc b/GADGETS/cpu/cpu.edc index ecc3f0e..56fa77a 100644 --- a/GADGETS/cpu/cpu.edc +++ b/GADGETS/cpu/cpu.edc @@ -145,17 +145,4 @@ collections { // } } } - -/** - * API [e/gadget/popup] This is the group that will be placed inside popups - */ - group { name: "e/gadgets/cpu/popup"; - min: 300 300; - parts { - swallow { "main.swallow"; - desc { "default"; - } - } - } - } } diff --git a/GADGETS/dropbox/__init__.py b/GADGETS/dropbox/__init__.py index c53d308..a87fe29 100644 --- a/GADGETS/dropbox/__init__.py +++ b/GADGETS/dropbox/__init__.py @@ -9,23 +9,22 @@ import e from efl import ecore from efl import evas from efl import edje -from efl.elementary.label import Label +from efl import elementary as elm from efl.elementary.entry import utf8_to_markup -from efl.elementary.button import Button __gadget_name__ = 'Dropbox' -__gadget_vers__ = '0.1' +__gadget_vers__ = '0.2' __gadget_auth__ = 'DaveMDS' __gadget_mail__ = 'd...@gurumeditation.it' __gadget_desc__ = 'Dropbox info gadget.' -__gadget_vapi__ = 1 +__gadget_vapi__ = 2 __gadget_opts__ = { 'popup_on_desktop': False } -#def DBG(msg): -# print("DB: " + msg) -# sys.stdout.flush() +# def DBG(msg): +# print("DROPBOX: %s" % msg) +# sys.stdout.flush() class Gadget(e.Gadget): @@ -41,22 +40,24 @@ class Gadget(e.Gadget): def instance_destroyed(self, obj): super().instance_destroyed(obj) - def popup_created(self, popup): - super().popup_created(popup) + def popup_created(self, elm_parent): + box = elm.Box(elm_parent) + box.show() - popup.data['lb'] = Label(popup) - popup.part_box_append('popup.box', popup.data['lb']) - popup.data['lb'].show() + lb = elm.Label(box) + box.pack_end(lb) + lb.show() - popup.data['bt'] = Button(popup) - popup.data['bt'].callback_clicked_add(self.start_stop_clicked_cb) - popup.part_box_append('popup.box', popup.data['bt']) - popup.data['bt'].show() + bt = elm.Button(box) + bt.callback_clicked_add(self.start_stop_clicked_cb) + box.pack_end(bt) + bt.show() - self.popup_update(popup) + box.data['lb'] = lb + box.data['bt'] = bt - def popup_destroyed(self, popup): - super().popup_destroyed(popup) + self.popup_update(box) + return box def db_status_changed_cb(self): for icon in self._instances: @@ -84,9 +85,6 @@ class Gadget(e.Gadget): popup.data['bt'].text = 'Install Dropbox' popup.data['bt'].disabled = True - # force the popup to recalculate it's size - popup.size_hint_min = popup.size_min - def start_stop_clicked_cb(self, btn): if self.db.is_running: self.db.stop() diff --git a/GADGETS/dropbox/dropbox.edc b/GADGETS/dropbox/dropbox.edc index b499e19..0781f0e 100644 --- a/GADGETS/dropbox/dropbox.edc +++ b/GADGETS/dropbox/dropbox.edc @@ -77,22 +77,4 @@ collections { } } } - -/** - * API [e/gadget/popup] This is the group that will be placed inside popups - */ - group { name: "e/gadgets/dropbox/popup"; - // min: 310 0; - parts { - box { "popup.box"; - desc { "default"; - box { - layout: "vertical"; - padding: 0 6; - min: 1 1; - } - } - } - } - } } diff --git a/GADGETS/led_clock/__init__.py b/GADGETS/led_clock/__init__.py index 2bb4e10..2016f35 100644 --- a/GADGETS/led_clock/__init__.py +++ b/GADGETS/led_clock/__init__.py @@ -11,11 +11,16 @@ from efl import edje from efl import ecore __gadget_name__ = 'Led Clock' -__gadget_vers__ = '0.1' +__gadget_vers__ = '0.2' __gadget_auth__ = 'DaveMDS' __gadget_mail__ = 'd...@gurumeditation.it' __gadget_desc__ = 'The usual led clock.' -__gadget_vapi__ = 1 +__gadget_vapi__ = 2 + + +# def DBG(msg): +# print("MEM: %s" % msg) +# sys.stdout.flush() COLORS = ('off', 'red', 'green', 'blu') diff --git a/GADGETS/mem/__init__.py b/GADGETS/mem/__init__.py index 300e273..c4f0edb 100644 --- a/GADGETS/mem/__init__.py +++ b/GADGETS/mem/__init__.py @@ -12,23 +12,27 @@ from efl.elementary import Box, Frame, Progressbar __gadget_name__ = 'Memory Monitor' -__gadget_vers__ = '0.1' +__gadget_vers__ = '0.2' __gadget_auth__ = 'DaveMDS' __gadget_mail__ = 'd...@gurumeditation.it' __gadget_desc__ = 'Ram + Swap monitor' -__gadget_vapi__ = 1 +__gadget_vapi__ = 2 __gadget_opts__ = { 'popup_on_desktop': False } +# import sys +# def DBG(msg): +# print("MEM: %s" % msg) +# sys.stdout.flush() + class Gadget(e.Gadget): def __init__(self): super().__init__() - self.poller = None - self.mem = 0 - self.swp = 0 + self.mem = None + self.swp = None def instance_created(self, obj, site): super().instance_created(obj, site) @@ -38,7 +42,7 @@ class Gadget(e.Gadget): int(obj.data_get('aspect_h'))) if self.poller is None: - self.poller = ecore.Poller(8, self.poller_cb, ecore.ECORE_POLLER_CORE) + self.poller = ecore.Poller(16, self.poller_cb, ecore.ECORE_POLLER_CORE) def instance_destroyed(self, obj): super().instance_destroyed(obj) @@ -47,84 +51,80 @@ class Gadget(e.Gadget): self.poller.delete() self.poller = None - def popup_created(self, popup): - super().popup_created(popup) - - box = Box(popup) - popup.part_swallow('main.swallow', box) + def popup_created(self, elm_parent): + # main vertical box + box = Box(elm_parent) box.show() - # mem + # mem frame tot = self.format_mb(psutil.virtual_memory().total) - fr = Frame(popup, text='Memory Usage (available {})'.format(tot), + fr = Frame(box, text='Memory Usage (available {})'.format(tot), size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH) box.pack_end(fr) fr.show() - box2 = Box(popup, size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH) + box2 = Box(fr, size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH) fr.content = box2 box2.show() - pb1 = Progressbar(popup, text='Total used', + pb1 = Progressbar(box2, text='Total used', span_size=200, size_hint_align=(1.0, 0.5)) box2.pack_end(pb1) pb1.show() - pb2 = Progressbar(popup, text='active', + pb2 = Progressbar(box2, text='active', span_size=200, size_hint_align=(1.0, 0.5)) box2.pack_end(pb2) pb2.show() - pb3 = Progressbar(popup, text='buffers', + pb3 = Progressbar(box2, text='buffers', span_size=200, size_hint_align=(1.0, 0.5)) box2.pack_end(pb3) pb3.show() - pb4 = Progressbar(popup, text='cached', + pb4 = Progressbar(box2, text='cached', span_size=200, size_hint_align=(1.0, 0.5)) box2.pack_end(pb4) pb4.show() - # swap + # swap frame tot = self.format_mb(psutil.swap_memory().total) - fr = Frame(popup, text='Swap Usage (available {})'.format(tot), + fr = Frame(box, text='Swap Usage (available {})'.format(tot), size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH) box.pack_end(fr) fr.show() - pb5 = Progressbar(popup) + pb5 = Progressbar(fr) fr.content = pb5 pb5.show() - # force the popup to always recalculate it's size - popup.update_hints = True + # keep widget references in the popup + box.data['usd_pb'] = pb1 + box.data['act_pb'] = pb2 + box.data['buf_pb'] = pb3 + box.data['cac_pb'] = pb4 + box.data['swp_pb'] = pb5 - # force the poller to update the popup now - popup.data['usd_pb'] = pb1 - popup.data['act_pb'] = pb2 - popup.data['buf_pb'] = pb3 - popup.data['cac_pb'] = pb4 - popup.data['swp_pb'] = pb5 - self.poller_cb(force=True) + self.popup_update(box) + return box - def poller_cb(self, force=False): - mem = psutil.virtual_memory() - swp = psutil.swap_memory() + def popup_update(self, popup): + self.update_pb(popup.data['usd_pb'], self.mem.used, self.mem.total) + active = self.mem.used - self.mem.buffers - self.mem.cached + self.update_pb(popup.data['act_pb'], active, self.mem.total) + self.update_pb(popup.data['buf_pb'], self.mem.buffers, self.mem.total) + self.update_pb(popup.data['cac_pb'], self.mem.cached, self.mem.total) + self.update_pb(popup.data['swp_pb'], self.swp.used, self.swp.total) - if force or mem.percent != self.mem or swp.percent != self.swp: - for obj in self._instances: - obj.message_send(0, (mem.percent, swp.percent)) + def poller_cb(self): + self.mem = psutil.virtual_memory() + self.swp = psutil.swap_memory() - for popup in self._popups: - self.update_pb(popup.data['usd_pb'], mem.used, mem.total) - active = mem.used - mem.buffers - mem.cached - self.update_pb(popup.data['act_pb'], active, mem.total) - self.update_pb(popup.data['buf_pb'], mem.buffers, mem.total) - self.update_pb(popup.data['cac_pb'], mem.cached, mem.total) - self.update_pb(popup.data['swp_pb'], swp.used, swp.total) + for obj in self._instances: + obj.message_send(0, (self.mem.percent, self.swp.percent)) - self.mem = mem.percent - self.swp = swp.percent + for popup in self._popups: + self.popup_update(popup) return ecore.ECORE_CALLBACK_RENEW @@ -135,4 +135,3 @@ class Gadget(e.Gadget): pb.value = val / total pb.unit_format = '{0} ({1:.0f} %%)'.format(self.format_mb(val), val / total * 100) - diff --git a/GADGETS/mem/mem.edc b/GADGETS/mem/mem.edc index 14a2b5c..11a622c 100644 --- a/GADGETS/mem/mem.edc +++ b/GADGETS/mem/mem.edc @@ -131,16 +131,4 @@ collections { #undef LED } } - -/** - * API [e/gadget/popup] This is the group that will be placed inside popups - */ - group { name: "e/gadgets/mem/popup"; - parts { - swallow { "main.swallow"; - desc { "default"; - } - } - } - } } diff --git a/GADGETS/netspeed/__init__.py b/GADGETS/netspeed/__init__.py index 1f698b6..3b28919 100644 --- a/GADGETS/netspeed/__init__.py +++ b/GADGETS/netspeed/__init__.py @@ -12,31 +12,37 @@ from efl.evas import EXPAND_BOTH, EXPAND_HORIZ, FILL_BOTH __gadget_name__ = 'Network Speed Monitor' -__gadget_vers__ = '0.1' +__gadget_vers__ = '0.2' __gadget_auth__ = 'DaveMDS' __gadget_mail__ = 'd...@gurumeditation.it' __gadget_desc__ = 'Network speed monitor' -__gadget_vapi__ = 1 +__gadget_vapi__ = 2 __gadget_opts__ = { 'popup_on_desktop': False } # import sys # def DBG(msg): - # print("NETSPEED: %s" % msg) - # sys.stdout.flush() +# print("NETSPEED: %s" % msg) +# sys.stdout.flush() class Gadget(e.Gadget): def __init__(self): + # DBG("init") super().__init__() self.poller = None self.last_in = 0 self.last_out = 0 self.last_time = 0 + self.kb_in = 0 + self.kb_out = 0 + self.in_perc = 0 + self.out_perc = 0 def instance_created(self, obj, site): super().instance_created(obj, site) + # DBG("instance_created (insts: %d popups:%d)" % (len(self._instances), len(self._popups))) obj.size_hint_aspect = evas.EVAS_ASPECT_CONTROL_BOTH, 16, 16 if self.poller is None: @@ -45,49 +51,52 @@ class Gadget(e.Gadget): def instance_destroyed(self, obj): super().instance_destroyed(obj) + # DBG("instance_destroyed (insts: %d popups:%d)" % (len(self._instances), len(self._popups))) if len(self._instances) < 1 and self.poller is not None: self.poller.delete() self.poller = None - def popup_created(self, popup): - super().popup_created(popup) + def popup_created(self, elm_parent): + # DBG("popup_created (insts: %d popups:%d)" % (len(self._instances), len(self._popups))) - box = elm.Box(popup) - popup.part_swallow('main.swallow', box) + box = elm.Box(elm_parent) box.show() - in_label = elm.Label(popup, size_hint_expand=EXPAND_HORIZ) + in_label = elm.Label(box, size_hint_expand=EXPAND_HORIZ, text="asd") box.pack_end(in_label) in_label.show() - out_label = elm.Label(popup, size_hint_expand=EXPAND_HORIZ) + out_label = elm.Label(box, size_hint_expand=EXPAND_HORIZ, text="asd") box.pack_end(out_label) out_label.show() - popup.data['in_label'] = in_label - popup.data['out_label'] = out_label + box.data['in_label'] = in_label + box.data['out_label'] = out_label - # tell the popup to always recalculate it's size - popup.update_hints = True + self.popup_update(box) + return box - # do an update now - self.poller_cb() + def popup_destroyed(self, obj): + # DBG("popup_destroyed (insts: %d popups:%d)" % (len(self._instances), len(self._popups))) + + def popup_update(self, popup): + popup.data['in_label'].text = 'Recv: %.2f KB/s' % self.kb_in + popup.data['out_label'].text = 'Trans: %.2f KB/s' % self.kb_out def poller_cb(self): byte_per_second_in, byte_per_second_out = self.parse_proc() - kb_in = byte_per_second_in / 1000.0 - kb_out = byte_per_second_out / 1000.0 + self.kb_in = byte_per_second_in / 1000.0 + self.kb_out = byte_per_second_out / 1000.0 - in_perc = int(kb_in / 1000 * 100) # TODO CONFIGURABLE MAX - out_perc = int(kb_out / 1000 * 100) # TODO CONFIGURABLE MAX + self.in_perc = int(self.kb_in / 1000 * 100) # TODO CONFIGURABLE MAX + self.out_perc = int(self.kb_out / 1000 * 100) # TODO CONFIGURABLE MAX for obj in self._instances: - obj.message_send(1, (0, in_perc, 0, 0, out_perc, 0)) + obj.message_send(1, (0, self.in_perc, 0, 0, self.out_perc, 0)) for popup in self._popups: - popup.data['in_label'].text = 'Recv: %.2f KB/s' % kb_in - popup.data['out_label'].text = 'Trans: %.2f KB/s' % kb_out + self.popup_update(popup) return ecore.ECORE_CALLBACK_RENEW diff --git a/GADGETS/netspeed/netspeed.edc b/GADGETS/netspeed/netspeed.edc index c43708c..5053205 100644 --- a/GADGETS/netspeed/netspeed.edc +++ b/GADGETS/netspeed/netspeed.edc @@ -16,7 +16,6 @@ images { image: "over.png" COMP; image: "rx.png" COMP; image: "tx.png" COMP; - // TODO gadget icon } @@ -30,7 +29,7 @@ collections { desc { "default"; aspect: 1.0 1.0; aspect_preference: BOTH; - image.normal: "base.png"; // TODO gadget icon + image.normal: "base.png"; } } } @@ -123,45 +122,4 @@ collections { } } } - -/** - * API [e/gadget/popup] This is the group that will be placed inside popups - */ - group { name: "e/gadgets/netspeed/popup"; - parts { - // part { name: "label"; type: TEXTBLOCK; - // description { state: "default" 0.0; - // text { - // text: ""; - // font: "sans"; - // size: 12; - // text_class: ""; - // min: 1 1; - // ellipsis: -1; - // } - // } - // } - // part { name: "out_label"; type: TEXT; - // description { state: "default" 0.0; - // rel1.to_y: "in_label"; - // rel1.relative: 0.0 1.0; - // rel2.to_y: "in_label"; - // rel2.relative: 1.0 1.0; - // text { - // text: ""; - // font: "sans"; - // size: 12; - // text_class: ""; - // min: 1 1; - // ellipsis: -1; - // } - // } - // } - - swallow { "main.swallow"; - desc { "default"; - } - } - } - } } --