def __init__(self, session, members): '''constructor''' gtk.HBox.__init__(self) self.set_border_width(2) self._information = Renderers.SmileyLabel() self.eventBox = gtk.EventBox() self.eventBox.set_visible_window(False) self.eventBox.add(self._information) self.eventBox.connect('button-press-event', self.on_clicked) self.pack_start(self.eventBox, True, True) self.session = session self.members = members self.menu = gtk.Menu() copynick = gtk.ImageMenuItem(_('Copy nick to clipboard')) copynick.set_image( gtk.image_new_from_stock(gtk.STOCK_COPY, gtk.ICON_SIZE_MENU)) copypm = gtk.ImageMenuItem(_('Copy personal message to clipboard')) copypm.set_image( gtk.image_new_from_stock(gtk.STOCK_COPY, gtk.ICON_SIZE_MENU)) copymail = gtk.ImageMenuItem(_('Copy mail to clipboard')) copymail.set_image( gtk.image_new_from_stock(gtk.STOCK_COPY, gtk.ICON_SIZE_MENU)) self.menu.append(copynick) self.menu.append(copypm) self.menu.append(copymail) copynick.connect('activate', self.copy_nick) copypm.connect('activate', self.copy_pm) copymail.connect('activate', self.copy_mail) copynick.show() copypm.show() copymail.show()
def __init__(self, text, empty_text, allow_empty): '''class constructor, text is the text to show, empty_text is the text to display when no text is entered, allow_empty is a boolean that indicates if the user can enter an empty string''' gtk.VBox.__init__(self) self.entry = gtk.Entry() self.label = Renderers.SmileyLabel() #self.label.set_ellipsize(pango.ELLIPSIZE_END) self.button = gtk.Button() self.button.set_alignment(0.0, 0.5) self.button.set_relief(gtk.RELIEF_NONE) self._enabled = True self.dont_focus_out = False self._text = text self.empty_text = empty_text self.allow_empty = allow_empty self.pack_start(self.button, True, True) self.pack_start(self.entry, True, True) self.button.add(self.label) self.text = self._text or self.empty_text self.button.connect('clicked', self.on_button_clicked) self.entry.connect('activate', self.on_entry_activate) self.entry.connect('focus-out-event', self._on_focus_out) self.entry.connect('button-press-event', self._on_button_pressed) self.entry.connect('key-press-event', self._on_key_press)
def update_information(self): '''update the information of the contact''' if self.contact: if self.contact.display_name == self.contact.nick: self.nick.set_markup(Renderers.msnplus_to_list( gobject.markup_escape_text(self.contact.display_name))) else: self.nick.set_markup(Renderers.msnplus_to_list( gobject.markup_escape_text(self.contact.nick + ' (' + self.contact.display_name + ')'))) self.mail.set_markup(self.contact.account) self.message.set_markup(Renderers.msnplus_to_list( gobject.markup_escape_text(self.contact.message))) self.status.set_from_file( gui.theme.image_theme.status_icons[self.contact.status]) if (self.contact.picture): self.image.set_from_file(self.contact.picture) else: self.image.set_from_file(gui.theme.image_theme.user) if (self.contact.blocked): self.blocked.set_markup(_('Yes')) else: self.blocked.set_markup(_('No'))
def __init__(self, text, on_tab_menu, on_close_clicked, conversation, mozilla_like): '''constructor''' gtk.HBox.__init__(self) self.set_border_width(0) self.set_spacing(4) self.session = conversation.session self.mozilla_like = mozilla_like self.image = gtk.Image() self.label = gtk.EventBox() self.label.connect('button-press-event', self.on_tab_clicked, on_close_clicked, conversation) self.label.set_visible_window(False) self._label = Renderers.SmileyLabel() self._label.set_ellipsize(True) self._label.set_text(text) self.label.add(self._label) self.close = TinyButton.TinyButton(gtk.STOCK_CLOSE) self.close.set_tooltip_text(_('Close Tab (Ctrl+W)')) self.close.connect('clicked', on_close_clicked, conversation) if CLOSE_ON_LEFT: self.pack_start(self.close, False, False, 0) self.pack_start(self.image, False, False, 0) self.pack_start(self.label, True, True, 0) else: self.pack_start(self.image, False, False, 0) self.pack_start(self.label, True, True, 0) self.pack_start(self.close, False, False, 0) self.session.config.subscribe(self._on_close_button_on_tabs_visible, 'b_close_button_on_tabs') self._on_close_button_on_tabs_visible( self.session.config.get_or_set('b_close_button_on_tabs', True)) if self.session.config.i_tab_position > 1: self.set_orientation(gtk.ORIENTATION_VERTICAL) self._label.set_angle(90) else: self.set_orientation(gtk.ORIENTATION_HORIZONTAL) self._label.set_angle(0) self.session.config.subscribe(self.on_tab_position_change, 'i_tab_position') self.image.show() self.label.show() self._label.show()
def __init__(self, session, account): '''constructor''' gtk.VBox.__init__(self) self.set_border_width(2) self.session = session if self.session: self.contact = self.session.contacts.get(account) scroll = gtk.ScrolledWindow() scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) scroll.set_shadow_type(gtk.SHADOW_IN) self.model = gtk.ListStore(gtk.gdk.Pixbuf, str, str) self.list = gtk.TreeView(self.model) column = gtk.TreeViewColumn() column.set_expand(False) column1 = gtk.TreeViewColumn() column1.set_expand(False) column2 = gtk.TreeViewColumn() column2.set_expand(True) crt = Renderers.CellRendererPlus() crt_timestamp = gtk.CellRendererText() crt.set_property('ellipsize', pango.ELLIPSIZE_END) pbr = gtk.CellRendererPixbuf() self.list.append_column(column) self.list.append_column(column1) self.list.append_column(column2) self.list.set_headers_visible(False) column.pack_start(pbr, False) column1.pack_start(crt_timestamp, False) column2.pack_start(crt, True) column.add_attribute(pbr, 'pixbuf', 0) column1.add_attribute(crt_timestamp, 'text', 1) column2.add_attribute(crt, 'markup', 2) scroll.add(self.list) self.pack_start(scroll, True, True)
def _set_information(self, lines): '''set the text on the information, lines is a tuple of size 3 with 3 strings that will be replaced on the template''' self._information.set_markup(Renderers.msnplus_to_list(Header.INFO_TPL % lines))
def __init__(self, session, account): '''constructor''' gtk.VBox.__init__(self) self.set_border_width(2) self.session = session if self.session: self.contact = self.session.contacts.get(account) else: self.contact = None self.nick = Renderers.SmileyLabel() self.nick.set_alignment(0.0, 0.5) self.nick.set_ellipsize(pango.ELLIPSIZE_END) self.mail = gtk.Label() self.mail.set_alignment(0.0, 0.5) self.mail.set_ellipsize(pango.ELLIPSIZE_END) self.mail.set_selectable(True) self.message = Renderers.SmileyLabel() self.message.set_ellipsize(pango.ELLIPSIZE_END) self.message.set_alignment(0.0, 0.5) self.status = gtk.Image() self.status.set_alignment(0.0, 0.5) Avatar = extension.get_default('avatar') self.image = Avatar() image_align = gtk.Alignment(0.5, 0.5) image_align.add(self.image) self.blocked = gtk.Label() self.blocked.set_alignment(0.0, 0.5) self.blocked.set_ellipsize(pango.ELLIPSIZE_END) table = gtk.Table(4, 2, False) table.set_border_width(20) table.set_row_spacings(10) table.set_col_spacings(10) l_image = gtk.Label(_('Image')) l_image.set_alignment(0.0, 0.5) l_nick = gtk.Label(_('Nick')) l_nick.set_alignment(0.0, 0.5) l_mail = gtk.Label(_('E-Mail')) l_mail.set_alignment(0.0, 0.5) l_status = gtk.Label(_('Status')) l_status.set_alignment(0.0, 0.5) l_message = gtk.Label(_('Message')) l_message.set_alignment(0.0, 0.5) l_blocked = gtk.Label(_('Blocked')) l_blocked.set_alignment(0.0, 0.5) table.attach(l_nick, 0, 1, 0, 1, 0) table.attach(self.nick, 1, 2, 0, 1) table.attach(l_mail, 0, 1, 1, 2, 0) table.attach(self.mail, 1, 2, 1, 2) table.attach(l_status, 0, 1, 2, 3, 0) table.attach(self.status, 1, 2, 2, 3) table.attach(l_message, 0, 1, 3, 4, 0) table.attach(self.message, 1, 2, 3, 4) table.attach(l_blocked, 0, 1, 4, 5, 0) table.attach(self.blocked, 1, 2, 4, 5) hbox = gtk.HBox(False, 0) self.set_border_width(15) hbox.pack_start(image_align, False, False) hbox.pack_start(table, True, True) self.pack_start(hbox, False, False) self.update_information()
def set_text(self, text): """set the text of the label""" self._label.set_markup(Renderers.msnplus_to_list(gobject.markup_escape_text(text))) if self.mozilla_like: self.set_size_request(235, 18) # Empiric measures.
def _set_text(self, value): """set the value of text""" self._text = value self.label.set_markup(Renderers.msnplus_to_list(gobject.markup_escape_text(self._text or self.empty_text))) self.entry.set_text(self._text)