示例#1
0
    def close(self):
        self.__app.session.unregisterXPath(self.__chat_query)
        self.__app.session.unregisterXPath(self.__event_query)

        self.__manager.release(self.__jid)

        ## let it fully clean us up
        BaseGabberWindow.close(self)
示例#2
0
    def __init__(self, mgr, jid, node=None):
        BaseGabberWindow.__init__(self, "OOOChat_win")
        self.__manager = mgr
        self.__jid = jid

        self.__init()
        ## See what type to start
        if node:
            self.display(Message(node))
示例#3
0
    def on_delete_event(self, win, event):
        now = time()
        ## XXX This timer is arbitrary
        if (now - self.__last_msg_time) < 3:
            dlg = gtk.Dialog("Recent Message", self.window,
                gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT, 
                (gtk.STOCK_NO, 0, gtk.STOCK_YES, 1))
            lbl = gtk.Label("A message was received recently, really close this chat?")
            dlg.vbox.set_border_width(4)
            dlg.vbox.set_spacing(8)
            dlg.vbox.pack_start(lbl)
            dlg.show_all()
            resp = dlg.run()
            dlg.destroy()
            del dlg
            if not resp:
                return 1

        BaseGabberWindow.on_delete_event(self, win, event)
示例#4
0
    def __init__(self):
        BaseGabberWindow.__init__(self, "Gabber_win")

        self.__prev_show = 0
        self.__app = GabberApp.GabberApp()

        ## Get all our widgets
        self.__optPres = self.get_widget("Presence_optmenu")
        self.__optPres.set_relief(gtk.RELIEF_NONE)
        self.__appbarMain = self.get_widget("Gabber_appbar")

        ## Setup the roster view
        self.__rostermodel = RosterModel(self.__app)
        tv = self.get_widget("Roster_treeview")
        self.__rosterview = RosterView(tv, self.__rostermodel)

        tv.show()

        ## Our status dialog
        self.status_dlg = BaseGabberWindow("Status_dlg")
        self.status_dlg.window.connect("response", self.__on_status_dlg_response)

        ## Our Add JID dialog
        self.addjid_dlg = BaseGabberWindow("AddJID_dlg")
        self.addjid_dlg.window.connect("response",
            self.__on_addjid_dlg_response)
        w = self.addjid_dlg.get_widget("toggleAdvancedOptions")
        w.connect("toggled", self.__on_addjid_advanced_options)

        ## hookup all the menus
        self.__init_menus()

        ## Connect to events
        self.__app.evtConnecting.connect(self.__on_evtConnecting)
        self.__app.evtConnected.connect(self.__on_evtConnected)
        self.__app.evtDisconnected.connect(self.__on_evtDisconnected)
        self.__app.session.evtMyPresence.connect(self.__on_my_presence_event)
示例#5
0
    def __init__(self, is_startup=0):
        BaseGabberWindow.__init__(self, "Login_dlg")
        ConfigWrapper.__init__(self, Keys.Account.main_dir)

        b = self.get_widget("Cancel_btn")
        b.connect("clicked", self.on_Cancel_clicked)

        self.__btnLogIn = self.get_widget("LogIn_btn")
        self.__btnLogIn.connect("clicked", self.on_LogIn_clicked)

        self.__entUsername = self.get_widget("Username_ent")
        self.__entUsername.connect("changed", self.on_Changed)

        self.__entServer = self.get_widget("Server_ent")
        self.__entServer.connect("changed", self.on_Changed)

        self.__entPassword = self.get_widget("Password_ent")
        self.__entPassword.connect("changed", self.on_Changed)

        self.__entResource = self.get_widget("Resource_ent")
        self.__entResource.connect("changed", self.on_Changed)

        self.__spinPort = self.get_widget("Port_spin")
        self.__spinPort.set_width_chars(4)
        self.__spinPort.connect("changed", self.on_Changed)

        self.__spinPriority = self.get_widget("Priority_spin")
        self.__spinPriority.connect("changed", self.on_Changed)

        self.__ckPassword = self.get_widget("SavePassword_chk")
        self.__ckPassword.connect("toggled", self.on_Changed)

        self.loadConfig()

        ## If this is opened during startup, it is the only window available
        if is_startup:
            self.window.set_modal(1)
示例#6
0
    def __init__(self):
        BaseGabberWindow.__init__(self, "Gabber_win")

        self.__prev_show = 0
        self.__app = GabberApp.GabberApp()

        ## Get all our widgets
        self.__optPres = self.get_widget("Presence_optmenu")
        self.__optPres.set_relief(gtk.RELIEF_NONE)
        self.__appbarMain = self.get_widget("Gabber_appbar")

        ## Setup the roster view
        self.__rostermodel = RosterModel(self.__app)
        tv = self.get_widget("Roster_treeview")
        self.__rosterview = RosterView(tv, self.__rostermodel)

        tv.show()

        ## Our status dialog
        self.status_dlg = BaseGabberWindow("Status_dlg")
        self.status_dlg.window.connect("response",
                                       self.__on_status_dlg_response)

        ## Our Add JID dialog
        self.addjid_dlg = BaseGabberWindow("AddJID_dlg")
        self.addjid_dlg.window.connect("response",
                                       self.__on_addjid_dlg_response)
        w = self.addjid_dlg.get_widget("toggleAdvancedOptions")
        w.connect("toggled", self.__on_addjid_advanced_options)

        ## hookup all the menus
        self.__init_menus()

        ## Connect to events
        self.__app.evtConnecting.connect(self.__on_evtConnecting)
        self.__app.evtConnected.connect(self.__on_evtConnected)
        self.__app.evtDisconnected.connect(self.__on_evtDisconnected)
        self.__app.session.evtMyPresence.connect(self.__on_my_presence_event)
示例#7
0
class GabberWin(BaseGabberWindow):
    def __init__(self):
        BaseGabberWindow.__init__(self, "Gabber_win")

        self.__prev_show = 0
        self.__app = GabberApp.GabberApp()

        ## Get all our widgets
        self.__optPres = self.get_widget("Presence_optmenu")
        self.__optPres.set_relief(gtk.RELIEF_NONE)
        self.__appbarMain = self.get_widget("Gabber_appbar")

        ## Setup the roster view
        self.__rostermodel = RosterModel(self.__app)
        tv = self.get_widget("Roster_treeview")
        self.__rosterview = RosterView(tv, self.__rostermodel)

        tv.show()

        ## Our status dialog
        self.status_dlg = BaseGabberWindow("Status_dlg")
        self.status_dlg.window.connect("response", self.__on_status_dlg_response)

        ## Our Add JID dialog
        self.addjid_dlg = BaseGabberWindow("AddJID_dlg")
        self.addjid_dlg.window.connect("response",
            self.__on_addjid_dlg_response)
        w = self.addjid_dlg.get_widget("toggleAdvancedOptions")
        w.connect("toggled", self.__on_addjid_advanced_options)

        ## hookup all the menus
        self.__init_menus()

        ## Connect to events
        self.__app.evtConnecting.connect(self.__on_evtConnecting)
        self.__app.evtConnected.connect(self.__on_evtConnected)
        self.__app.evtDisconnected.connect(self.__on_evtDisconnected)
        self.__app.session.evtMyPresence.connect(self.__on_my_presence_event)

    def __del__(self):
        pass

    def close(self):
        self.__app.quit()

    def __init_menus(self):
        mi = self.get_widget("Quit_item")
        mi.connect("activate", self.__on_quit_item_activate)

        mi = self.get_widget("Login_item")
        mi.set_sensitive(1)
        mi.connect("activate", self.__on_login_item_activate)

        mi = self.get_widget("Logout_item")
        mi.set_sensitive(0)
        mi.connect("activate", self.__on_logout_item_activate)

        ## Add contact
        mi = self.get_widget("AddContact_item")
        mi.connect("activate", self.__on_addcontact_item_activate)

        self.__optPres.set_sensitive(0)
        self.__optPres.get_menu().set_active(0)
        self.__optPres.connect("changed", self.__on_pres_menu_changed)

        ## Hide Offline Contacts
        mi = self.get_widget("OfflineContacts_item")
        mi.connect("activate", self.__on_offlinecontacts_item_activate)

    def __on_evtConnecting(self):
        mi = self.get_widget("Login_item")
        mi.set_sensitive(0)
        mi = self.get_widget("Logout_item")
        mi.set_sensitive(1)

    def __on_evtConnected(self):
        self.__optPres.set_sensitive(1)

    def __on_evtDisconnected(self):
        mi = self.get_widget("Login_item")
        mi.set_sensitive(1)
        mi = self.get_widget("Logout_item")
        mi.set_sensitive(0)

    def __on_quit_item_activate(self, item):
        self.close()

    def __on_login_item_activate(self, item):
        ld = LoginDlg(1)
        ld.evtDoConnect = self.__on_login_dlg_do_connect

    def __on_login_dlg_do_connect(self):
        self.__app.connect()

    def __on_logout_item_activate(self, item):
        self.__app.session.disconnect()

    def __on_addcontact_item_activate(self, item):
        self.addjid_dlg.show()

    def __on_offlinecontacts_item_activate(self, item):
        if item.get_active():
            self.__rostermodel.show_online_only = 1
        else:
            self.__rostermodel.show_online_only = 0
        self.__rostermodel.refresh(1)

    def __on_my_presence_event(self, pres):
        show = pres.getShow()

        if (show == Presence.Show.stChat):
            self.__optPres.get_menu().set_active(1)
        elif (show == Presence.Show.stAway):
            self.__optPres.get_menu().set_active(2)
        elif (show == Presence.Show.stXA):
            self.__optPres.get_menu().set_active(3)
        elif (show == Presence.Show.stDND):
            self.__optPres.get_menu().set_active(4)
        else:
            self.__optPres.get_menu().set_active(0)

    def __on_pres_menu_changed(self, btn):
        if (self.__prev_show == self.__optPres.get_history()):
            return

        tv = self.status_dlg.get_widget("tvStatus")
        tv.get_buffer().set_text("")
        self.status_dlg.show()

    def __on_addjid_dlg_response(self, dlg, resp):
        self.addjid_dlg.hide()
        ent = self.addjid_dlg.get_widget("entJID")
        jid = ent.get_text()
        tv = self.addjid_dlg.get_widget("txtReason")
        tb = tv.get_buffer()
        reason = None
        if tb.get_char_count() > 0:
            reason = tb.get_text(tb.get_start_iter(), tb.get_end_iter(), 0)

        p = Presence(jid, Presence.Type.ptSubRequest)
        if reason:
            p.status = reason

        self.__app.session.send(p)

    def __on_addjid_advanced_options(self, widget):
        frame = self.addjid_dlg.get_widget("frameAdvancedOptions")
        arrow = self.addjid_dlg.get_widget("arrowAdvancedOptions")
        lbl = self.addjid_dlg.get_widget("lblAdvancedOptions")

        if widget.get_active():
            frame.show_all()
            arrow.set_property("arrow-type", gtk.ARROW_DOWN)
            lbl.set_text("Hide Advanced Options")
        else:
            frame.hide()
            arrow.set_property("arrow-type", gtk.ARROW_RIGHT)
            lbl.set_text("Show Advanced Options")

    def __on_status_dlg_response(self, dlg, resp):
        self.status_dlg.hide()

        if (resp == gtk.RESPONSE_CANCEL):
            self.__optPres.set_history(self.__prev_show)
            return

        tv = self.status_dlg.get_widget("tvStatus")
        tb = tv.get_buffer()

        status = tb.get_text(tb.get_start_iter(), tb.get_end_iter(), 0)

        cur = self.__optPres.get_history()
        show = None
        pt = Presence.Type.ptAvailable
        if (cur == 0):
            show = Presence.Show.stOnline
        elif (cur == 1):
            show = Presence.Show.stChat
        elif (cur == 2):
            show = Presence.Show.stAway
        elif (cur == 3):
            show = Presence.Show.stXA
        elif (cur == 4):
            show = Presence.Show.stDND
        elif (cur == 5):
            show = Presence.Show.stOnline
            pt = Presence.Type.ptInvisible

        self.__app.session.send(Presence("", pt, show, status))

        self.__prev_show = cur
