def init_sections_state(self):
     net_manager.init_devices()
     for section in self.vbox.get_children():
         if section.show_or_hide():
             section.section_show()
             section.init_state()
         else:
             section.section_hide()
     slider._append_page(Region(), "region")
     from setting_page_ui import SettingUI
     self.setting_page_ui = SettingUI(None, None)
     slider._append_page(self.setting_page_ui, "setting")
 def init_sections_state(self):
     net_manager.init_devices()
     for section in self.vbox.get_children():
         if section.show_or_hide():
             section.section_show()
             section.init_state()
         else:
             section.section_hide()
     slider._append_page(Region(), "region")
     from setting_page_ui import SettingUI
     self.setting_page_ui = SettingUI(None, None)
     slider._append_page(self.setting_page_ui, "setting")
class Network(object):
    def __init__(self):
        #self.init_sections()
        self.__init_ui()

        slider._append_page(self.eventbox, "main")
        slider.connect_after("show", lambda w: self.init_sections_state())
        slider._set_to_page("main")
        slider.show_all()
        Dispatcher.connect("to-setting-page", self.slide_to_setting_page)
        Dispatcher.connect("recheck-section",
                           lambda w, i: self.__init_sections(0))
        Dispatcher.connect("service-stop-do-more", lambda w: self.stop())

    def init_sections_state(self):
        net_manager.init_devices()
        for section in self.vbox.get_children():
            if section.show_or_hide():
                section.section_show()
                section.init_state()
            else:
                section.section_hide()
        slider._append_page(Region(), "region")
        from setting_page_ui import SettingUI
        self.setting_page_ui = SettingUI(None, None)
        slider._append_page(self.setting_page_ui, "setting")

    def __init_sections(self, index):
        section_list = [
            WiredSection, WirelessSection, DSLSection, MobileSection,
            VpnSection, Proxy
        ]
        if index == -1:
            container_remove_all(self.vbox)
            for section in section_list:
                section_ins = apply(section)
                self.vbox.pack_start(section_ins, False, True)
        else:
            for section in self.vbox.get_children():
                if section.show_or_hide():
                    section.section_show()
                else:
                    section.section_hide()

    def __init_ui(self):
        self.vbox = gtk.VBox(False, BETWEEN_SPACING)
        self.__init_sections(-1)
        self.vbox.set_size_request(WINDOW_WIDTH - 2 * TEXT_WINDOW_LEFT_PADDING,
                                   -1)

        scroll_win = ScrolledWindow(right_space=0, top_bottom_space=0)
        #scroll_win.connect("event", self.test)
        scroll_win.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)

        # FIXME UI a align to adjust ui
        ui_align = gtk.Alignment(0, 0, 0, 0)
        ui_align.set_padding(TEXT_WINDOW_TOP_PADDING, TEXT_WINDOW_TOP_PADDING,
                             TEXT_WINDOW_LEFT_PADDING,
                             TEXT_WINDOW_LEFT_PADDING)

        ui_align.add(self.vbox)
        scroll_win.add_with_viewport(ui_align)

        self.eventbox = gtk.EventBox()
        self.eventbox.set_above_child(False)
        self.eventbox.add(scroll_win)
        self.vbox.connect("expose-event", self.expose_callback)
        ui_align.connect("expose-event", self.expose_callback)

    def __pack_start(self, parent, child_list, expand=False, fill=False):
        for child in child_list:
            parent.pack_start(child, expand, fill)

    def expose_callback(self, widget, event):
        cr = widget.window.cairo_create()
        rect = widget.allocation
        cr.set_source_rgb(1, 1, 1)
        cr.rectangle(rect.x, rect.y, rect.width, rect.height)
        cr.fill()

    def slide_to_setting_page(self, widget, setting_module, hide_left):
        self.setting_page_ui.load_module(setting_module, hide_left)

    def refresh(self):
        #self.init_sections()
        self.__init_sections(-1)
        self.init_sections_state()
        self.eventbox.set_above_child(False)
        self.eventbox.queue_draw()

    def stop(self):
        for section in self.vbox.get_children():
            section.set_active(False)
        self.eventbox.set_above_child(True)

    def get_main_page(self):
        return self.eventbox
class Network(object):
    def __init__(self):        
        #self.init_sections()
        self.__init_ui()

        slider._append_page(self.eventbox, "main")
        slider.connect_after("show", lambda w: self.init_sections_state())
        slider._set_to_page("main")
        slider.show_all()
        Dispatcher.connect("to-setting-page", self.slide_to_setting_page)
        Dispatcher.connect("recheck-section", lambda w, i: self.__init_sections(0))
        Dispatcher.connect("service-stop-do-more", lambda w: self.stop())

    def init_sections_state(self):
        net_manager.init_devices()
        for section in self.vbox.get_children():
            if section.show_or_hide():
                section.section_show()
                section.init_state()
            else:
                section.section_hide()
        slider._append_page(Region(), "region")
        from setting_page_ui import SettingUI
        self.setting_page_ui = SettingUI(None, None)
        slider._append_page(self.setting_page_ui, "setting")
         
    def __init_sections(self, index):
        section_list = [WiredSection, WirelessSection, DSLSection, MobileSection, VpnSection, Proxy]
        if index == -1:
            container_remove_all(self.vbox)
            for section in section_list:
                section_ins = apply(section)
                self.vbox.pack_start(section_ins, False, True)
        else:
            for section in self.vbox.get_children():
                if section.show_or_hide():
                    section.section_show()
                else:
                    section.section_hide()

    def __init_ui(self):
        self.vbox = gtk.VBox(False, BETWEEN_SPACING)
        self.__init_sections( -1)
        self.vbox.set_size_request(WINDOW_WIDTH - 2 * TEXT_WINDOW_LEFT_PADDING, -1)
        
        scroll_win = ScrolledWindow(right_space=0, top_bottom_space=0)
        #scroll_win.connect("event", self.test)
        scroll_win.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)

        # FIXME UI a align to adjust ui
        ui_align = gtk.Alignment(0, 0, 0, 0)
        ui_align.set_padding(TEXT_WINDOW_TOP_PADDING,
                                    TEXT_WINDOW_TOP_PADDING,
                                    TEXT_WINDOW_LEFT_PADDING,
                                    TEXT_WINDOW_LEFT_PADDING)

        ui_align.add(self.vbox)
        scroll_win.add_with_viewport(ui_align)

        self.eventbox = gtk.EventBox()
        self.eventbox.set_above_child(False)
        self.eventbox.add(scroll_win)
        self.vbox.connect("expose-event", self.expose_callback)
        ui_align.connect("expose-event", self.expose_callback)
        
    def __pack_start(self, parent, child_list, expand=False, fill=False):
        for child in child_list:
            parent.pack_start(child, expand, fill)

    def expose_callback(self, widget, event):
        cr = widget.window.cairo_create()
        rect = widget.allocation
        cr.set_source_rgb( 1, 1, 1) 
        cr.rectangle(rect.x, rect.y, rect.width, rect.height)
        cr.fill()

    def slide_to_setting_page(self, widget, setting_module, hide_left):
        self.setting_page_ui.load_module(setting_module, hide_left)

    def refresh(self):
        #self.init_sections()
        self.__init_sections(-1)
        self.init_sections_state()
        self.eventbox.set_above_child(False)
        self.eventbox.queue_draw()

    def stop(self):
        for section in self.vbox.get_children():
            section.set_active(False)
        self.eventbox.set_above_child(True)
        
    def get_main_page(self):
        return self.eventbox