Show
Ignore:
Timestamp:
01/23/07 21:32:43 (19 months ago)
Author:
asterix
Message:

merge fixes from trunk

Location:
branches/gajim_0.11/src
Files:
12 modified

Legend:

Unmodified
Added
Removed
  • branches/gajim_0.11/src/adhoc_commands.py

    r7829 r7888  
    443443                        # no commands => no commands stage 
    444444                        # commands => command selection stage 
    445                         items = response.getTag('query').getTags('item') 
     445                        query = response.getTag('query') 
     446                        if query: 
     447                                items = query.getTags('item') 
     448                        else: 
     449                                items = [] 
    446450                        if len(items)==0: 
    447451                                self.commandlist = [] 
  • branches/gajim_0.11/src/common/connection_handlers.py

    r7829 r7888  
    13251325                qp = iq_obj.setTag('time') 
    13261326                qp.setTagData('utc', strftime("%Y-%m-%dT%TZ", gmtime())) 
    1327                 qp.setTagData('tzo', "%+03d:00"% (time.timezone/(60*60))) 
     1327                qp.setTagData('tzo', "%+03d:00"% (-time.timezone/(60*60))) 
    13281328                self.connection.send(iq_obj) 
    13291329                raise common.xmpp.NodeProcessed 
     
    13871387                jid = helpers.get_jid_from_iq(msg) 
    13881388                no_log_for = gajim.config.get_per('accounts', self.name, 
    1389                         'no_log_for').split() 
     1389                        'no_log_for') 
     1390                if not no_log_for: 
     1391                        no_log_for = '' 
     1392                no_log_for = no_log_for.split() 
    13901393                encrypted = False 
    13911394                chatstate = None 
  • branches/gajim_0.11/src/common/connection.py

    r7829 r7888  
    343343                self._hostname = hostname 
    344344                if use_srv: 
    345                         # add request for srv query to the resolve, on result '_on_resolve' will be called 
    346                         gajim.resolver.resolve('_xmpp-client._tcp.' + h.encode('utf-8'), self._on_resolve) 
     345                        # add request for srv query to the resolve, on result '_on_resolve' 
     346                        # will be called 
     347                        gajim.resolver.resolve('_xmpp-client._tcp.' + helpers.idn_to_ascii(h), 
     348                                self._on_resolve) 
    347349                else: 
    348350                        self._on_resolve('', []) 
  • branches/gajim_0.11/src/common/helpers.py

    r7787 r7888  
    2626import sha 
    2727from encodings.punycode import punycode_encode 
     28from encodings import idna 
    2829 
    2930import gajim 
     
    8586 
    8687        return prep(*decompose_jid(jidstring)) 
     88 
     89def idn_to_ascii(host): 
     90        '''convert IDN (Internationalized Domain Names) to ACE (ASCII-compatible encoding)''' 
     91        labels = idna.dots.split(host) 
     92        converted_labels = [] 
     93        for label in labels: 
     94                converted_labels.append(idna.ToASCII(label)) 
     95        return ".".join(converted_labels) 
    8796 
    8897def parse_resource(resource): 
  • branches/gajim_0.11/src/common/optparser.py

    r7829 r7888  
    373373                '''fill time_stamp from before_time and after_time''' 
    374374                if self.old_values.has_key('before_time'): 
    375                         gajim.config.set('time_stamp', '%s%%H:%%M%s ' % ( 
     375                        gajim.config.set('time_stamp', '%s%%X%s ' % ( 
    376376                                self.old_values['before_time'], self.old_values['after_time'])) 
    377377                gajim.config.set('version', '0.11.0.1') 
  • branches/gajim_0.11/src/common/passwords.py

    r7829 r7888  
    1919USER_HAS_GNOMEKEYRING = False 
    2020USER_USES_GNOMEKEYRING = False 
    21 if gajim.config.get('use_gnomekeyring'): 
    22         try: 
    23                 import gnomekeyring 
    24         except ImportError: 
    25                 pass 
    26         else: 
    27                 USER_HAS_GNOMEKEYRING = True 
    28                 if gnomekeyring.is_available(): 
    29                         USER_USES_GNOMEKEYRING = True 
    30                 else: 
    31                         USER_USES_GNOMEKEYRING = False 
     21gnomekeyring = None 
    3222 
    3323class PasswordStorage(object): 
     
    10393        global storage 
    10494        if storage is None: # None is only in first time get_storage is called 
     95                if gajim.config.get('use_gnomekeyring'): 
     96                        global gnomekeyring 
     97                        try: 
     98                                import gnomekeyring 
     99                        except ImportError: 
     100                                pass 
     101                        else: 
     102                                global USER_HAS_GNOMEKEYRING 
     103                                global USER_USES_GNOMEKEYRING 
     104                                USER_HAS_GNOMEKEYRING = True 
     105                                if gnomekeyring.is_available(): 
     106                                        USER_USES_GNOMEKEYRING = True 
     107                                else: 
     108                                        USER_USES_GNOMEKEYRING = False 
    105109                if USER_USES_GNOMEKEYRING: 
    106110                        try: 
  • branches/gajim_0.11/src/config.py

    r7841 r7888  
    234234                if gajim.config.get('print_time') == 'never': 
    235235                        self.xml.get_widget('time_never_radiobutton').set_active(True) 
    236                         self._set_sensitivity_for_before_after_time_widgets(False) 
    237236                elif gajim.config.get('print_time') == 'sometimes': 
    238237                        self.xml.get_widget('time_sometimes_radiobutton').set_active(True) 
    239                         self._set_sensitivity_for_before_after_time_widgets(False) 
    240238                else: 
    241239                        self.xml.get_widget('time_always_radiobutton').set_active(True) 
     
    697695                self.on_checkbutton_toggled(widget, 'ignore_incoming_xhtml') 
    698696                 
    699         def _set_sensitivity_for_before_after_time_widgets(self, sensitive): 
    700                 self.xml.get_widget('time_stamp_label').set_sensitive(sensitive) 
    701                 self.xml.get_widget('time_stamp_textview').set_sensitive(sensitive) 
    702          
    703697        def on_time_never_radiobutton_toggled(self, widget): 
    704698                if widget.get_active(): 
    705699                        gajim.config.set('print_time', 'never') 
    706                 self._set_sensitivity_for_before_after_time_widgets(False) 
    707700                gajim.interface.save_config() 
    708701 
     
    710703                if widget.get_active(): 
    711704                        gajim.config.set('print_time', 'sometimes') 
    712                 self._set_sensitivity_for_before_after_time_widgets(False) 
    713705                gajim.interface.save_config() 
    714706 
     
    716708                if widget.get_active(): 
    717709                        gajim.config.set('print_time', 'always') 
    718                 self._set_sensitivity_for_before_after_time_widgets(True) 
    719710                gajim.interface.save_config() 
    720711 
     
    22792270                        if self.infos.has_key('registered'): 
    22802271                                del self.infos['registered'] 
    2281                         else: 
    2282                                 gajim.interface.roster.add_transport_to_roster(self.account, 
    2283                                         self.service) 
    22842272                        gajim.connections[self.account].register_agent(self.service, 
    22852273                                self.infos, True) # True is for is_form 
     
    22932281                        if self.infos.has_key('registered'): 
    22942282                                del self.infos['registered'] 
    2295                         else: 
    2296                                 gajim.interface.roster.add_transport_to_roster(self.account, 
    2297                                         self.service) 
    22982283                        gajim.connections[self.account].register_agent(self.service, 
    22992284                                self.infos) 
     
    29912976                                dialogs.ErrorDialog(pritext, sectext) 
    29922977                                return 
    2993                         server = widgets['server_comboboxentry'].child.get_text() 
     2978                        server = widgets['server_comboboxentry'].child.get_text().decode('utf-8') 
    29942979                        savepass = widgets['save_password_checkbutton'].get_active() 
    2995                         password = widgets['pass1_entry'].get_text() 
     2980                        password = widgets['pass1_entry'].get_text().decode('utf-8') 
    29962981 
    29972982                        if not self.modify: 
  • branches/gajim_0.11/src/conversation_textview.py

    r7841 r7888  
    246246                        before_img_iter.backward_char() # one char back (an image also takes one char) 
    247247                        buffer.apply_tag_by_name('focus-out-line', before_img_iter, end_iter) 
     248 
     249                        self.allow_focus_out_line = False 
    248250 
    249251                        # update the iter we hold to make comparison the next time 
  • branches/gajim_0.11/src/disco.py

    r7635 r7888  
    4848import gtkgui_helpers 
    4949import groups 
     50import adhoc_commands 
    5051 
    5152from common import gajim 
     
    987988                self.register_button = None 
    988989                self.join_button = None 
     990                self.execute_button = None 
    989991                # Keep track of our treeview signals 
    990992                self._view_signals = [] 
     
    11411143        def _add_actions(self): 
    11421144                AgentBrowser._add_actions(self) 
     1145                self.execute_button = gtk.Button() 
     1146                image = gtk.image_new_from_stock(gtk.STOCK_EXECUTE, gtk.ICON_SIZE_BUTTON) 
     1147                label = gtk.Label(_('_Execute Command...')) 
     1148                label.set_use_underline(True) 
     1149                hbox = gtk.HBox() 
     1150                hbox.pack_start(image, False, True, 6) 
     1151                hbox.pack_end(label, True, True) 
     1152                self.execute_button.add(hbox) 
     1153                self.execute_button.connect('clicked', self.on_execute_button_clicked) 
     1154                self.window.action_buttonbox.add(self.execute_button) 
     1155                self.execute_button.show_all() 
     1156 
    11431157                self.register_button = gtk.Button(label=_("Re_gister"), 
    11441158                        use_underline=True) 
     
    11601174 
    11611175        def _clean_actions(self): 
     1176                if self.execute_button: 
     1177                        self.execute_button.destroy() 
     1178                        self.execute_button = None 
    11621179                if self.register_button: 
    11631180                        self.register_button.destroy() 
     
    11791196                self.window.services_treeview.queue_draw() 
    11801197 
     1198        def on_execute_button_clicked(self, widget = None): 
     1199                '''When we want to execute a command: 
     1200                open adhoc command window''' 
     1201                model, iter = self.window.services_treeview.get_selection().get_selected() 
     1202                if not iter: 
     1203                        return 
     1204                service = model[iter][0].decode('utf-8') 
     1205                adhoc_commands.CommandWindow(self.account, service) 
     1206 
    11811207        def on_register_button_clicked(self, widget = None): 
    11821208                '''When we want to register an agent: 
     
    12081234 
    12091235        def update_actions(self): 
     1236                if self.execute_button: 
     1237                        self.execute_button.set_sensitive(False) 
    12101238                if self.register_button: 
    12111239                        self.register_button.set_sensitive(False) 
     
    12441272        def _update_actions(self, jid, node, identities, features, data): 
    12451273                AgentBrowser._update_actions(self, jid, node, identities, features, data) 
     1274                if self.execute_button and xmpp.NS_COMMANDS in features: 
     1275                        self.execute_button.set_sensitive(True) 
    12461276                if self.register_button and xmpp.NS_REGISTER in features: 
    12471277                        # We can register this agent 
  • branches/gajim_0.11/src/gtkgui_helpers.py

    r7829 r7888  
    355355                pixbuf = pixbufloader.get_pixbuf() 
    356356        except gobject.GError: # 'unknown image format' 
     357                pixbufloader.close() 
    357358                pixbuf = None 
    358359                if want_type: 
  • branches/gajim_0.11/src/profile_window.py

    r7829 r7888  
    7878                image = gtk.Image() 
    7979                self.xml.get_widget('PHOTO_button').set_image(image) 
     80                text_button = self.xml.get_widget('NOPHOTO_button') 
     81                # We use 2 buttons because some GTK theme don't show images in buttons 
     82                text_button.set_no_show_all(True) 
     83                text_button.hide() 
    8084                self.xml.signal_autoconnect(self) 
    8185                self.window.show_all() 
     
    105109                image = button.get_image() 
    106110                image.set_from_pixbuf(None) 
    107                 button.set_label(_('Click to set your avatar')) 
     111                button.hide() 
     112                text_button = self.xml.get_widget('NOPHOTO_button') 
     113                text_button.show() 
    108114                self.avatar_encoded = None 
    109115                self.avatar_mime_type = None 
     
    153159                        image = button.get_image() 
    154160                        image.set_from_pixbuf(pixbuf) 
    155                         button.set_label('') 
     161                        button.show() 
     162                        text_button = self.xml.get_widget('NOPHOTO_button') 
     163                        text_button.hide() 
    156164                        self.avatar_encoded = base64.encodestring(data) 
    157165                        # returns None if unknown type 
     
    203211 
    204212        def set_values(self, vcard): 
     213                button = self.xml.get_widget('PHOTO_button') 
     214                image = button.get_image() 
     215                text_button = self.xml.get_widget('NOPHOTO_button') 
    205216                if not 'PHOTO' in vcard: 
    206217                        # set default image 
    207                         button = self.xml.get_widget('PHOTO_button') 
    208                         image = button.get_image() 
    209218                        image.set_from_pixbuf(None) 
    210                         button.set_label(_('Click to set your avatar')) 
     219                        button.hide() 
     220                        text_button.show() 
    211221                for i in vcard.keys(): 
    212222                        if i == 'PHOTO': 
    213223                                pixbuf, self.avatar_encoded, self.avatar_mime_type = \ 
    214224                                        get_avatar_pixbuf_encoded_mime(vcard[i]) 
    215                                 button = self.xml.get_widget('PHOTO_button') 
    216                                 image = button.get_image() 
    217225                                if not pixbuf: 
    218226                                        image.set_from_pixbuf(None) 
    219                                         button.set_label(_('Click to set your avatar')) 
     227                                        button.hide() 
     228                                        text_button.show() 
    220229                                        continue 
    221230                                pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard') 
    222231                                image.set_from_pixbuf(pixbuf) 
    223                                 button.set_label('') 
     232                                button.show() 
     233                                text_button.hide() 
    224234                                continue 
    225235                        if i == 'ADR' or i == 'TEL' or i == 'EMAIL': 
  • branches/gajim_0.11/src/remote_control.py

    r7829 r7888  
    395395                return result 
    396396 
    397         @dbus.service.method(INTERFACE, in_signature='s', out_signature='a{ss}') 
     397        @dbus.service.method(INTERFACE, in_signature='s', out_signature='av') 
    398398        def list_contacts(self, account): 
    399399                '''list all contacts in the roster. If the first argument is specified, 
    400400                then return the contacts for the specified account''' 
    401                 result = dbus.Array([], signature='s') 
     401                result = dbus.Array([], signature='a{sv}') 
    402402                accounts = gajim.contacts.get_accounts() 
    403403                if len(accounts) == 0: