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

Commits:

3 changed files:

Changes:

  • gajim/data/gui/groupchat_creation.ui
    1 1
     <?xml version="1.0" encoding="UTF-8"?>
    
    2
    -<!-- Generated with glade 3.38.2 -->
    
    2
    +<!-- Generated with glade 3.40.0 -->
    
    3 3
     <interface>
    
    4 4
       <requires lib="gtk+" version="3.24"/>
    
    5 5
       <object class="GtkListStore" id="account_liststore">
    
    ... ... @@ -38,7 +38,7 @@
    38 38
               </packing>
    
    39 39
             </child>
    
    40 40
             <child>
    
    41
    -          <!-- n-columns=2 n-rows=6 -->
    
    41
    +          <!-- n-columns=2 n-rows=5 -->
    
    42 42
               <object class="GtkGrid" id="grid">
    
    43 43
                 <property name="visible">True</property>
    
    44 44
                 <property name="can-focus">False</property>
    
    ... ... @@ -146,117 +146,173 @@
    146 146
                   </packing>
    
    147 147
                 </child>
    
    148 148
                 <child>
    
    149
    -              <object class="GtkEntry" id="address_entry">
    
    149
    +              <object class="GtkSwitch" id="advanced_switch">
    
    150
    +                <property name="visible">True</property>
    
    150 151
                     <property name="can-focus">True</property>
    
    151
    -                <property name="no-show-all">True</property>
    
    152
    -                <signal name="changed" handler="_on_address_entry_changed" swapped="no"/>
    
    152
    +                <property name="halign">end</property>
    
    153
    +                <property name="margin-top">12</property>
    
    154
    +                <signal name="notify::active" handler="_on_toggle_advanced" swapped="no"/>
    
    153 155
                   </object>
    
    154 156
                   <packing>
    
    155
    -                <property name="left-attach">1</property>
    
    156
    -                <property name="top-attach">5</property>
    
    157
    +                <property name="left-attach">0</property>
    
    158
    +                <property name="top-attach">3</property>
    
    157 159
                   </packing>
    
    158 160
                 </child>
    
    159 161
                 <child>
    
    160
    -              <object class="GtkLabel" id="address_label">
    
    162
    +              <object class="GtkLabel">
    
    163
    +                <property name="visible">True</property>
    
    161 164
                     <property name="can-focus">False</property>
    
    162
    -                <property name="no-show-all">True</property>
    
    163
    -                <property name="halign">end</property>
    
    164
    -                <property name="label" translatable="yes">_Address</property>
    
    165
    -                <property name="use-underline">True</property>
    
    166
    -                <style>
    
    167
    -                  <class name="dim-label"/>
    
    168
    -                </style>
    
    165
    +                <property name="halign">start</property>
    
    166
    +                <property name="margin-top">12</property>
    
    167
    +                <property name="label" translatable="yes">Advanced Settings</property>
    
    169 168
                   </object>
    
    170 169
                   <packing>
    
    171
    -                <property name="left-attach">0</property>
    
    172
    -                <property name="top-attach">5</property>
    
    170
    +                <property name="left-attach">1</property>
    
    171
    +                <property name="top-attach">3</property>
    
    173 172
                   </packing>
    
    174 173
                 </child>
    
    175 174
                 <child>
    
    176
    -              <object class="GtkRadioButton" id="private_radio">
    
    177
    -                <property name="visible">True</property>
    
    178
    -                <property name="can-focus">True</property>
    
    179
    -                <property name="receives-default">False</property>
    
    180
    -                <property name="margin-top">12</property>
    
    181
    -                <property name="active">True</property>
    
    182
    -                <property name="draw-indicator">True</property>
    
    183
    -                <property name="group">public_radio</property>
    
    184
    -                <signal name="toggled" handler="_on_public_private_toggled" swapped="no"/>
    
    175
    +              <object class="GtkBox" id="advanced_box">
    
    176
    +                <property name="can-focus">False</property>
    
    177
    +                <property name="no-show-all">True</property>
    
    178
    +                <property name="halign">center</property>
    
    179
    +                <property name="orientation">vertical</property>
    
    180
    +                <property name="spacing">12</property>
    
    185 181
                     <child>
    
    186
    -                  <object class="GtkBox">
    
    182
    +                  <object class="GtkRadioButton" id="private_radio">
    
    187 183
                         <property name="visible">True</property>
    
    188
    -                    <property name="can-focus">False</property>
    
    189
    -                    <property name="halign">start</property>
    
    190
    -                    <property name="margin-start">6</property>
    
    191
    -                    <property name="orientation">vertical</property>
    
    184
    +                    <property name="can-focus">True</property>
    
    185
    +                    <property name="receives-default">False</property>
    
    186
    +                    <property name="margin-top">12</property>
    
    187
    +                    <property name="active">True</property>
    
    188
    +                    <property name="draw-indicator">True</property>
    
    189
    +                    <property name="group">public_radio</property>
    
    192 190
                         <child>
    
    193
    -                      <object class="GtkLabel">
    
    191
    +                      <object class="GtkBox">
    
    194 192
                             <property name="visible">True</property>
    
    195 193
                             <property name="can-focus">False</property>
    
    196 194
                             <property name="halign">start</property>
    
    197
    -                        <property name="label" translatable="yes">Private</property>
    
    198
    -                        <property name="use-markup">True</property>
    
    199
    -                        <property name="wrap">True</property>
    
    200
    -                        <property name="xalign">0</property>
    
    201
    -                        <style>
    
    202
    -                          <class name="bold"/>
    
    203
    -                        </style>
    
    195
    +                        <property name="margin-start">6</property>
    
    196
    +                        <property name="orientation">vertical</property>
    
    197
    +                        <child>
    
    198
    +                          <object class="GtkLabel">
    
    199
    +                            <property name="visible">True</property>
    
    200
    +                            <property name="can-focus">False</property>
    
    201
    +                            <property name="halign">start</property>
    
    202
    +                            <property name="label" translatable="yes">Private</property>
    
    203
    +                            <property name="use-markup">True</property>
    
    204
    +                            <property name="wrap">True</property>
    
    205
    +                            <property name="xalign">0</property>
    
    206
    +                            <style>
    
    207
    +                              <class name="bold"/>
    
    208
    +                            </style>
    
    209
    +                          </object>
    
    210
    +                          <packing>
    
    211
    +                            <property name="expand">False</property>
    
    212
    +                            <property name="fill">True</property>
    
    213
    +                            <property name="position">0</property>
    
    214
    +                          </packing>
    
    215
    +                        </child>
    
    216
    +                        <child>
    
    217
    +                          <object class="GtkLabel">
    
    218
    +                            <property name="visible">True</property>
    
    219
    +                            <property name="can-focus">False</property>
    
    220
    +                            <property name="halign">start</property>
    
    221
    +                            <property name="label" translatable="yes">You have to invite people so they can join</property>
    
    222
    +                            <property name="wrap">True</property>
    
    223
    +                            <property name="xalign">0</property>
    
    224
    +                            <style>
    
    225
    +                              <class name="dim-label"/>
    
    226
    +                            </style>
    
    227
    +                          </object>
    
    228
    +                          <packing>
    
    229
    +                            <property name="expand">False</property>
    
    230
    +                            <property name="fill">True</property>
    
    231
    +                            <property name="position">1</property>
    
    232
    +                          </packing>
    
    233
    +                        </child>
    
    204 234
                           </object>
    
    205
    -                      <packing>
    
    206
    -                        <property name="expand">False</property>
    
    207
    -                        <property name="fill">True</property>
    
    208
    -                        <property name="position">0</property>
    
    209
    -                      </packing>
    
    210 235
                         </child>
    
    236
    +                  </object>
    
    237
    +                  <packing>
    
    238
    +                    <property name="expand">False</property>
    
    239
    +                    <property name="fill">True</property>
    
    240
    +                    <property name="position">0</property>
    
    241
    +                  </packing>
    
    242
    +                </child>
    
    243
    +                <child>
    
    244
    +                  <object class="GtkRadioButton" id="public_radio">
    
    245
    +                    <property name="visible">True</property>
    
    246
    +                    <property name="can-focus">True</property>
    
    247
    +                    <property name="receives-default">False</property>
    
    248
    +                    <property name="draw-indicator">True</property>
    
    249
    +                    <property name="group">private_radio</property>
    
    211 250
                         <child>
    
    212
    -                      <object class="GtkLabel">
    
    251
    +                      <object class="GtkBox">
    
    213 252
                             <property name="visible">True</property>
    
    214 253
                             <property name="can-focus">False</property>
    
    215
    -                        <property name="halign">start</property>
    
    216
    -                        <property name="label" translatable="yes">You have to invite people so they can join</property>
    
    217
    -                        <property name="wrap">True</property>
    
    218
    -                        <property name="xalign">0</property>
    
    219
    -                        <style>
    
    220
    -                          <class name="dim-label"/>
    
    221
    -                        </style>
    
    254
    +                        <property name="margin-start">6</property>
    
    255
    +                        <property name="orientation">vertical</property>
    
    256
    +                        <child>
    
    257
    +                          <object class="GtkLabel">
    
    258
    +                            <property name="visible">True</property>
    
    259
    +                            <property name="can-focus">False</property>
    
    260
    +                            <property name="halign">start</property>
    
    261
    +                            <property name="label" translatable="yes">Public</property>
    
    262
    +                            <property name="use-markup">True</property>
    
    263
    +                            <property name="xalign">0</property>
    
    264
    +                            <style>
    
    265
    +                              <class name="bold"/>
    
    266
    +                            </style>
    
    267
    +                          </object>
    
    268
    +                          <packing>
    
    269
    +                            <property name="expand">False</property>
    
    270
    +                            <property name="fill">True</property>
    
    271
    +                            <property name="position">0</property>
    
    272
    +                          </packing>
    
    273
    +                        </child>
    
    274
    +                        <child>
    
    275
    +                          <object class="GtkLabel">
    
    276
    +                            <property name="visible">True</property>
    
    277
    +                            <property name="can-focus">False</property>
    
    278
    +                            <property name="halign">start</property>
    
    279
    +                            <property name="label" translatable="yes">Anyone can join</property>
    
    280
    +                            <property name="wrap">True</property>
    
    281
    +                            <property name="xalign">0</property>
    
    282
    +                            <style>
    
    283
    +                              <class name="dim-label"/>
    
    284
    +                            </style>
    
    285
    +                          </object>
    
    286
    +                          <packing>
    
    287
    +                            <property name="expand">False</property>
    
    288
    +                            <property name="fill">True</property>
    
    289
    +                            <property name="position">1</property>
    
    290
    +                          </packing>
    
    291
    +                        </child>
    
    222 292
                           </object>
    
    223
    -                      <packing>
    
    224
    -                        <property name="expand">False</property>
    
    225
    -                        <property name="fill">True</property>
    
    226
    -                        <property name="position">1</property>
    
    227
    -                      </packing>
    
    228 293
                         </child>
    
    229 294
                       </object>
    
    295
    +                  <packing>
    
    296
    +                    <property name="expand">False</property>
    
    297
    +                    <property name="fill">True</property>
    
    298
    +                    <property name="position">1</property>
    
    299
    +                  </packing>
    
    230 300
                     </child>
    
    231
    -              </object>
    
    232
    -              <packing>
    
    233
    -                <property name="left-attach">1</property>
    
    234
    -                <property name="top-attach">3</property>
    
    235
    -              </packing>
    
    236
    -            </child>
    
    237
    -            <child>
    
    238
    -              <object class="GtkRadioButton" id="public_radio">
    
    239
    -                <property name="visible">True</property>
    
    240
    -                <property name="can-focus">True</property>
    
    241
    -                <property name="receives-default">False</property>
    
    242
    -                <property name="draw-indicator">True</property>
    
    243
    -                <property name="group">private_radio</property>
    
    244 301
                     <child>
    
    245 302
                       <object class="GtkBox">
    
    246 303
                         <property name="visible">True</property>
    
    247 304
                         <property name="can-focus">False</property>
    
    248
    -                    <property name="margin-start">6</property>
    
    249
    -                    <property name="orientation">vertical</property>
    
    305
    +                    <property name="halign">end</property>
    
    306
    +                    <property name="spacing">12</property>
    
    250 307
                         <child>
    
    251 308
                           <object class="GtkLabel">
    
    252 309
                             <property name="visible">True</property>
    
    253 310
                             <property name="can-focus">False</property>
    
    254
    -                        <property name="halign">start</property>
    
    255
    -                        <property name="label" translatable="yes">Public</property>
    
    256
    -                        <property name="use-markup">True</property>
    
    257
    -                        <property name="xalign">0</property>
    
    311
    +                        <property name="halign">end</property>
    
    312
    +                        <property name="label" translatable="yes">_Address</property>
    
    313
    +                        <property name="use-underline">True</property>
    
    258 314
                             <style>
    
    259
    -                          <class name="bold"/>
    
    315
    +                          <class name="dim-label"/>
    
    260 316
                             </style>
    
    261 317
                           </object>
    
    262 318
                           <packing>
    
    ... ... @@ -266,16 +322,11 @@
    266 322
                           </packing>
    
    267 323
                         </child>
    
    268 324
                         <child>
    
    269
    -                      <object class="GtkLabel">
    
    325
    +                      <object class="GtkEntry" id="address_entry">
    
    326
    +                        <property name="width-request">250</property>
    
    270 327
                             <property name="visible">True</property>
    
    271
    -                        <property name="can-focus">False</property>
    
    272
    -                        <property name="halign">start</property>
    
    273
    -                        <property name="label" translatable="yes">Anyone can join</property>
    
    274
    -                        <property name="wrap">True</property>
    
    275
    -                        <property name="xalign">0</property>
    
    276
    -                        <style>
    
    277
    -                          <class name="dim-label"/>
    
    278
    -                        </style>
    
    328
    +                        <property name="can-focus">True</property>
    
    329
    +                        <signal name="changed" handler="_on_address_entry_changed" swapped="no"/>
    
    279 330
                           </object>
    
    280 331
                           <packing>
    
    281 332
                             <property name="expand">False</property>
    
    ... ... @@ -284,19 +335,19 @@
    284 335
                           </packing>
    
    285 336
                         </child>
    
    286 337
                       </object>
    
    338
    +                  <packing>
    
    339
    +                    <property name="expand">False</property>
    
    340
    +                    <property name="fill">True</property>
    
    341
    +                    <property name="position">2</property>
    
    342
    +                  </packing>
    
    287 343
                     </child>
    
    288 344
                   </object>
    
    289 345
                   <packing>
    
    290
    -                <property name="left-attach">1</property>
    
    346
    +                <property name="left-attach">0</property>
    
    291 347
                     <property name="top-attach">4</property>
    
    348
    +                <property name="width">2</property>
    
    292 349
                   </packing>
    
    293 350
                 </child>
    
    294
    -            <child>
    
    295
    -              <placeholder/>
    
    296
    -            </child>
    
    297
    -            <child>
    
    298
    -              <placeholder/>
    
    299
    -            </child>
    
    300 351
               </object>
    
    301 352
               <packing>
    
    302 353
                 <property name="expand">False</property>
    

  • gajim/gtk/builder.pyi
    ... ... @@ -388,10 +388,11 @@ class GroupchatCreationBuilder(Builder):
    388 388
         description_entry: Gtk.Entry
    
    389 389
         account_combo: Gtk.ComboBox
    
    390 390
         account_label: Gtk.Label
    
    391
    -    address_entry: Gtk.Entry
    
    392
    -    address_label: Gtk.Label
    
    391
    +    advanced_switch: Gtk.Switch
    
    392
    +    advanced_box: Gtk.Box
    
    393 393
         private_radio: Gtk.RadioButton
    
    394 394
         public_radio: Gtk.RadioButton
    
    395
    +    address_entry: Gtk.Entry
    
    395 396
         spinner: Gtk.Spinner
    
    396 397
         create_button: Gtk.Button
    
    397 398
     
    

  • gajim/gtk/groupchat_creation.py
    ... ... @@ -12,6 +12,7 @@
    12 12
     # You should have received a copy of the GNU General Public License
    
    13 13
     # along with Gajim. If not, see <http://www.gnu.org/licenses/>.
    
    14 14
     
    
    15
    +from typing import Any
    
    15 16
     from typing import Optional
    
    16 17
     from typing import Union
    
    17 18
     
    
    ... ... @@ -204,9 +205,6 @@ def _set_warning_from_error_code(self, error_code: str) -> None:
    204 205
             self._set_warning(MUC_DISCO_ERRORS[error_code])
    
    205 206
     
    
    206 207
         def _on_name_entry_changed(self, entry: Gtk.Entry) -> None:
    
    207
    -        if self._ui.private_radio.get_active():
    
    208
    -            return
    
    209
    -
    
    210 208
             name = entry.get_text()
    
    211 209
             name = name.replace(' ', '-')
    
    212 210
             server = self._get_muc_service_jid()
    
    ... ... @@ -229,14 +227,12 @@ def _update_entry_completion(self, entry: Gtk.Entry, text: str) -> None:
    229 227
             server = self._get_muc_service_jid()
    
    230 228
             model.append([f'{text}@{server}'])
    
    231 229
     
    
    232
    -    def _on_public_private_toggled(self, _radiobutton: Gtk.RadioButton) -> None:
    
    233
    -        is_public = self._ui.public_radio.get_active()
    
    234
    -        if is_public:
    
    235
    -            self._validate_jid(self._ui.address_entry.get_text())
    
    230
    +    def _on_toggle_advanced(self, switch: Gtk.Switch, *args: Any) -> None:
    
    231
    +        if switch.get_active():
    
    232
    +            self._ui.advanced_box.set_no_show_all(False)
    
    233
    +            self._ui.advanced_box.show_all()
    
    236 234
             else:
    
    237
    -            self._ui.create_button.set_sensitive(True)
    
    238
    -        self._ui.address_label.set_visible(is_public)
    
    239
    -        self._ui.address_entry.set_visible(is_public)
    
    235
    +            self._ui.advanced_box.hide()
    
    240 236
     
    
    241 237
         def _on_create_clicked(self, _button: Gtk.Button) -> None:
    
    242 238
             assert self._account is not None
    
    ... ... @@ -246,9 +242,8 @@ def _on_create_clicked(self, _button: Gtk.Button) -> None:
    246 242
                     _('You have to be connected to create a group chat.'))
    
    247 243
                 return
    
    248 244
     
    
    249
    -        if self._ui.public_radio.get_active():
    
    250
    -            room_jid = self._ui.address_entry.get_text()
    
    251
    -        else:
    
    245
    +        room_jid = self._ui.address_entry.get_text()
    
    246
    +        if not self._ui.advanced_switch.get_active() or not room_jid:
    
    252 247
                 server = self._get_muc_service_jid()
    
    253 248
                 room_jid = f'{get_random_muc_localpart()}@{server}'
    
    254 249