Philipp Hörist pushed to branch master at gajim / gajim

Commits:

5 changed files:

Changes:

  • gajim/data/gui/manage_sounds.ui
    1
    +<?xml version="1.0" encoding="UTF-8"?>
    
    2
    +<!-- Generated with glade 3.36.0 -->
    
    3
    +<interface>
    
    4
    +  <requires lib="gtk+" version="3.22"/>
    
    5
    +  <object class="GtkListStore" id="liststore1">
    
    6
    +    <columns>
    
    7
    +      <!-- column-name enabled -->
    
    8
    +      <column type="gboolean"/>
    
    9
    +      <!-- column-name name -->
    
    10
    +      <column type="gchararray"/>
    
    11
    +      <!-- column-name path -->
    
    12
    +      <column type="gchararray"/>
    
    13
    +      <!-- column-name config -->
    
    14
    +      <column type="gchararray"/>
    
    15
    +    </columns>
    
    16
    +    <signal name="row-changed" handler="_on_row_changed" swapped="no"/>
    
    17
    +  </object>
    
    18
    +  <object class="GtkBox" id="manage_sounds">
    
    19
    +    <property name="visible">True</property>
    
    20
    +    <property name="can_focus">False</property>
    
    21
    +    <property name="border_width">18</property>
    
    22
    +    <property name="orientation">vertical</property>
    
    23
    +    <property name="spacing">6</property>
    
    24
    +    <child>
    
    25
    +      <object class="GtkScrolledWindow">
    
    26
    +        <property name="visible">True</property>
    
    27
    +        <property name="can_focus">True</property>
    
    28
    +        <property name="shadow_type">in</property>
    
    29
    +        <child>
    
    30
    +          <object class="GtkTreeView" id="sounds_treeview">
    
    31
    +            <property name="visible">True</property>
    
    32
    +            <property name="can_focus">True</property>
    
    33
    +            <property name="model">liststore1</property>
    
    34
    +            <signal name="cursor-changed" handler="_on_cursor_changed" swapped="no"/>
    
    35
    +            <child internal-child="selection">
    
    36
    +              <object class="GtkTreeSelection"/>
    
    37
    +            </child>
    
    38
    +            <child>
    
    39
    +              <object class="GtkTreeViewColumn">
    
    40
    +                <property name="title" translatable="yes">Active</property>
    
    41
    +                <property name="clickable">True</property>
    
    42
    +                <child>
    
    43
    +                  <object class="GtkCellRendererToggle">
    
    44
    +                    <signal name="toggled" handler="_on_toggle" swapped="no"/>
    
    45
    +                  </object>
    
    46
    +                  <attributes>
    
    47
    +                    <attribute name="active">0</attribute>
    
    48
    +                  </attributes>
    
    49
    +                </child>
    
    50
    +              </object>
    
    51
    +            </child>
    
    52
    +            <child>
    
    53
    +              <object class="GtkTreeViewColumn">
    
    54
    +                <property name="title" translatable="yes">Event</property>
    
    55
    +                <child>
    
    56
    +                  <object class="GtkCellRendererText"/>
    
    57
    +                  <attributes>
    
    58
    +                    <attribute name="text">1</attribute>
    
    59
    +                  </attributes>
    
    60
    +                </child>
    
    61
    +              </object>
    
    62
    +            </child>
    
    63
    +          </object>
    
    64
    +        </child>
    
    65
    +      </object>
    
    66
    +      <packing>
    
    67
    +        <property name="expand">True</property>
    
    68
    +        <property name="fill">True</property>
    
    69
    +        <property name="position">0</property>
    
    70
    +      </packing>
    
    71
    +    </child>
    
    72
    +    <child>
    
    73
    +      <object class="GtkBox">
    
    74
    +        <property name="visible">True</property>
    
    75
    +        <property name="can_focus">False</property>
    
    76
    +        <property name="spacing">12</property>
    
    77
    +        <child>
    
    78
    +          <object class="GtkFileChooserButton" id="filechooser">
    
    79
    +            <property name="visible">True</property>
    
    80
    +            <property name="can_focus">False</property>
    
    81
    +            <property name="preview_widget_active">False</property>
    
    82
    +            <property name="use_preview_label">False</property>
    
    83
    +            <property name="title" translatable="yes">Choose Sound</property>
    
    84
    +            <signal name="file-set" handler="_on_file_set" swapped="no"/>
    
    85
    +          </object>
    
    86
    +          <packing>
    
    87
    +            <property name="expand">True</property>
    
    88
    +            <property name="fill">True</property>
    
    89
    +            <property name="position">0</property>
    
    90
    +          </packing>
    
    91
    +        </child>
    
    92
    +        <child>
    
    93
    +          <object class="GtkButton">
    
    94
    +            <property name="visible">True</property>
    
    95
    +            <property name="can_focus">True</property>
    
    96
    +            <property name="receives_default">True</property>
    
    97
    +            <property name="tooltip_text" translatable="yes">Clear Sound</property>
    
    98
    +            <signal name="clicked" handler="_on_clear" swapped="no"/>
    
    99
    +            <child>
    
    100
    +              <object class="GtkImage">
    
    101
    +                <property name="visible">True</property>
    
    102
    +                <property name="can_focus">False</property>
    
    103
    +                <property name="icon_name">edit-clear-all-symbolic</property>
    
    104
    +              </object>
    
    105
    +            </child>
    
    106
    +          </object>
    
    107
    +          <packing>
    
    108
    +            <property name="expand">False</property>
    
    109
    +            <property name="fill">True</property>
    
    110
    +            <property name="position">1</property>
    
    111
    +          </packing>
    
    112
    +        </child>
    
    113
    +        <child>
    
    114
    +          <object class="GtkButton">
    
    115
    +            <property name="visible">True</property>
    
    116
    +            <property name="can_focus">True</property>
    
    117
    +            <property name="receives_default">False</property>
    
    118
    +            <property name="tooltip_text" translatable="yes">Play Sound</property>
    
    119
    +            <signal name="clicked" handler="_on_play" swapped="no"/>
    
    120
    +            <child>
    
    121
    +              <object class="GtkImage">
    
    122
    +                <property name="visible">True</property>
    
    123
    +                <property name="can_focus">False</property>
    
    124
    +                <property name="icon_name">media-playback-start-symbolic</property>
    
    125
    +                <property name="use_fallback">True</property>
    
    126
    +              </object>
    
    127
    +            </child>
    
    128
    +          </object>
    
    129
    +          <packing>
    
    130
    +            <property name="expand">False</property>
    
    131
    +            <property name="fill">False</property>
    
    132
    +            <property name="position">2</property>
    
    133
    +          </packing>
    
    134
    +        </child>
    
    135
    +      </object>
    
    136
    +      <packing>
    
    137
    +        <property name="expand">False</property>
    
    138
    +        <property name="fill">True</property>
    
    139
    +        <property name="position">1</property>
    
    140
    +      </packing>
    
    141
    +    </child>
    
    142
    +  </object>
    
    143
    +</interface>

  • gajim/data/gui/manage_sounds_window.ui deleted
    1
    -<?xml version="1.0" encoding="UTF-8"?>
    
    2
    -<!-- Generated with glade 3.22.1 -->
    
    3
    -<interface>
    
    4
    -  <requires lib="gtk+" version="3.20"/>
    
    5
    -  <object class="GtkListStore" id="liststore1">
    
    6
    -    <columns>
    
    7
    -      <!-- column-name enabled -->
    
    8
    -      <column type="gboolean"/>
    
    9
    -      <!-- column-name name -->
    
    10
    -      <column type="gchararray"/>
    
    11
    -      <!-- column-name path -->
    
    12
    -      <column type="gchararray"/>
    
    13
    -      <!-- column-name config -->
    
    14
    -      <column type="gchararray"/>
    
    15
    -    </columns>
    
    16
    -    <signal name="row-changed" handler="_on_row_changed" swapped="no"/>
    
    17
    -  </object>
    
    18
    -  <object class="GtkWindow" id="manage_sounds_window">
    
    19
    -    <property name="width_request">400</property>
    
    20
    -    <property name="height_request">370</property>
    
    21
    -    <property name="can_focus">False</property>
    
    22
    -    <property name="border_width">18</property>
    
    23
    -    <property name="title" translatable="yes">Manage sounds</property>
    
    24
    -    <property name="window_position">center-on-parent</property>
    
    25
    -    <property name="default_width">400</property>
    
    26
    -    <property name="default_height">370</property>
    
    27
    -    <property name="type_hint">dialog</property>
    
    28
    -    <signal name="destroy" handler="_on_destroy" swapped="no"/>
    
    29
    -    <signal name="key-press-event" handler="_on_key_press" swapped="no"/>
    
    30
    -    <child>
    
    31
    -      <placeholder/>
    
    32
    -    </child>
    
    33
    -    <child>
    
    34
    -      <object class="GtkBox">
    
    35
    -        <property name="visible">True</property>
    
    36
    -        <property name="can_focus">False</property>
    
    37
    -        <property name="orientation">vertical</property>
    
    38
    -        <property name="spacing">6</property>
    
    39
    -        <child>
    
    40
    -          <object class="GtkScrolledWindow" id="sounds_scrolledwindow">
    
    41
    -            <property name="visible">True</property>
    
    42
    -            <property name="can_focus">True</property>
    
    43
    -            <property name="shadow_type">in</property>
    
    44
    -            <child>
    
    45
    -              <object class="GtkTreeView" id="sounds_treeview">
    
    46
    -                <property name="visible">True</property>
    
    47
    -                <property name="can_focus">True</property>
    
    48
    -                <property name="model">liststore1</property>
    
    49
    -                <signal name="cursor-changed" handler="_on_cursor_changed" swapped="no"/>
    
    50
    -                <child internal-child="selection">
    
    51
    -                  <object class="GtkTreeSelection" id="treeview-selection1"/>
    
    52
    -                </child>
    
    53
    -                <child>
    
    54
    -                  <object class="GtkTreeViewColumn">
    
    55
    -                    <property name="title" translatable="yes">Active</property>
    
    56
    -                    <property name="clickable">True</property>
    
    57
    -                    <child>
    
    58
    -                      <object class="GtkCellRendererToggle">
    
    59
    -                        <signal name="toggled" handler="_on_toggle" swapped="no"/>
    
    60
    -                      </object>
    
    61
    -                      <attributes>
    
    62
    -                        <attribute name="active">0</attribute>
    
    63
    -                      </attributes>
    
    64
    -                    </child>
    
    65
    -                  </object>
    
    66
    -                </child>
    
    67
    -                <child>
    
    68
    -                  <object class="GtkTreeViewColumn">
    
    69
    -                    <property name="title" translatable="yes">Event</property>
    
    70
    -                    <child>
    
    71
    -                      <object class="GtkCellRendererText"/>
    
    72
    -                      <attributes>
    
    73
    -                        <attribute name="text">1</attribute>
    
    74
    -                      </attributes>
    
    75
    -                    </child>
    
    76
    -                  </object>
    
    77
    -                </child>
    
    78
    -              </object>
    
    79
    -            </child>
    
    80
    -          </object>
    
    81
    -          <packing>
    
    82
    -            <property name="expand">True</property>
    
    83
    -            <property name="fill">True</property>
    
    84
    -            <property name="position">0</property>
    
    85
    -          </packing>
    
    86
    -        </child>
    
    87
    -        <child>
    
    88
    -          <object class="GtkBox" id="browse_sounds_hbox">
    
    89
    -            <property name="visible">True</property>
    
    90
    -            <property name="can_focus">False</property>
    
    91
    -            <property name="spacing">6</property>
    
    92
    -            <child>
    
    93
    -              <object class="GtkFileChooserButton" id="filechooser">
    
    94
    -                <property name="visible">True</property>
    
    95
    -                <property name="can_focus">False</property>
    
    96
    -                <property name="preview_widget_active">False</property>
    
    97
    -                <property name="use_preview_label">False</property>
    
    98
    -                <property name="title" translatable="yes">Choose Sound</property>
    
    99
    -                <signal name="file-set" handler="_on_file_set" swapped="no"/>
    
    100
    -              </object>
    
    101
    -              <packing>
    
    102
    -                <property name="expand">True</property>
    
    103
    -                <property name="fill">True</property>
    
    104
    -                <property name="position">0</property>
    
    105
    -              </packing>
    
    106
    -            </child>
    
    107
    -            <child>
    
    108
    -              <object class="GtkButton">
    
    109
    -                <property name="visible">True</property>
    
    110
    -                <property name="can_focus">True</property>
    
    111
    -                <property name="receives_default">True</property>
    
    112
    -                <property name="tooltip_text" translatable="yes">Clear Sound</property>
    
    113
    -                <signal name="clicked" handler="_on_clear" swapped="no"/>
    
    114
    -                <child>
    
    115
    -                  <object class="GtkImage">
    
    116
    -                    <property name="visible">True</property>
    
    117
    -                    <property name="can_focus">False</property>
    
    118
    -                    <property name="icon_name">edit-clear-all-symbolic</property>
    
    119
    -                  </object>
    
    120
    -                </child>
    
    121
    -              </object>
    
    122
    -              <packing>
    
    123
    -                <property name="expand">False</property>
    
    124
    -                <property name="fill">True</property>
    
    125
    -                <property name="position">1</property>
    
    126
    -              </packing>
    
    127
    -            </child>
    
    128
    -            <child>
    
    129
    -              <object class="GtkButton" id="play_button">
    
    130
    -                <property name="visible">True</property>
    
    131
    -                <property name="can_focus">True</property>
    
    132
    -                <property name="receives_default">False</property>
    
    133
    -                <property name="tooltip_text" translatable="yes">Play Sound</property>
    
    134
    -                <signal name="clicked" handler="_on_play" swapped="no"/>
    
    135
    -                <child>
    
    136
    -                  <object class="GtkImage">
    
    137
    -                    <property name="visible">True</property>
    
    138
    -                    <property name="can_focus">False</property>
    
    139
    -                    <property name="icon_name">media-playback-start-symbolic</property>
    
    140
    -                    <property name="use_fallback">True</property>
    
    141
    -                  </object>
    
    142
    -                </child>
    
    143
    -              </object>
    
    144
    -              <packing>
    
    145
    -                <property name="expand">False</property>
    
    146
    -                <property name="fill">False</property>
    
    147
    -                <property name="position">2</property>
    
    148
    -              </packing>
    
    149
    -            </child>
    
    150
    -          </object>
    
    151
    -          <packing>
    
    152
    -            <property name="expand">False</property>
    
    153
    -            <property name="fill">True</property>
    
    154
    -            <property name="position">1</property>
    
    155
    -          </packing>
    
    156
    -        </child>
    
    157
    -      </object>
    
    158
    -    </child>
    
    159
    -  </object>
    
    160
    -</interface>

  • gajim/gtk/const.py
    ... ... @@ -104,6 +104,7 @@ WINDOW_MODULES = {
    104 104
         'AccountWizard': 'gajim.gtk.account_wizard',
    
    105 105
         'HistoryWindow': 'gajim.gtk.history',
    
    106 106
         'ManageProxies': 'gajim.gtk.proxies',
    
    107
    +    'ManageSounds': 'gajim.gtk.manage_sounds',
    
    107 108
         'ServiceDiscoveryWindow': 'gajim.gtk.discovery',
    
    108 109
         'BlockingList': 'gajim.gtk.blocking',
    
    109 110
         'XMLConsoleWindow': 'gajim.gtk.xml_console',
    

  • gajim/gtk/sounds.py → gajim/gtk/manage_sounds.py
    ... ... @@ -18,18 +18,29 @@ from gi.repository import Gdk
    18 18
     from gi.repository import Gtk
    
    19 19
     
    
    20 20
     from gajim.common import app
    
    21
    -from gajim.common import helpers
    
    21
    +from gajim.common.helpers import play_sound
    
    22
    +from gajim.common.helpers import check_soundfile_path
    
    23
    +from gajim.common.helpers import strip_soundfile_path
    
    22 24
     from gajim.common.i18n import _
    
    23 25
     
    
    24 26
     from gajim.gtk.util import get_builder
    
    25
    -from gajim.gtk.util import get_app_window
    
    26 27
     
    
    27 28
     
    
    28
    -class ManageSounds:
    
    29
    -    def __init__(self):
    
    30
    -        self._ui = get_builder('manage_sounds_window.ui')
    
    31
    -        self.window = self._ui.manage_sounds_window
    
    32
    -        self.window.set_transient_for(app.app.get_active_window())
    
    29
    +class ManageSounds(Gtk.ApplicationWindow):
    
    30
    +    def __init__(self, transient_for):
    
    31
    +        Gtk.ApplicationWindow.__init__(self)
    
    32
    +        self.set_application(app.app)
    
    33
    +        self.set_position(Gtk.WindowPosition.CENTER)
    
    34
    +        self.set_show_menubar(False)
    
    35
    +        self.set_name('ManageSounds')
    
    36
    +        self.set_default_size(400, 400)
    
    37
    +        self.set_resizable(True)
    
    38
    +        self.set_transient_for(transient_for)
    
    39
    +        self.set_modal(True)
    
    40
    +        self.set_title(_('Manage Sounds'))
    
    41
    +
    
    42
    +        self._ui = get_builder('manage_sounds.ui')
    
    43
    +        self.add(self._ui.manage_sounds)
    
    33 44
     
    
    34 45
             filter_ = Gtk.FileFilter()
    
    35 46
             filter_.set_name(_('All files'))
    
    ... ... @@ -44,9 +55,10 @@ class ManageSounds:
    44 55
     
    
    45 56
             self._fill_sound_treeview()
    
    46 57
     
    
    58
    +        self.connect('key-press-event', self._on_key_press)
    
    47 59
             self._ui.connect_signals(self)
    
    48 60
     
    
    49
    -        self.window.show_all()
    
    61
    +        self.show_all()
    
    50 62
     
    
    51 63
         @staticmethod
    
    52 64
         def _on_row_changed(model, path, iter_):
    
    ... ... @@ -91,7 +103,7 @@ class ManageSounds:
    91 103
     
    
    92 104
         def _on_cursor_changed(self, treeview):
    
    93 105
             model, iter_ = treeview.get_selection().get_selected()
    
    94
    -        path_to_snd_file = helpers.check_soundfile_path(model[iter_][2])
    
    106
    +        path_to_snd_file = check_soundfile_path(model[iter_][2])
    
    95 107
             if path_to_snd_file is None:
    
    96 108
                 self._ui.filechooser.unselect_all()
    
    97 109
             else:
    
    ... ... @@ -103,7 +115,7 @@ class ManageSounds:
    103 115
             filename = button.get_filename()
    
    104 116
             directory = os.path.dirname(filename)
    
    105 117
             app.settings.set('last_sounds_dir', directory)
    
    106
    -        path_to_snd_file = helpers.strip_soundfile_path(filename)
    
    118
    +        path_to_snd_file = strip_soundfile_path(filename)
    
    107 119
     
    
    108 120
             # set new path to sounds_model
    
    109 121
             model[iter_][2] = path_to_snd_file
    
    ... ... @@ -119,14 +131,8 @@ class ManageSounds:
    119 131
         def _on_play(self, *args):
    
    120 132
             model, iter_ = self._ui.sounds_treeview.get_selection().get_selected()
    
    121 133
             snd_event_config_name = model[iter_][3]
    
    122
    -        helpers.play_sound(snd_event_config_name)
    
    134
    +        play_sound(snd_event_config_name)
    
    123 135
     
    
    124 136
         def _on_key_press(self, _widget, event):
    
    125 137
             if event.keyval == Gdk.KEY_Escape:
    
    126
    -            self.window.destroy()
    
    127
    -
    
    128
    -    @staticmethod
    
    129
    -    def _on_destroy(*args):
    
    130
    -        window = get_app_window('Preferences')
    
    131
    -        if window is not None:
    
    132
    -            window.sounds_preferences = None
    138
    +            self.destroy()

  • gajim/gtk/preferences.py
    ... ... @@ -44,7 +44,6 @@ from gajim.gtk.util import get_builder
    44 44
     from gajim.gtk.util import get_icon_name
    
    45 45
     from gajim.gtk.util import get_available_iconsets
    
    46 46
     from gajim.gtk.util import open_window
    
    47
    -from gajim.gtk.sounds import ManageSounds
    
    48 47
     from gajim.gtk.const import ControlType
    
    49 48
     from gajim.gtk import gstreamer
    
    50 49
     
    
    ... ... @@ -411,9 +410,6 @@ class Preferences(Gtk.ApplicationWindow):
    411 410
             self._ui.connect_signals(self)
    
    412 411
             self.connect('key-press-event', self._on_key_press)
    
    413 412
     
    
    414
    -        self.sounds_preferences = None
    
    415
    -        self.theme_preferences = None
    
    416
    -
    
    417 413
             self.show_all()
    
    418 414
     
    
    419 415
         def _on_key_press(self, widget, event):
    
    ... ... @@ -592,11 +588,8 @@ class Preferences(Gtk.ApplicationWindow):
    592 588
             self.on_checkbutton_toggled(widget, 'sounds_on',
    
    593 589
                     [self._ui.manage_sounds_button])
    
    594 590
     
    
    595
    -    def on_manage_sounds_button_clicked(self, widget):
    
    596
    -        if self.sounds_preferences is None:
    
    597
    -            self.sounds_preferences = ManageSounds()
    
    598
    -        else:
    
    599
    -            self.sounds_preferences.window.present()
    
    591
    +    def on_manage_sounds_button_clicked(self, _widget):
    
    592
    +        open_window('ManageSounds', transient_for=self)
    
    600 593
     
    
    601 594
         def on_sound_dnd_checkbutton_toggled(self, widget):
    
    602 595
             self.on_checkbutton_toggled(widget, 'sounddnd')