root/branches/gajim_0.11.1/src/groups.py

Revision 7475, 1.6 kB (checked in by asterix, 21 months ago)

merge ad_hoc branch. so we now have ad hoc commands and pubsub (atom). A great thanks to Tomasz Melcer (liorithiel) and Google Summer Of Code. fixes #189

Line 
1'''Window to create new post for discussion groups service.'''
2
3import gtk
4
5from common import gajim, xmpp
6import gtkgui_helpers
7
8class GroupsPostWindow:
9        def __init__(self, account, servicejid, groupid):
10                '''Open new 'create post' window to create message for groupid on servicejid service.'''
11                assert isinstance(servicejid, basestring)
12                assert isinstance(groupid, basestring)
13
14                self.account = account
15                self.servicejid = servicejid
16                self.groupid = groupid
17
18                self.xml = gtkgui_helpers.get_glade('groups_post_window.glade')
19                self.window = self.xml.get_widget('groups_post_window')
20                for name in ('from_entry', 'subject_entry', 'contents_textview'):
21                        self.__dict__[name] = self.xml.get_widget(name)
22
23                self.xml.signal_autoconnect(self)
24                self.window.show_all()
25
26        def on_cancel_button_clicked(self, w):
27                '''Close window.'''
28                self.window.destroy()
29
30        def on_send_button_clicked(self, w):
31                '''Gather info from widgets and send it as a message.'''
32                # constructing item to publish... that's atom:entry element
33                item = xmpp.Node('entry', {'xmlns':'http://www.w3.org/2005/Atom'})
34                author = item.addChild('author')
35                author.addChild('name', {}, [self.from_entry.get_text()])
36                item.addChild('generator', {}, ['Gajim'])
37                item.addChild('title', {}, [self.subject_entry.get_text()])
38                item.addChild('id', {}, ['0'])
39
40                buffer = self.contents_textview.get_buffer()
41                item.addChild('content', {}, [buffer.get_text(buffer.get_start_iter(), buffer.get_end_iter())])
42
43                # publish it to node
44                gajim.connections[self.account].send_pb_publish(self.servicejid, self.groupid, item, '0')
45
46                # close the window
47                self.window.destroy()
Note: See TracBrowser for help on using the browser.