Exemple #1
0
    def __init__(self, parent):
        """
        Constructor.
        
        Positional arguments:
        parent -- Parent window of this dialog
        """
        Gtk.Dialog.__init__(self)
        self.parent = parent

        builder = Gtk.Builder()
        builder.set_translation_domain("cournal")
        builder.add_from_file(
            os.path.join(cournal.__path__[0], "connectiondialog.glade"))
        grid = builder.get_object("grid_main")

        self.multipage = builder.get_object("multipage")
        self.error_label = builder.get_object("error_label")
        self.server_details = ServerDetails(self, builder)
        self.connecting_page = ConnectingPage(self, builder)
        self.document_chooser = DocumentChooser(self)

        self.get_content_area().add(grid)
        self.multipage.append_page(self.server_details, None)
        self.multipage.append_page(self.connecting_page, None)
        self.multipage.append_page(self.document_chooser, None)

        self.set_modal(False)
        self.set_has_resize_grip(False)
        self.set_resizable(False)
        self.set_title(_("Connect to Server"))
        self.set_transient_for(parent)
        self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
        self.add_button(Gtk.STOCK_CONNECT, Gtk.ResponseType.ACCEPT)
        self.set_default_response(Gtk.ResponseType.ACCEPT)

        self.set_page(0)

        self.connect("response", self.response)
        self.server_details.connect("connecting", self.show_connecting_page)
        self.server_details.connect(
            "connected", lambda x: self.document_chooser.get_document_list())
        self.server_details.connect("connection_failed",
                                    lambda x: self.set_page(0))
        self.document_chooser.connect("got_document_list",
                                      lambda x: self.set_page(2))
        self.document_chooser.connect("joining_document",
                                      self.show_joining_document_page)
        self.document_chooser.connect("joined_document",
                                      lambda x: self.destroy())
 def __init__(self, parent):
     """
     Constructor.
     
     Positional arguments:
     parent -- Parent window of this dialog
     """
     Gtk.Dialog.__init__(self)
     self.parent = parent
     
     builder = Gtk.Builder()
     builder.set_translation_domain("cournal")
     builder.add_from_file(cournal.__path__[0] + "/connection_dialog.glade")
     grid = builder.get_object("grid_main")
     
     self.multipage = builder.get_object("multipage")
     self.error_label = builder.get_object("error_label")
     self.server_details = ServerDetails(self, builder)
     self.connecting_page = ConnectingPage(self, builder)
     self.document_chooser = DocumentChooser(self)
     
     self.get_content_area().add(grid)
     self.multipage.append_page(self.server_details, None)
     self.multipage.append_page(self.connecting_page, None)
     self.multipage.append_page(self.document_chooser, None)
     
     self.set_modal(False)
     self.set_has_resize_grip(False)
     self.set_resizable(False)
     self.set_title(_("Connect to Server"))
     self.set_transient_for(parent)
     self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
     self.add_button(Gtk.STOCK_CONNECT, Gtk.ResponseType.ACCEPT)
     self.set_default_response(Gtk.ResponseType.ACCEPT)
     
     self.set_page(0)
     
     self.connect("response", self.response)
     self.server_details.connect("connecting", self.show_connecting_page)
     self.server_details.connect("connected", lambda x: self.document_chooser.get_document_list())
     self.server_details.connect("connection_failed", lambda x: self.set_page(0))
     self.document_chooser.connect("got_document_list", lambda x: self.set_page(2))
     self.document_chooser.connect("joining_document", self.show_joining_document_page)
     self.document_chooser.connect("joined_document", lambda x: self.destroy())
Exemple #3
0
class ConnectionDialog(Gtk.Dialog):
    """
    The "Connect to Server" dialog of Cournal.
    """
    def __init__(self, parent):
        """
        Constructor.
        
        Positional arguments:
        parent -- Parent window of this dialog
        """
        Gtk.Dialog.__init__(self)
        self.parent = parent

        builder = Gtk.Builder()
        builder.set_translation_domain("cournal")
        builder.add_from_file(
            os.path.join(cournal.__path__[0], "connectiondialog.glade"))
        grid = builder.get_object("grid_main")

        self.multipage = builder.get_object("multipage")
        self.error_label = builder.get_object("error_label")
        self.server_details = ServerDetails(self, builder)
        self.connecting_page = ConnectingPage(self, builder)
        self.document_chooser = DocumentChooser(self)

        self.get_content_area().add(grid)
        self.multipage.append_page(self.server_details, None)
        self.multipage.append_page(self.connecting_page, None)
        self.multipage.append_page(self.document_chooser, None)

        self.set_modal(False)
        self.set_has_resize_grip(False)
        self.set_resizable(False)
        self.set_title(_("Connect to Server"))
        self.set_transient_for(parent)
        self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
        self.add_button(Gtk.STOCK_CONNECT, Gtk.ResponseType.ACCEPT)
        self.set_default_response(Gtk.ResponseType.ACCEPT)

        self.set_page(0)

        self.connect("response", self.response)
        self.server_details.connect("connecting", self.show_connecting_page)
        self.server_details.connect(
            "connected", lambda x: self.document_chooser.get_document_list())
        self.server_details.connect("connection_failed",
                                    lambda x: self.set_page(0))
        self.document_chooser.connect("got_document_list",
                                      lambda x: self.set_page(2))
        self.document_chooser.connect("joining_document",
                                      self.show_joining_document_page)
        self.document_chooser.connect("joined_document",
                                      lambda x: self.destroy())

    def show_connecting_page(self, widget, server, port):
        """
        Show a widget indicating, that a connection is being established.
        
        Positional arguments:
        widget -- The previously active widget (normally server_details)
        server -- The hostname of the server we are connecting to
        port -- Port number on the server
        """
        self.set_page(1)
        self.connecting_page.message = _("Connecting to {} ...").format(server)
        self.connecting_page.deferred = widget.deferred

    def show_joining_document_page(self, widget, documentname):
        """
        Show a widget, indicating that a remote document is being opened.
        
        Positional arguments:
        widget -- The previously active widget (normally document_chooser)
        documentname -- The name of the document we are opening
        """
        self.set_page(1)
        self.connecting_page.message = _("Opening {} ...").format(documentname)
        self.connecting_page.deferred = widget.deferred

    def set_page(self, page):
        """
        Switch to a given page in our multipage widget containing the
        server_details, connecting_page and the document_chooser widget.
        
        Positional arguments:
        page -- Number of the page to switch to. Starting from 0.
        """
        if page == 1:
            self.get_action_area().set_sensitive(False)
        else:
            self.get_action_area().set_sensitive(True)
        self.multipage.set_current_page(page)
        self.multipage.get_nth_page(page)
        self.current_page = self.multipage.get_nth_page(page)

    def response(self, widget, response_id):
        """
        Called, when the user clicked on a button ('Connect' or 'Abort') or
        when the dialog is closed.
        
        Positional arguments:
        widget -- The widget, which triggered the response.
        response_id -- A Gtk.ResponseType indicating, which button the user pressed.
        """
        self.current_page.response(widget, response_id)

    @property
    def error(self):
        """The error message to display"""
        return self.error_label.get_text()

    @error.setter
    def error(self, message):
        self.error_label.set_text(message)
        if message and message != "":
            self.error_label.show()

    def run_nonblocking(self):
        """Run the dialog asynchronously, reusing the mainloop of the parent."""
        self.show_all()
class ConnectionDialog(Gtk.Dialog):
    """
    The "Connect to Server" dialog of Cournal.
    """
    def __init__(self, parent):
        """
        Constructor.
        
        Positional arguments:
        parent -- Parent window of this dialog
        """
        Gtk.Dialog.__init__(self)
        self.parent = parent
        
        builder = Gtk.Builder()
        builder.set_translation_domain("cournal")
        builder.add_from_file(cournal.__path__[0] + "/connection_dialog.glade")
        grid = builder.get_object("grid_main")
        
        self.multipage = builder.get_object("multipage")
        self.error_label = builder.get_object("error_label")
        self.server_details = ServerDetails(self, builder)
        self.connecting_page = ConnectingPage(self, builder)
        self.document_chooser = DocumentChooser(self)
        
        self.get_content_area().add(grid)
        self.multipage.append_page(self.server_details, None)
        self.multipage.append_page(self.connecting_page, None)
        self.multipage.append_page(self.document_chooser, None)
        
        self.set_modal(False)
        self.set_has_resize_grip(False)
        self.set_resizable(False)
        self.set_title(_("Connect to Server"))
        self.set_transient_for(parent)
        self.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
        self.add_button(Gtk.STOCK_CONNECT, Gtk.ResponseType.ACCEPT)
        self.set_default_response(Gtk.ResponseType.ACCEPT)
        
        self.set_page(0)
        
        self.connect("response", self.response)
        self.server_details.connect("connecting", self.show_connecting_page)
        self.server_details.connect("connected", lambda x: self.document_chooser.get_document_list())
        self.server_details.connect("connection_failed", lambda x: self.set_page(0))
        self.document_chooser.connect("got_document_list", lambda x: self.set_page(2))
        self.document_chooser.connect("joining_document", self.show_joining_document_page)
        self.document_chooser.connect("joined_document", lambda x: self.destroy())
    
    def show_connecting_page(self, widget, server, port):
        """
        Show a widget indicating, that a connection is being established.
        
        Positional arguments:
        widget -- The previously active widget (normally server_details)
        server -- The hostname of the server we are connecting to
        port -- Port number on the server
        """
        self.set_page(1)
        self.connecting_page.message = _("Connecting to {} ...").format(server)
        self.connecting_page.deferred = widget.deferred
        
    def show_joining_document_page(self, widget, documentname):
        """
        Show a widget, indicating that a remote document is being opened.
        
        Positional arguments:
        widget -- The previously active widget (normally document_chooser)
        documentname -- The name of the document we are opening
        """
        self.set_page(1)
        self.connecting_page.message = _("Opening {} ...").format(documentname)
        self.connecting_page.deferred = widget.deferred
    
    def set_page(self, page):
        """
        Switch to a given page in our multipage widget containing the
        server_details, connecting_page and the document_chooser widget.
        
        Positional arguments:
        page -- Number of the page to switch to. Starting from 0.
        """
        if page == 1:
            self.get_action_area().set_sensitive(False)
        else:
            self.get_action_area().set_sensitive(True)
        self.multipage.set_current_page(page)
        self.multipage.get_nth_page(page)
        self.current_page = self.multipage.get_nth_page(page)
    
    def response(self, widget, response_id):
        """
        Called, when the user clicked on a button ('Connect' or 'Abort') or
        when the dialog is closed.
        
        Positional arguments:
        widget -- The widget, which triggered the response.
        response_id -- A Gtk.ResponseType indicating, which button the user pressed.
        """
        self.current_page.response(widget, response_id)
    
    @property
    def error(self):
        """The error message to display"""
        return self.error_label.get_text()
    
    @error.setter
    def error(self, message):
        self.error_label.set_text(message)
        if message and message != "" :
            self.error_label.show()
    
    def run_nonblocking(self):
        """Run the dialog asynchronously, reusing the mainloop of the parent."""
        self.show_all()