Internet radio browser GUI for music/video streams from various directory services.

⌈⌋ branch:  streamtuner2


Check-in [f2592fc1e4]

Overview
Comment:minor gui tweaks
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: f2592fc1e4b7a7237938a9c1bb309bca604f2f78
User & Date: mario on 2012-01-10 03:49:37
Other Links: manifest | tags
Context
2012-01-10
03:54
shoutcast parsing patch from Vincent check-in: d9e9441d2d user: mario tags: trunk
03:49
minor gui tweaks check-in: f2592fc1e4 user: mario tags: trunk
03:47
windows patches from Vincent check-in: 4298cc4385 user: mario tags: trunk
Changes

Modified README from [ce094d1e8d] to [f33e23cc73].

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

If you are looking for a lightweight alternative, Tunapie is still
in development, and it has a working Shoutcast+Xiph reader.
http://tunapie.sourceforge.net/

Streamtuner2 CLI can also be used as proxy server for streamtuner1.
There is a wrapper available. But there was nobody yet to be found who
wanted set it up globally. (Else streamtuner1 would just require a patch
in /etc/hosts to work again.)
It's available as st1proxy.tgz and cli-mode-only.tgz from
http://milki.include-once.org/streamtuner2/ext/
Contact me for setup help. Requires a webserver with unrestrained
vhost support.









|







74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

If you are looking for a lightweight alternative, Tunapie is still
in development, and it has a working Shoutcast+Xiph reader.
http://tunapie.sourceforge.net/

Streamtuner2 CLI can also be used as proxy server for streamtuner1.
There is a wrapper available. But there was nobody yet to be found who
wanted it set up globally. (Else streamtuner1 would just require a patch
in /etc/hosts to work again.)
It's available as st1proxy.tgz and cli-mode-only.tgz from
http://milki.include-once.org/streamtuner2/ext/
Contact me for setup help. Requires a webserver with unrestrained
vhost support.


98
99
100
101
102
103
104


105
106
107
108
109
110
111

2.0.9.
- sys.path patch (less py module conflicts) from Stefan Talpalaru
- fixed main_quit signal slot, so window size saving works
- added [new] button in streamedit window
- prepared remaining print syntax for python3 (still needs 2to3 though)
- fix for https://bugzilla.redhat.com/show_bug.cgi?id=655596 array error


- 


2.0.8
- configuration files use prettified json
- fixed double quotation for %pls players and /local/file handling
- (unused) channel .shutdown function introduced (late saving)







>
>







98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

2.0.9.
- sys.path patch (less py module conflicts) from Stefan Talpalaru
- fixed main_quit signal slot, so window size saving works
- added [new] button in streamedit window
- prepared remaining print syntax for python3 (still needs 2to3 though)
- fix for https://bugzilla.redhat.com/show_bug.cgi?id=655596 array error
- transitioned glade file to gtk.Builder, just a few things broke
- made configuration window resizable
- 


2.0.8
- configuration files use prettified json
- fixed double quotation for %pls players and /local/file handling
- (unused) channel .shutdown function introduced (late saving)

Modified _pack from [1cddd82d48] to [71637bf944].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#"bsd" "osx" 
# "rpm -a noarch"


#-- meta data
VERSION=$(./version st2.py)
perl -n -i -e "if (/^[%]version/m) { print \"%version $VERSION\n\" } else { print }" _package.epm
perl -n -i -e 'if (/^(\s+a.set_version)[\d.(\")]+/m) { print "$1(\"'$VERSION'\")\n" } else { print }' st2.py


#-- linux
for pkg in "rpm" "deb DEP=deb" "slackware" "portable -s streamtuner2.png"
do
  echo \#\#\#$pkg\#\#\#





|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
#"bsd" "osx" 
# "rpm -a noarch"


#-- meta data
VERSION=$(get_version st2.py)
epm_set_version _package.epm $VERSION
perl -n -i -e 'if (/^(\s+a.set_version)[\d.(\")]+/m) { print "$1(\"'$VERSION'\")\n" } else { print }' st2.py


#-- linux
for pkg in "rpm" "deb DEP=deb" "slackware" "portable -s streamtuner2.png"
do
  echo \#\#\#$pkg\#\#\#
24
25
26
27
28
29
30
31
32
33
34
35
  epm-win32sfx -v streamtuner2 _package.epm
done