示例#8
0
class GabberWin(BaseGabberWindow):
    def __init__(self):
        BaseGabberWindow.__init__(self, "Gabber_win")

        self.__prev_show = 0
        self.__app = GabberApp.GabberApp()

        ## Get all our widgets
        self.__optPres = self.get_widget("Presence_optmenu")
        self.__optPres.set_relief(gtk.RELIEF_NONE)
        self.__appbarMain = self.get_widget("Gabber_appbar")

        ## Setup the roster view
        self.__rostermodel = RosterModel(self.__app)
        tv = self.get_widget("Roster_treeview")
        self.__rosterview = RosterView(tv, self.__rostermodel)

        tv.show()

        ## Our status dialog
        self.status_dlg = BaseGabberWindow("Status_dlg")
        self.status_dlg.window.connect("response",
                                       self.__on_status_dlg_response)

        ## Our Add JID dialog
        self.addjid_dlg = BaseGabberWindow("AddJID_dlg")
        self.addjid_dlg.window.connect("response",
                                       self.__on_addjid_dlg_response)
        w = self.addjid_dlg.get_widget("toggleAdvancedOptions")
        w.connect("toggled", self.__on_addjid_advanced_options)

        ## hookup all the menus
        self.__init_menus()

        ## Connect to events
        self.__app.evtConnecting.connect(self.__on_evtConnecting)
        self.__app.evtConnected.connect(self.__on_evtConnected)
        self.__app.evtDisconnected.connect(self.__on_evtDisconnected)
        self.__app.session.evtMyPresence.connect(self.__on_my_presence_event)

    def __del__(self):
        pass

    def close(self):
        self.__app.quit()

    def __init_menus(self):
        mi = self.get_widget("Quit_item")
        mi.connect("activate", self.__on_quit_item_activate)

        mi = self.get_widget("Login_item")
        mi.set_sensitive(1)
        mi.connect("activate", self.__on_login_item_activate)

        mi = self.get_widget("Logout_item")
        mi.set_sensitive(0)
        mi.connect("activate", self.__on_logout_item_activate)

        ## Add contact
        mi = self.get_widget("AddContact_item")
        mi.connect("activate", self.__on_addcontact_item_activate)

        self.__optPres.set_sensitive(0)
        self.__optPres.get_menu().set_active(0)
        self.__optPres.connect("changed", self.__on_pres_menu_changed)

        ## Hide Offline Contacts
        mi = self.get_widget("OfflineContacts_item")
        mi.connect("activate", self.__on_offlinecontacts_item_activate)

    def __on_evtConnecting(self):
        mi = self.get_widget("Login_item")
        mi.set_sensitive(0)
        mi = self.get_widget("Logout_item")
        mi.set_sensitive(1)

    def __on_evtConnected(self):
        self.__optPres.set_sensitive(1)

    def __on_evtDisconnected(self):
        mi = self.get_widget("Login_item")
        mi.set_sensitive(1)
        mi = self.get_widget("Logout_item")
        mi.set_sensitive(0)

    def __on_quit_item_activate(self, item):
        self.close()

    def __on_login_item_activate(self, item):
        ld = LoginDlg(1)
        ld.evtDoConnect = self.__on_login_dlg_do_connect

    def __on_login_dlg_do_connect(self):
        self.__app.connect()

    def __on_logout_item_activate(self, item):
        self.__app.session.disconnect()

    def __on_addcontact_item_activate(self, item):
        self.addjid_dlg.show()

    def __on_offlinecontacts_item_activate(self, item):
        if item.get_active():
            self.__rostermodel.show_online_only = 1
        else:
            self.__rostermodel.show_online_only = 0
        self.__rostermodel.refresh(1)

    def __on_my_presence_event(self, pres):
        show = pres.getShow()

        if (show == Presence.Show.stChat):
            self.__optPres.get_menu().set_active(1)
        elif (show == Presence.Show.stAway):
            self.__optPres.get_menu().set_active(2)
        elif (show == Presence.Show.stXA):
            self.__optPres.get_menu().set_active(3)
        elif (show == Presence.Show.stDND):
            self.__optPres.get_menu().set_active(4)
        else:
            self.__optPres.get_menu().set_active(0)

    def __on_pres_menu_changed(self, btn):
        if (self.__prev_show == self.__optPres.get_history()):
            return

        tv = self.status_dlg.get_widget("tvStatus")
        tv.get_buffer().set_text("")
        self.status_dlg.show()

    def __on_addjid_dlg_response(self, dlg, resp):
        self.addjid_dlg.hide()
        ent = self.addjid_dlg.get_widget("entJID")
        jid = ent.get_text()
        tv = self.addjid_dlg.get_widget("txtReason")
        tb = tv.get_buffer()
        reason = None
        if tb.get_char_count() > 0:
            reason = tb.get_text(tb.get_start_iter(), tb.get_end_iter(), 0)

        p = Presence(jid, Presence.Type.ptSubRequest)
        if reason:
            p.status = reason

        self.__app.session.send(p)

    def __on_addjid_advanced_options(self, widget):
        frame = self.addjid_dlg.get_widget("frameAdvancedOptions")
        arrow = self.addjid_dlg.get_widget("arrowAdvancedOptions")
        lbl = self.addjid_dlg.get_widget("lblAdvancedOptions")

        if widget.get_active():
            frame.show_all()
            arrow.set_property("arrow-type", gtk.ARROW_DOWN)
            lbl.set_text("Hide Advanced Options")
        else:
            frame.hide()
            arrow.set_property("arrow-type", gtk.ARROW_RIGHT)
            lbl.set_text("Show Advanced Options")

    def __on_status_dlg_response(self, dlg, resp):
        self.status_dlg.hide()

        if (resp == gtk.RESPONSE_CANCEL):
            self.__optPres.set_history(self.__prev_show)
            return

        tv = self.status_dlg.get_widget("tvStatus")
        tb = tv.get_buffer()

        status = tb.get_text(tb.get_start_iter(), tb.get_end_iter(), 0)

        cur = self.__optPres.get_history()
        show = None
        pt = Presence.Type.ptAvailable
        if (cur == 0):
            show = Presence.Show.stOnline
        elif (cur == 1):
            show = Presence.Show.stChat
        elif (cur == 2):
            show = Presence.Show.stAway
        elif (cur == 3):
            show = Presence.Show.stXA
        elif (cur == 4):
            show = Presence.Show.stDND
        elif (cur == 5):
            show = Presence.Show.stOnline
            pt = Presence.Type.ptInvisible

        self.__app.session.send(Presence("", pt, show, status))

        self.__prev_show = cur