Philipp Hörist pushed to branch gajim_1.0 at gajim / gajim

Commits:

6 changed files:

Changes:

  • ChangeLog
    1
    -Gajim 1.0.0 (15 March 2018)
    
    2
    -  
    
    3
    -  * Add support for geo: URIs
    
    4
    -  * More improvements for HiDPI Screens
    
    5
    -  * Fixed various MAM related issues
    
    6
    -  * Various other small bugfixes
    
    7
    -
    
    8
    -Gajim 0.99.2 (17 February 2018)
    
    9
    -  
    
    10
    -  * Speed up DB querys on MAM sync
    
    11
    -  * Fix config file encoding
    
    12
    -  * Bug fixes
    
    1
    +Gajim 1.0.0 (17 March 2018)
    
    13 2
     
    
    14
    -Gajim 0.99.1 (08 February 2018)
    
    15
    -  
    
    3
    +  * Ported to GTK3 / Python3
    
    16 4
       * Integrate HTTPUpload
    
    17 5
       * Add Navigation buttons in History Window
    
    18
    -  * Added XEP-0368 (SRV records for XMPP over TLS)
    
    19 6
       * Improvements for HiDPI Screens
    
    20
    -  * Move Chat Menu button so we are not forced to use CSD
    
    21 7
       * Depend on the python keyring package for password storage
    
    22
    -  * Bug fixes
    
    23
    -
    
    24
    -Gajim 0.98.2 (17 December 2017)
    
    25
    -
    
    26
    -  * Fix DB migration
    
    27
    -
    
    28
    -Gajim 0.98.1 (15 December 2017)
    
    29
    -
    
    30
    -  * Ported to GTK3 / Python3
    
    31 8
       * Flatpak support
    
    32 9
       * Lots of refactoring
    
    33 10
       * New Emoji support
    
    ... ... @@ -40,14 +17,22 @@ Gajim 0.98.1 (15 December 2017)
    40 17
       * Added mam:1 and mam:2 support (mam:0 was removed)
    
    41 18
       * Added MAM for MUCs support
    
    42 19
       * Added support for showing XEP-0084 Avatars
    
    20
    +  * Add support for geo: URIs
    
    43 21
       * Added xmpp URI handling directly in Gajim
    
    44 22
       * Removed Gajim-Remote
    
    45 23
       * Removed XEP-0012 (Last Activity)
    
    46 24
       * Removed XEP-0136 (Message Archiving)
    
    47 25
       * Added XEP-0156 (Discovering Alternative XMPP Connection Methods)
    
    48 26
       * Added XEP-0319 (Last User Interaction in Presence)
    
    27
    +  * Added XEP-0368 (SRV records for XMPP over TLS)
    
    49 28
       * Added XEP-0380 (Explicit Message Encryption)
    
    50 29
       * Added Jingle FT:5 support
    
    30
    +  * Lots of other small bugfixes
    
    31
    +
    
    32
    +  KNOWN ISSUES: 
    
    33
    +
    
    34
    +    - Meta Contacts: Filtering the roster could lead to a crash in some circumstances. Use CTRL + N for starting new chats as a workaround
    
    35
    +    - Audio/Video support is currently not maintained and most likely not working
    
    51 36
     
    
    52 37
     Gajim 0.16.9 (30 November 2017)
    
    53 38
     
    

  • gajim/app_actions.py
    ... ... @@ -286,3 +286,13 @@ class AppActions():
    286 286
                 win.present()
    
    287 287
             else:
    
    288 288
                app.interface.create_ipython_window()
    
    289
    +
    
    290
    +    def show_next_pending_event(self, action, param):
    
    291
    +        """
    
    292
    +        Show the window(s) with next pending event in tabbed/group chats
    
    293
    +        """
    
    294
    +        if app.events.get_nb_events():
    
    295
    +            account, jid, event = app.events.get_first_systray_event()
    
    296
    +            if not event:
    
    297
    +                return
    
    298
    +            app.interface.handle_event(account, jid, event.type_)

  • gajim/dialogs.py
    ... ... @@ -2755,19 +2755,10 @@ class SynchroniseSelectContactsDialog:
    2755 2755
     
    
    2756 2756
     class StartChatDialog(Gtk.ApplicationWindow):
    
    2757 2757
         def __init__(self):
    
    2758
    -        # Must be before ApplicationWindow.__init__
    
    2759
    -        # or we get our own window
    
    2760
    -        active_window = app.app.get_active_window()
    
    2761
    -
    
    2762 2758
             Gtk.ApplicationWindow.__init__(self)
    
    2763 2759
             self.set_name('StartChatDialog')
    
    2764 2760
             self.set_application(app.app)
    
    2765
    -        mode = app.config.get('one_message_window') != 'always_with_roster'
    
    2766
    -        if active_window == app.interface.roster.window and mode:
    
    2767
    -            self.set_position(Gtk.WindowPosition.CENTER)
    
    2768
    -        else:
    
    2769
    -            self.set_transient_for(active_window)
    
    2770
    -            self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
    
    2761
    +        self.set_position(Gtk.WindowPosition.CENTER)
    
    2771 2762
             self.set_show_menubar(False)
    
    2772 2763
             self.set_title(_('Start new Conversation'))
    
    2773 2764
             self.set_default_size(-1, 400)
    

  • gajim/gajim.py
    ... ... @@ -98,7 +98,15 @@ class GajimApplication(Gtk.Application):
    98 98
                                  _('Show all warnings'))
    
    99 99
             self.add_main_option('ipython', ord('i'), GLib.OptionFlags.NONE,
    
    100 100
                                  GLib.OptionArg.NONE,
    
    101
    -                             _('open ipython shell'))
    
    101
    +                             _('Open IPython shell'))
    
    102
    +        self.add_main_option('show-next-pending-event', 0, GLib.OptionFlags.NONE,
    
    103
    +                             GLib.OptionArg.NONE,
    
    104
    +                             _('Pops up a window with the next pending event'))
    
    105
    +        self.add_main_option('start-chat', 0, GLib.OptionFlags.NONE,
    
    106
    +                             GLib.OptionArg.NONE,
    
    107
    +                             _('Start a new chat'))
    
    108
    +
    
    109
    +        self.add_main_option_entries(self._get_remaining_entry())
    
    102 110
     
    
    103 111
             self.connect('handle-local-options', self._handle_local_options)
    
    104 112
             self.connect('command-line', self._handle_remote_options)
    
    ... ... @@ -114,6 +122,17 @@ class GajimApplication(Gtk.Application):
    114 122
             if GLib.get_application_name() != 'Gajim':
    
    115 123
                 GLib.set_application_name('Gajim')
    
    116 124
     
    
    125
    +    @staticmethod
    
    126
    +    def _get_remaining_entry():
    
    127
    +        option = GLib.OptionEntry()
    
    128
    +        option.arg = GLib.OptionArg.STRING_ARRAY
    
    129
    +        option.arg_data = None
    
    130
    +        option.arg_description = ('[URI …]')
    
    131
    +        option.flags = GLib.OptionFlags.NONE
    
    132
    +        option.long_name = GLib.OPTION_REMAINING
    
    133
    +        option.short_name = 0
    
    134
    +        return [option]
    
    135
    +
    
    117 136
         def _startup(self, application):
    
    118 137
             from gajim import gtkexcepthook
    
    119 138
             gtkexcepthook.init()
    
    ... ... @@ -301,24 +320,26 @@ class GajimApplication(Gtk.Application):
    301 320
             # Parse all options that should be executed on a remote instance
    
    302 321
             options = command_line.get_options_dict()
    
    303 322
     
    
    304
    -        if options.contains('ipython'):
    
    305
    -            self.activate_action('ipython')
    
    306
    -            return 0
    
    323
    +        remote_commands = ['ipython',
    
    324
    +                           'show-next-pending-event',
    
    325
    +                           'start-chat',
    
    326
    +                          ]
    
    327
    +
    
    328
    +        remaining = options.lookup_value(GLib.OPTION_REMAINING,
    
    329
    +                                         GLib.VariantType.new('as'))
    
    330
    +
    
    331
    +        for cmd in remote_commands:
    
    332
    +            if options.contains(cmd):
    
    333
    +                self.activate_action(cmd)
    
    334
    +                return 0
    
    307 335
     
    
    308
    -        uri = self._parse_uris(command_line)
    
    309
    -        if uri is not None:
    
    310
    -            self._open_uris(uri)
    
    336
    +        if remaining is not None:
    
    337
    +            self._open_uris(remaining.unpack())
    
    311 338
                 return 0
    
    312 339
     
    
    313 340
             self.activate()
    
    314 341
             return 0
    
    315 342
     
    
    316
    -    @staticmethod
    
    317
    -    def _parse_uris(command_line):
    
    318
    -        args = command_line.get_arguments()
    
    319
    -        if len(args) > 1:
    
    320
    -            return args[1:]
    
    321
    -
    
    322 343
         def _handle_local_options(self, application,
    
    323 344
                                   options: GLib.VariantDict) -> int:
    
    324 345
             # Parse all options that have to be executed before ::startup
    
    ... ... @@ -425,6 +446,7 @@ class GajimApplication(Gtk.Application):
    425 446
                 ('about', action.on_about),
    
    426 447
                 ('faq', action.on_faq),
    
    427 448
                 ('ipython', action.toggle_ipython),
    
    449
    +            ('show-next-pending-event', action.show_next_pending_event),
    
    428 450
             ]
    
    429 451
     
    
    430 452
             act = Gio.SimpleAction.new('add-contact', GLib.VariantType.new('s'))
    

  • gajim/gajim_remote.py
    ... ... @@ -85,14 +85,6 @@ class GajimRemote:
    85 85
                                             _('show help on command'), False)
    
    86 86
                                     ]
    
    87 87
                             ],
    
    88
    -                'toggle_roster_appearance': [
    
    89
    -                                _('Shows or hides the roster window'),
    
    90
    -                                []
    
    91
    -                        ],
    
    92
    -                'show_next_pending_event': [
    
    93
    -                                _('Pops up a window with the next pending event'),
    
    94
    -                                []
    
    95
    -                        ],
    
    96 88
                     'list_contacts': [
    
    97 89
                                     _('Lists all contacts in roster, one for each line'),
    
    98 90
                                     [
    
    ... ... @@ -257,10 +249,6 @@ class GajimRemote:
    257 249
                                     _('Check if Gajim is running'),
    
    258 250
                                     []
    
    259 251
                             ],
    
    260
    -                'toggle_ipython': [
    
    261
    -                                _('Shows or hides the ipython window'),
    
    262
    -                                []
    
    263
    -                        ],
    
    264 252
     
    
    265 253
                     }
    
    266 254
     
    

  • gajim/remote_control.py
    ... ... @@ -646,50 +646,6 @@ class SignalObject(dbus.service.Object):
    646 646
                             result.append(item)
    
    647 647
             return result
    
    648 648
     
    
    649
    -    @dbus.service.method(INTERFACE, in_signature='', out_signature='')
    
    650
    -    def toggle_roster_appearance(self):
    
    651
    -        """
    
    652
    -        Show/hide the roster window
    
    653
    -        """
    
    654
    -        win = app.interface.roster.window
    
    655
    -        if win.get_property('visible'):
    
    656
    -            GLib.idle_add(win.hide)
    
    657
    -        else:
    
    658
    -            win.present()
    
    659
    -            # preserve the 'steal focus preservation'
    
    660
    -            if self._is_first():
    
    661
    -                win.window.present()
    
    662
    -            else:
    
    663
    -                win.window.present_with_time(int(time()))
    
    664
    -
    
    665
    -    @dbus.service.method(INTERFACE, in_signature='', out_signature='')
    
    666
    -    def show_roster(self):
    
    667
    -        """
    
    668
    -        Show the roster window
    
    669
    -        """
    
    670
    -        win = app.interface.roster.window
    
    671
    -        win.present()
    
    672
    -        # preserve the 'steal focus preservation'
    
    673
    -        if self._is_first():
    
    674
    -            win.window.present()
    
    675
    -        else:
    
    676
    -            win.window.present_with_time(int(time()))
    
    677
    -
    
    678
    -    @dbus.service.method(INTERFACE, in_signature='', out_signature='')
    
    679
    -    def toggle_ipython(self):
    
    680
    -        """
    
    681
    -        Show/hide the ipython window
    
    682
    -        """
    
    683
    -        win = app.ipython_window
    
    684
    -        if win:
    
    685
    -            if win.window.is_visible():
    
    686
    -                GLib.idle_add(win.hide)
    
    687
    -            else:
    
    688
    -                win.show_all()
    
    689
    -                win.present()
    
    690
    -        else:
    
    691
    -            app.interface.create_ipython_window()
    
    692
    -
    
    693 649
         @dbus.service.method(INTERFACE, in_signature='', out_signature='a{ss}')
    
    694 650
         def prefs_list(self):
    
    695 651
             prefs_dict = DBUS_DICT_SS()