davemds pushed a commit to branch master. http://git.enlightenment.org/apps/epour.git/commit/?id=38c1c74f0fee6f6ded90981cecba79efcaef7bde
commit 38c1c74f0fee6f6ded90981cecba79efcaef7bde Author: davemds <d...@gurumeditation.it> Date: Sat Nov 9 14:26:34 2013 +0100 Epour: Use a Popup insted of the InnerWin for preferences dialogs It looks better, has a title and the Close button is always visible. Only drawback I had to change the fileselector in_win mode because the inwin is going stacked BELOW the popup :/ --- epour/gui/Preferences.py | 55 ++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/epour/gui/Preferences.py b/epour/gui/Preferences.py index a7c4729..4594222 100644 --- a/epour/gui/Preferences.py +++ b/epour/gui/Preferences.py @@ -28,7 +28,7 @@ import libtorrent as lt try: from elementary import Icon, Box, Label, Button, \ - InnerWindow, Frame, Entry, Check, Spinner, Hoversel, \ + Popup, Frame, Entry, Check, Spinner, Hoversel, \ FileselectorButton, Scroller, ELM_SCROLLER_POLICY_OFF, \ ELM_SCROLLER_POLICY_AUTO, Separator, Slider, Actionslider, \ ELM_ACTIONSLIDER_LEFT, ELM_ACTIONSLIDER_CENTER, \ @@ -41,12 +41,12 @@ except ImportError: from efl.elementary.box import Box from efl.elementary.label import Label from efl.elementary.button import Button - from efl.elementary.innerwindow import InnerWindow from efl.elementary.frame import Frame from efl.elementary.entry import Entry from efl.elementary.check import Check from efl.elementary.spinner import Spinner from efl.elementary.hoversel import Hoversel + from efl.elementary.popup import Popup from efl.elementary.fileselector_button import FileselectorButton from efl.elementary.scroller import Scroller, ELM_SCROLLER_POLICY_OFF, \ ELM_SCROLLER_POLICY_AUTO @@ -68,33 +68,44 @@ EXPAND_HORIZ = 1.0, 0.0 FILL_BOTH = -1.0, -1.0 FILL_HORIZ = -1.0, 0.5 -class PreferencesDialog(InnerWindow): +class PreferencesDialog(Popup): """ Base class for all preferences dialogs """ - def __init__(self, parent): - InnerWindow.__init__(self, parent) + def __init__(self, parent, title): + Popup.__init__(self, parent) + + bt = Button(self, text="Close") + bt.callback_clicked_add(lambda b: self.delete()) + self.part_content_set("button1", bt) + self.part_text_set("title,text", title) + + self.table = Table(self) self.scroller = Scroller(self) self.scroller.policy = ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO - self.content = self.scroller - + self.scroller.size_hint_weight = EXPAND_BOTH + self.scroller.size_hint_align = FILL_BOTH + self.table.pack(self.scroller, 0, 0, 1, 1) + self.scroller.show() + self.box = Box(self) - self.box.size_hint_weight = 1.0, 1.0 + self.box.size_hint_weight = EXPAND_BOTH self.scroller.content = self.box - def activate(self): - btn = Button(self, text="Close") - btn.callback_clicked_add(lambda x: self.delete()) - self.box.pack_end(btn) - btn.show() - - InnerWindow.activate(self) + self.content = self.table + self.parent_resize_cb(parent) + parent.on_resize_add(self.parent_resize_cb) + self.show() + + def parent_resize_cb(self, parent): + (pw, ph) = parent.size + self.table.size_hint_min = pw * 0.7, ph * 0.7 class PreferencesGeneral(PreferencesDialog): """ General preference dialog """ def __init__(self, parent, session): self.session = session conf = session.conf - PreferencesDialog.__init__(self, parent.win) + PreferencesDialog.__init__(self, parent.win, "General") limits = Limits(self, session) ports = ListenPorts(self, session) @@ -129,8 +140,6 @@ class PreferencesGeneral(PreferencesDialog): w.show() self.box.pack_end(w) - self.activate() - class DataStorageSelector(Frame): def __init__(self, parent, conf): Frame.__init__(self, parent) @@ -148,7 +157,7 @@ class DataStorageSelector(Frame): self.dlsel = dlsel = FileselectorButton(self) dlsel.size_hint_align = -1.0, 0.0 - dlsel.inwin_mode = True + dlsel.inwin_mode = False dlsel.folder_only = True dlsel.expandable = False dlsel.text = "Change path" @@ -216,7 +225,7 @@ class ListenPorts(Frame): class PreferencesProxy(PreferencesDialog): """ Proxy preference dialog """ def __init__(self, parent, session): - PreferencesDialog.__init__(self, parent.win) + PreferencesDialog.__init__(self, parent.win, "Proxy") proxies = [ ["Proxy for torrent peer connections", @@ -234,8 +243,6 @@ class PreferencesProxy(PreferencesDialog): pg.show() self.box.pack_end(pg) - self.activate() - class ProxyGroup(Frame): proxy_types = { @@ -429,7 +436,7 @@ class ActSWithLabel(Box): class PreferencesSession(PreferencesDialog): """ Session preference dialog """ def __init__(self, parent, session): - PreferencesDialog.__init__(self, parent.win) + PreferencesDialog.__init__(self, parent.win, "Session") # TODO: Construct and populate this with an Idler @@ -521,8 +528,6 @@ class PreferencesSession(PreferencesDialog): save_btn.show() self.box.pack_end(save_btn) - self.activate() - def apply_settings(self, btn, widgets, session): s = lt.session_settings() --