#-- src.tgz
cd ..
pax -wzf streamtuner2-$VERSION.src.tgz \
	streamtuner2/*.py streamtuner2/*.glade streamtuner2/channels/*.{py,png} \
	streamtuner2/*.png streamtuner2/*.svg streamtuner2/*.desktop \
	streamtuner2/README streamtuner2/help/* streamtuner2/contrib/* \
	streamtuner2/PKG-INFO streamtuner2/version streamtuner2/_pack streamtuner2/*.epm
# streamtuner2/scripts







|




24
25
26
27
28
29
30
31
32
33
34
35
  epm-win32sfx -v streamtuner2 _package.epm
done


#-- src.tgz
cd ..
pax -wzf streamtuner2-$VERSION.src.tgz \
	streamtuner2/*.py streamtuner2/*.xml streamtuner2/channels/*.{py,png} \
	streamtuner2/*.png streamtuner2/*.svg streamtuner2/*.desktop \
	streamtuner2/README streamtuner2/help/* streamtuner2/contrib/* \
	streamtuner2/PKG-INFO streamtuner2/version streamtuner2/_pack streamtuner2/*.epm
# streamtuner2/scripts

Modified _package.epm from [b29015b493] to [d93aee70f8].

1
2
3
4
5
6
7
8
9
%product streamtuner2 - internet radio browser
%version 2.0.8
%vendor Mario Salzer
%license
%copyright Placed into the Public Domain, 2009/2010
%readme README

%description
%description Browser for Internet Radio Stations

|







1
2
3
4
5
6
7
8
9
%product streamtuner2 - internet radio browser
%version 2.0.8.5
%vendor Mario Salzer
%license
%copyright Placed into the Public Domain, 2009/2010
%readme README

%description
%description Browser for Internet Radio Stations

Modified st2.py from [62f6e7006d] to [cdf275e0b5].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python
# encoding: UTF-8
# api: python
# type: application
# title: streamtuner2
# description: directory browser for internet radio / audio streams
# depends: gtk, pygtk, xml.dom.minidom, threading, lxml, pyquery, kronos
# version: 2.0.9
# author: mario salzer
# license: public domain
# url: http://freshmeat.net/projects/streamtuner2
# config: <env name="http_proxy" value="" description="proxy for HTTP access" />  <env name="XDG_CONFIG_HOME" description="relocates user .config subdirectory" />
# category: multimedia
# 
#







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python
# encoding: UTF-8
# api: python
# type: application
# title: streamtuner2
# description: directory browser for internet radio / audio streams
# depends: gtk, pygtk, xml.dom.minidom, threading, lxml, pyquery, kronos
# version: 2.0.8.5
# author: mario salzer
# license: public domain
# url: http://freshmeat.net/projects/streamtuner2
# config: <env name="http_proxy" value="" description="proxy for HTTP access" />  <env name="XDG_CONFIG_HOME" description="relocates user .config subdirectory" />
# category: multimedia
# 
#
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531


# auxiliary window: about dialog
class AboutStreamtuner2:
        # about us
        def __init__(self):
            a = gtk.AboutDialog()
            a.set_version("2.0.9")
            a.set_name("streamtuner2")
            a.set_license("Public Domain\n\nNo Strings Attached.\nUnrestricted distribution,\nmodification, use.")
            a.set_authors(["Mario Salzer <http://mario.include-once.org/>\n\nConcept based on streamtuner 0.99.99 from\nJean-Yves Lefort, of which some code remains\nin the Google stations plugin.\n<http://www.nongnu.org/streamtuner/>\n\nMyOggRadio plugin based on cooperation\nwith Christian Ehm. <http://ehm-edv.de/>"])
            a.set_website("http://milki.include-once.org/streamtuner2/")
            a.connect("response", lambda a, ok: ( a.hide(), a.destroy() ) )
            a.show()
            







|







517
518
519
520
521
522
523
524
525
526
527
528
529
530
531


# auxiliary window: about dialog
class AboutStreamtuner2:
        # about us
        def __init__(self):
            a = gtk.AboutDialog()
            a.set_version("2.0.8.5")
            a.set_name("streamtuner2")
            a.set_license("Public Domain\n\nNo Strings Attached.\nUnrestricted distribution,\nmodification, use.")
            a.set_authors(["Mario Salzer <http://mario.include-once.org/>\n\nConcept based on streamtuner 0.99.99 from\nJean-Yves Lefort, of which some code remains\nin the Google stations plugin.\n<http://www.nongnu.org/streamtuner/>\n\nMyOggRadio plugin based on cooperation\nwith Christian Ehm. <http://ehm-edv.de/>"])
            a.set_website("http://milki.include-once.org/streamtuner2/")
            a.connect("response", lambda a, ok: ( a.hide(), a.destroy() ) )
            a.show()
            

Modified ui.xml from [6370edef7d] to [17a9e1bc5e].

687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
      <object class="GtkFrame" id="frame1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label_xalign">0</property>
        <property name="shadow_type">none</property>
        <child>
          <object class="GtkVBox" id="vbox1233">
            <property name="height_request">333</property>
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <child>
              <object class="GtkNotebook" id="config_notebook">
                <property name="width_request">520</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>







|







687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
      <object class="GtkFrame" id="frame1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label_xalign">0</property>
        <property name="shadow_type">none</property>
        <child>
          <object class="GtkVBox" id="vbox1233">
            <property name="height_request">500</property>
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <child>
              <object class="GtkNotebook" id="config_notebook">
                <property name="width_request">520</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
                                <property name="bottom_attach">7</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label15">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="label" translatable="yes">Here %u or %pls return a direct URL to
the shoutcast link.

And %g or %m3u provide a local .m3u file
for the audio player, what's usually better.
</property>
                                <property name="wrap">True</property>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">7</property>
                                <property name="bottom_attach">8</property>







|
<
|
<
<
|







858
859
860
861
862
863
864
865

866


867
868
869
870
871
872
873
874
                                <property name="bottom_attach">7</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label15">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="label" translatable="yes">Shoutcast links are %u or %pls, parsed m3u files

are available with %g or %m3u, while %d or %srv


represent direct URLs to the streaming servers.</property>
                                <property name="wrap">True</property>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">7</property>
                                <property name="bottom_attach">8</property>
1048
1049
1050
1051
1052
1053
1054
1055










1056
1057
1058
1059
1060
1061
1062
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                              </packing>
                            </child>
                            <child>
                              <placeholder/>










                            </child>
                            <child>
                              <placeholder/>
                            </child>
                            <child>
                              <placeholder/>
                            </child>







|
>
>
>
>
>
>
>
>
>
>







1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label124124_placeholder">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="label" translatable="yes">placeholder
&lt;a href="file:///usr/share/doc/streamtuner2/help/configuration.page"&gt;see help&lt;/a&gt;</property>
                                <property name="use_markup">True</property>
                              </object>
                              <packing>
                                <property name="top_attach">7</property>
                                <property name="bottom_attach">8</property>
                              </packing>
                            </child>
                            <child>
                              <placeholder/>
                            </child>
                            <child>
                              <placeholder/>
                            </child>
1313
1314
1315
1316
1317
1318
1319

1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
                                  <object class="GtkHBox" id="hbox11">
                                    <property name="visible">True</property>
                                    <property name="can_focus">False</property>
                                    <child>
                                      <object class="GtkLabel" id="label45">
                                        <property name="visible">True</property>
                                        <property name="can_focus">False</property>

                                        <property name="xpad">11</property>
                                        <property name="label" translatable="yes">use Gtk+ theme
(needs restart) </property>
                                      </object>
                                      <packing>
                                        <property name="expand">True</property>
                                        <property name="fill">True</property>
                                        <property name="position">0</property>
                                      </packing>
                                    </child>







>

|
<







1320
1321
1322
1323
1324
1325
1326
1327
1328
1329

1330
1331
1332
1333
1334
1335
1336
                                  <object class="GtkHBox" id="hbox11">
                                    <property name="visible">True</property>
                                    <property name="can_focus">False</property>
                                    <child>
                                      <object class="GtkLabel" id="label45">
                                        <property name="visible">True</property>
                                        <property name="can_focus">False</property>
                                        <property name="tooltip_text" translatable="yes">needs restart</property>
                                        <property name="xpad">11</property>
                                        <property name="label" translatable="yes">use Gtk+ theme</property>

                                      </object>
                                      <packing>
                                        <property name="expand">True</property>
                                        <property name="fill">True</property>
                                        <property name="position">0</property>
                                      </packing>
                                    </child>
1474
1475
1476
1477
1478
1479
1480
























































1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">1</property>
                                <property name="bottom_attach">2</property>
                              </packing>
                            </child>
























































                            <child>
                              <object class="GtkEntry" id="config_dir">
                                <property name="width_request">200</property>
                                <property name="height_request">20</property>
                                <property name="visible">True</property>
                                <property name="can_focus">True</property>
                                <property name="editable">False</property>
                                <property name="invisible_char">●</property>
                                <property name="invisible_char_set">True</property>
                                <property name="primary_icon_activatable">False</property>
                                <property name="secondary_icon_activatable">False</property>
                                <property name="primary_icon_sensitive">True</property>
                                <property name="secondary_icon_sensitive">True</property>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">2</property>
                                <property name="bottom_attach">3</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label25">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="label" translatable="yes">.config dir</property>
                              </object>
                              <packing>
                                <property name="top_attach">2</property>
                                <property name="bottom_attach">3</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label26">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="xalign">0.10000000149011612</property>
                                <property name="label" translatable="yes">You can only influence this by
setting XDG_CONFIG_HOME to a
different location.</property>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">3</property>
                                <property name="bottom_attach">4</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label28">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="label" translatable="yes">HTTP proxy</property>
                              </object>
                              <packing>
                                <property name="top_attach">5</property>
                                <property name="bottom_attach">6</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label47">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="xalign">0.10000000149011612</property>
                                <property name="xpad">1</property>
                                <property name="label" translatable="yes">Start streamtuner2 with &lt;b&gt;http_proxy=&lt;/b&gt;
as environment variable. This will
get picked up by Python and urllib.</property>
                                <property name="use_markup">True</property>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">5</property>
                                <property name="bottom_attach">6</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkCheckButton" id="config_reuse_m3u">
                                <property name="label" translatable="yes">reuse temporary .m3u files</property>
                                <property name="visible">True</property>
                                <property name="can_focus">True</property>
                                <property name="receives_default">False</property>
                                <property name="use_action_appearance">False</property>
                                <property name="draw_indicator">True</property>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">7</property>
                                <property name="bottom_attach">8</property>
                              </packing>
                            </child>
                            <child>
                              <placeholder/>
                            </child>
                            <child>
                              <placeholder/>







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

















|
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<














|
|







1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
























































1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">1</property>
                                <property name="bottom_attach">2</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label47">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="xalign">0.10000000149011612</property>
                                <property name="xpad">1</property>
                                <property name="label" translatable="yes">Start streamtuner2 with &lt;b&gt;http_proxy=&lt;/b&gt;
as environment variable. This will
get picked up by Python and urllib.</property>
                                <property name="use_markup">True</property>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">9</property>
                                <property name="bottom_attach">10</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label28">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="label" translatable="yes">HTTP proxy</property>
                              </object>
                              <packing>
                                <property name="top_attach">9</property>
                                <property name="bottom_attach">10</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label26">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="xalign">0.10000000149011612</property>
                                <property name="label" translatable="yes">You can only influence this by
setting XDG_CONFIG_HOME to a
different location.</property>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">5</property>
                                <property name="bottom_attach">6</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkLabel" id="label25">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="label" translatable="yes">.config dir</property>
                              </object>
                              <packing>
                                <property name="top_attach">4</property>
                                <property name="bottom_attach">5</property>
                              </packing>
                            </child>
                            <child>
                              <object class="GtkEntry" id="config_dir">
                                <property name="width_request">200</property>
                                <property name="height_request">20</property>
                                <property name="visible">True</property>
                                <property name="can_focus">True</property>
                                <property name="editable">False</property>
                                <property name="invisible_char">●</property>
                                <property name="invisible_char_set">True</property>
                                <property name="primary_icon_activatable">False</property>
                                <property name="secondary_icon_activatable">False</property>
                                <property name="primary_icon_sensitive">True</property>
                                <property name="secondary_icon_sensitive">True</property>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">4</property>
                                <property name="bottom_attach">5</property>
























































                              </packing>
                            </child>
                            <child>
                              <object class="GtkCheckButton" id="config_reuse_m3u">
                                <property name="label" translatable="yes">reuse temporary .m3u files</property>
                                <property name="visible">True</property>
                                <property name="can_focus">True</property>
                                <property name="receives_default">False</property>
                                <property name="use_action_appearance">False</property>
                                <property name="draw_indicator">True</property>
                              </object>
                              <packing>
                                <property name="left_attach">1</property>
                                <property name="right_attach">2</property>
                                <property name="top_attach">2</property>
                                <property name="bottom_attach">3</property>
                              </packing>
                            </child>
                            <child>
                              <placeholder/>
                            </child>
                            <child>
                              <placeholder/>
1903
1904
1905
1906
1907
1908
1909

1910
1911

1912
1913
1914
1915
1916
1917
1918
          </object>
        </child>
      </object>
    </child>
  </object>
  <object class="GtkWindow" id="win_streamedit">
    <property name="can_focus">False</property>

    <property name="title" translatable="yes">inspect/edit stream data</property>
    <property name="window_position">center-on-parent</property>

    <property name="deletable">False</property>
    <property name="opacity">0.94999999999999996</property>
    <signal name="delete-event" handler="streamedit_cancel" swapped="no"/>
    <child>
      <object class="GtkTable" id="table6">
        <property name="visible">True</property>
        <property name="can_focus">False</property>







>


>







1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
          </object>
        </child>
      </object>
    </child>
  </object>
  <object class="GtkWindow" id="win_streamedit">
    <property name="can_focus">False</property>
    <property name="border_width">5</property>
    <property name="title" translatable="yes">inspect/edit stream data</property>
    <property name="window_position">center-on-parent</property>
    <property name="skip_pager_hint">True</property>
    <property name="deletable">False</property>
    <property name="opacity">0.94999999999999996</property>
    <signal name="delete-event" handler="streamedit_cancel" swapped="no"/>
    <child>
      <object class="GtkTable" id="table6">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
2292
2293
2294
2295
2296
2297
2298
2299
2300

2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313

2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
                            <child>
                              <object class="GtkMenuItem" id="menu_bookmark">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_action_appearance">False</property>
                                <property name="label" translatable="yes">bookmark</property>
                                <property name="use_underline">True</property>
                                <accelerator key="F8" signal="activate"/>
                                <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>

                                <signal name="activate" handler="bookmark" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkImageMenuItem" id="imagemenuitem_saveas">
                                <property name="label">gtk-save-as</property>
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_action_appearance">False</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                                <accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                                <accelerator key="F2" signal="activate"/>

                                <signal name="activate" handler="save_as" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkImageMenuItem" id="gtk-edit">
                                <property name="label">gtk-edit</property>
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_action_appearance">False</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                                <accelerator key="Return" signal="activate" modifiers="GDK_MOD1_MASK"/>
                                <accelerator key="space" signal="activate" modifiers="GDK_MOD1_MASK"/>
                                <accelerator key="F3" signal="activate"/>
                                <signal name="activate" handler="streamedit_open" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkMenuItem" id="extensions0">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>







<

>











<

>











|

|







2301
2302
2303
2304
2305
2306
2307

2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320

2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
                            <child>
                              <object class="GtkMenuItem" id="menu_bookmark">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_action_appearance">False</property>
                                <property name="label" translatable="yes">bookmark</property>
                                <property name="use_underline">True</property>

                                <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                                <accelerator key="F8" signal="activate"/>
                                <signal name="activate" handler="bookmark" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkImageMenuItem" id="imagemenuitem_saveas">
                                <property name="label">gtk-save-as</property>
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_action_appearance">False</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>

                                <accelerator key="F2" signal="activate"/>
                                <accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                                <signal name="activate" handler="save_as" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkImageMenuItem" id="gtk-edit">
                                <property name="label">gtk-edit</property>
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_action_appearance">False</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                                <accelerator key="F3" signal="activate"/>
                                <accelerator key="space" signal="activate" modifiers="GDK_MOD1_MASK"/>
                                <accelerator key="Return" signal="activate" modifiers="GDK_MOD1_MASK"/>
                                <signal name="activate" handler="streamedit_open" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkMenuItem" id="extensions0">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
2398
2399
2400
2401
2402
2403
2404
2405
2406

2407
2408
2409
2410
2411
2412
2413
                              <object class="GtkImageMenuItem" id="menuitem_delete">
                                <property name="label">gtk-delete</property>
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_action_appearance">False</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>
                                <accelerator key="x" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                                <accelerator key="Delete" signal="activate"/>

                                <signal name="activate" handler="delete_entry" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkImageMenuItem" id="imagemenuitem8">
                                <property name="label">gtk-find</property>
                                <property name="visible">True</property>







<

>







2407
2408
2409
2410
2411
2412
2413

2414
2415
2416
2417
2418
2419
2420
2421
2422
                              <object class="GtkImageMenuItem" id="menuitem_delete">
                                <property name="label">gtk-delete</property>
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <property name="use_action_appearance">False</property>
                                <property name="use_underline">True</property>
                                <property name="use_stock">True</property>

                                <accelerator key="Delete" signal="activate"/>
                                <accelerator key="x" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                                <signal name="activate" handler="delete_entry" swapped="no"/>
                              </object>
                            </child>
                            <child>
                              <object class="GtkImageMenuItem" id="imagemenuitem8">
                                <property name="label">gtk-find</property>
                                <property name="visible">True</property>