32 | */
33 |
34 | #ifndef _PCAP_BLUETOOTH_STRUCTS_H__
35 | #define _PCAP_BLUETOOTH_STRUCTS_H__
36 |
37 | /*
38 | * Header prepended libpcap to each bluetooth h4 frame,
39 | * fields are in network byte order
40 | */
41 | typedef struct _pcap_bluetooth_h4_header {
42 | u_int32_t direction; /* if first bit is set direction is incoming */
43 | } pcap_bluetooth_h4_header;
44 |
45 | /*
46 | * Header prepended libpcap to each bluetooth linux monitor frame,
47 | * fields are in network byte order
48 | */
49 | typedef struct _pcap_bluetooth_linux_monitor_header {
50 | u_int16_t adapter_id;
51 | u_int16_t opcode;
52 | } pcap_bluetooth_linux_monitor_header;
53 |
54 |
55 | #endif
56 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/Include/pcap/vlan.h:
--------------------------------------------------------------------------------
1 | /*-
2 | * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
3 | * The Regents of the University of California. All rights reserved.
4 | *
5 | * Redistribution and use in source and binary forms, with or without
6 | * modification, are permitted provided that the following conditions
7 | * are met:
8 | * 1. Redistributions of source code must retain the above copyright
9 | * notice, this list of conditions and the following disclaimer.
10 | * 2. Redistributions in binary form must reproduce the above copyright
11 | * notice, this list of conditions and the following disclaimer in the
12 | * documentation and/or other materials provided with the distribution.
13 | * 3. All advertising materials mentioning features or use of this software
14 | * must display the following acknowledgement:
15 | * This product includes software developed by the University of
16 | * California, Berkeley and its contributors.
17 | * 4. Neither the name of the University nor the names of its contributors
18 | * may be used to endorse or promote products derived from this software
19 | * without specific prior written permission.
20 | *
21 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 | * SUCH DAMAGE.
32 | */
33 |
34 | #ifndef lib_pcap_vlan_h
35 | #define lib_pcap_vlan_h
36 |
37 | struct vlan_tag {
38 | u_int16_t vlan_tpid; /* ETH_P_8021Q */
39 | u_int16_t vlan_tci; /* VLAN TCI */
40 | };
41 |
42 | #define VLAN_TAG_LEN 4
43 |
44 | #endif
45 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/Lib/Packet.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/Lib/Packet.lib
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/Lib/wpcap.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/Lib/wpcap.lib
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/Lib/x64/Packet.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/Lib/x64/Packet.lib
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/Lib/x64/wpcap.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/Lib/x64/wpcap.lib
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/WinPcap_docs.html:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/bc_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/bc_s.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/bdwn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/bdwn.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/closed.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/doxygen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/doxygen.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/dump.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/dump.gif
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/encoding.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/encoding.gif
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2blank.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2blank.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2doc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2doc.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2folderclosed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2folderclosed.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2folderopen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2folderopen.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2lastnode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2lastnode.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2link.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2mlastnode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2mlastnode.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2mnode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2mnode.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2node.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2node.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2plastnode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2plastnode.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2pnode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2pnode.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2splitbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2splitbar.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/ftv2vertline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/ftv2vertline.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/group__NPF.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/group__NPF.html
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/group__remote__auth__methods.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: Authentication methods supported by the RPCAP protocol
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
40 |
44 |
45 |
46 |
47 |
48 |
49 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
50 | CACE Technologies. Copyright (c) 2010-2013
51 | Riverbed Technology. All rights reserved.
52 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/group__remote__open__flags.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: Flags defined in the pcap_open() function
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
40 |
44 |
45 |
46 |
47 |
48 |
49 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
50 | CACE Technologies. Copyright (c) 2010-2013
51 | Riverbed Technology. All rights reserved.
52 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/group__remote__pri__func.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: Internal Functions
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
40 |
44 |
45 |
46 |
47 |
48 |
49 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
50 | CACE Technologies. Copyright (c) 2010-2013
51 | Riverbed Technology. All rights reserved.
52 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/group__remote__samp__methods.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: Sampling methods defined in the pcap_setsampling() function
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
40 |
44 |
45 |
46 |
47 |
48 |
49 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
50 | CACE Technologies. Copyright (c) 2010-2013
51 | Riverbed Technology. All rights reserved.
52 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/group__remote__source__ID.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: Identifiers related to the new source syntax
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
40 |
44 |
45 |
46 |
47 |
48 |
49 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
50 | CACE Technologies. Copyright (c) 2010-2013
51 | Riverbed Technology. All rights reserved.
52 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/group__remote__source__string.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: Strings related to the new source syntax
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
40 |
44 |
45 |
46 |
47 |
48 |
49 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
50 | CACE Technologies. Copyright (c) 2010-2013
51 | Riverbed Technology. All rights reserved.
52 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/group__remotefunc.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: Exported Functions
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
40 |
44 |
45 |
46 |
47 |
48 |
49 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
50 | CACE Technologies. Copyright (c) 2010-2013
51 | Riverbed Technology. All rights reserved.
52 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/incs_2pcap_8h_source.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/incs_2pcap_8h_source.html
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/internals-arch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/internals-arch.gif
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/main_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: main.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/nav_f.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/nav_f.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/nav_g.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/nav_g.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/nav_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/nav_h.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/npf-dump.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/npf-dump.gif
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/npf-ndis.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/npf-ndis.gif
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/npf-npf.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/npf-npf.gif
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/open.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/stats.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/stats.gif
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/stats_wpcap.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/stats_wpcap.gif
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/structpcap__addr.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/structpcap__addr.html
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/sync_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/sync_off.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/sync_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/sync_on.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/tab_a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/tab_a.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/tab_b.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/tab_b.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/tab_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/tab_h.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/tab_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/tab_s.png
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/tabs.css:
--------------------------------------------------------------------------------
1 | .tabs, .tabs2, .tabs3 {
2 | background-image: url('tab_b.png');
3 | width: 100%;
4 | z-index: 101;
5 | font-size: 13px;
6 | font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
7 | }
8 |
9 | .tabs2 {
10 | font-size: 10px;
11 | }
12 | .tabs3 {
13 | font-size: 9px;
14 | }
15 |
16 | .tablist {
17 | margin: 0;
18 | padding: 0;
19 | display: table;
20 | }
21 |
22 | .tablist li {
23 | float: left;
24 | display: table-cell;
25 | background-image: url('tab_b.png');
26 | line-height: 36px;
27 | list-style: none;
28 | }
29 |
30 | .tablist a {
31 | display: block;
32 | padding: 0 20px;
33 | font-weight: bold;
34 | background-image:url('tab_s.png');
35 | background-repeat:no-repeat;
36 | background-position:right;
37 | color: #283A5D;
38 | text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
39 | text-decoration: none;
40 | outline: none;
41 | }
42 |
43 | .tabs3 .tablist a {
44 | padding: 0 10px;
45 | }
46 |
47 | .tablist a:hover {
48 | background-image: url('tab_h.png');
49 | background-repeat:repeat-x;
50 | color: #fff;
51 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
52 | text-decoration: none;
53 | }
54 |
55 | .tablist li.current a {
56 | background-image: url('tab_a.png');
57 | background-repeat:repeat-x;
58 | color: #fff;
59 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
60 | }
61 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/winpcap.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/winpcap.gif
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/winpcap_small.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/WinPcap-413-173-b4/docs/html/winpcap_small.gif
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/wpcap__tut1_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: wpcap_tut1.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/wpcap__tut2_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: wpcap_tut2.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/wpcap__tut3_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: wpcap_tut3.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/wpcap__tut4_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: wpcap_tut4.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/wpcap__tut5_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: wpcap_tut5.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/wpcap__tut6_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: wpcap_tut6.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/wpcap__tut7_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: wpcap_tut7.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/wpcap__tut8_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: wpcap_tut8.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/wpcap__tut9_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: wpcap_tut9.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/WinPcap-413-173-b4/docs/html/wpcap__tut_8txt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | WinPcap: wpcap_tut.txt File Reference
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | WinPcap
21 | 4.1.3
22 |
23 | |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
45 |
46 |
50 |
51 |
52 |
53 |
54 |
55 | documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2010
56 | CACE Technologies. Copyright (c) 2010-2013
57 | Riverbed Technology. All rights reserved.
58 |
--------------------------------------------------------------------------------
/libs/openssl-1.0.2g-i386-win32.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2g-i386-win32.zip
--------------------------------------------------------------------------------
/libs/openssl-1.0.2g-win32/HashInfo.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2g-win32/HashInfo.txt
--------------------------------------------------------------------------------
/libs/openssl-1.0.2g-win32/libeay32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2g-win32/libeay32.dll
--------------------------------------------------------------------------------
/libs/openssl-1.0.2g-win32/ssleay32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2g-win32/ssleay32.dll
--------------------------------------------------------------------------------
/libs/openssl-1.0.2g-win64/HashInfo.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2g-win64/HashInfo.txt
--------------------------------------------------------------------------------
/libs/openssl-1.0.2g-win64/libeay32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2g-win64/libeay32.dll
--------------------------------------------------------------------------------
/libs/openssl-1.0.2g-win64/ssleay32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2g-win64/ssleay32.dll
--------------------------------------------------------------------------------
/libs/openssl-1.0.2g-x64_86-win64.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2g-x64_86-win64.zip
--------------------------------------------------------------------------------
/libs/openssl-1.0.2j-i386-win32.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2j-i386-win32.zip
--------------------------------------------------------------------------------
/libs/openssl-1.0.2j-win32/HashInfo.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2j-win32/HashInfo.txt
--------------------------------------------------------------------------------
/libs/openssl-1.0.2j-win32/libeay32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2j-win32/libeay32.dll
--------------------------------------------------------------------------------
/libs/openssl-1.0.2j-win32/ssleay32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2j-win32/ssleay32.dll
--------------------------------------------------------------------------------
/libs/openssl-1.0.2j-win64/HashInfo.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2j-win64/HashInfo.txt
--------------------------------------------------------------------------------
/libs/openssl-1.0.2j-win64/libeay32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2j-win64/libeay32.dll
--------------------------------------------------------------------------------
/libs/openssl-1.0.2j-win64/ssleay32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2j-win64/ssleay32.dll
--------------------------------------------------------------------------------
/libs/openssl-1.0.2j-x64_86-win64.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.0.2j-x64_86-win64.zip
--------------------------------------------------------------------------------
/libs/openssl-1.1.1b-win32/libcrypto-1_1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.1.1b-win32/libcrypto-1_1.dll
--------------------------------------------------------------------------------
/libs/openssl-1.1.1b-win32/libssl-1_1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.1.1b-win32/libssl-1_1.dll
--------------------------------------------------------------------------------
/libs/openssl-1.1.1b-win32/readme.txt:
--------------------------------------------------------------------------------
1 | -----------------------------------------------------------------------
2 | OpenSSL v1.1.1b Win32 for ICS, http://www.overbyte.be
3 | -----------------------------------------------------------------------
4 |
5 | Built with:
6 | Visual Studio Build Tools 2017
7 | The Netwide Assembler (NASM) v2.11.05
8 | Strawberry Perl v5.20.3.1
9 |
10 | Build Commands:
11 | perl configure VC-WIN32-rtt
12 | nmake
13 |
14 | Custom configuration file (.conf file at the "Configurations" folder):
15 |
16 | ## -*- mode: perl; -*-
17 | ## Personal configuration targets
18 |
19 | %targets = (
20 | "VC-WIN32-rtt" => {
21 | inherit_from => [ "VC-WIN32" ],
22 | cflags => sub{my $v=pop; $v=~ s/\/MD/\/MT/ig; return $v},
23 | lflags => "/nologo /release",
24 | },
25 | "VC-WIN64A-rtt" => {
26 | inherit_from => [ "VC-WIN64A" ],
27 | cflags => sub{my $v=pop; $v=~ s/\/MD/\/MT/ig; return $v},
28 | lflags => "/nologo /release",
29 | },
30 | );
--------------------------------------------------------------------------------
/libs/openssl-1.1.1b-win64/libcrypto-1_1-x64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.1.1b-win64/libcrypto-1_1-x64.dll
--------------------------------------------------------------------------------
/libs/openssl-1.1.1b-win64/libssl-1_1-x64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.1.1b-win64/libssl-1_1-x64.dll
--------------------------------------------------------------------------------
/libs/openssl-1.1.1b-win64/readme.txt:
--------------------------------------------------------------------------------
1 | -----------------------------------------------------------------------
2 | OpenSSL v1.1.1b Win64 for ICS, http://www.overbyte.be
3 | -----------------------------------------------------------------------
4 |
5 | Built with:
6 | Visual Studio Build Tools 2017
7 | The Netwide Assembler (NASM) v2.11.05
8 | Strawberry Perl v5.20.3.1
9 |
10 | Build Commands:
11 | perl configure VC-WIN64A-rtt
12 | nmake
13 |
14 | Custom configuration file (.conf file at the "Configurations" folder):
15 |
16 | ## -*- mode: perl; -*-
17 | ## Personal configuration targets
18 |
19 | %targets = (
20 | "VC-WIN32-rtt" => {
21 | inherit_from => [ "VC-WIN32" ],
22 | cflags => sub{my $v=pop; $v=~ s/\/MD/\/MT/ig; return $v},
23 | lflags => "/nologo /release",
24 | },
25 | "VC-WIN64A-rtt" => {
26 | inherit_from => [ "VC-WIN64A" ],
27 | cflags => sub{my $v=pop; $v=~ s/\/MD/\/MT/ig; return $v},
28 | lflags => "/nologo /release",
29 | },
30 | );
--------------------------------------------------------------------------------
/libs/openssl-1.1.1g-win32/libcrypto-1_1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.1.1g-win32/libcrypto-1_1.dll
--------------------------------------------------------------------------------
/libs/openssl-1.1.1g-win32/libssl-1_1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.1.1g-win32/libssl-1_1.dll
--------------------------------------------------------------------------------
/libs/openssl-1.1.1g-win32/readme.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.1.1g-win32/readme.txt
--------------------------------------------------------------------------------
/libs/openssl-1.1.1g-win64/libcrypto-1_1-x64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.1.1g-win64/libcrypto-1_1-x64.dll
--------------------------------------------------------------------------------
/libs/openssl-1.1.1g-win64/libssl-1_1-x64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.1.1g-win64/libssl-1_1-x64.dll
--------------------------------------------------------------------------------
/libs/openssl-1.1.1g-win64/readme.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/libs/openssl-1.1.1g-win64/readme.txt
--------------------------------------------------------------------------------
/res/Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/Logo.png
--------------------------------------------------------------------------------
/res/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/add.png
--------------------------------------------------------------------------------
/res/add_multi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/add_multi.png
--------------------------------------------------------------------------------
/res/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/back.png
--------------------------------------------------------------------------------
/res/beep.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/beep.wav
--------------------------------------------------------------------------------
/res/camera.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/camera.wav
--------------------------------------------------------------------------------
/res/capture_playback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/capture_playback.png
--------------------------------------------------------------------------------
/res/clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/clear.png
--------------------------------------------------------------------------------
/res/forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/forward.png
--------------------------------------------------------------------------------
/res/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/icon.icns
--------------------------------------------------------------------------------
/res/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/icon.ico
--------------------------------------------------------------------------------
/res/icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/icon_16.png
--------------------------------------------------------------------------------
/res/icon_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/icon_24.png
--------------------------------------------------------------------------------
/res/icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/icon_256.png
--------------------------------------------------------------------------------
/res/icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/icon_32.png
--------------------------------------------------------------------------------
/res/icon_48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/icon_48.png
--------------------------------------------------------------------------------
/res/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/info.png
--------------------------------------------------------------------------------
/res/ledgreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/ledgreen.png
--------------------------------------------------------------------------------
/res/ledred.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/ledred.png
--------------------------------------------------------------------------------
/res/mac_install_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/mac_install_bg.png
--------------------------------------------------------------------------------
/res/multi_universe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/multi_universe.png
--------------------------------------------------------------------------------
/res/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/pause.png
--------------------------------------------------------------------------------
/res/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/play.png
--------------------------------------------------------------------------------
/res/record.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/record.png
--------------------------------------------------------------------------------
/res/remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/remove.png
--------------------------------------------------------------------------------
/res/resources.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | scope.png
4 | transmit.png
5 | settings.png
6 | snapshot.png
7 | univ_view.png
8 | info.png
9 | pause.png
10 | play.png
11 | record.png
12 | back.png
13 | forward.png
14 | multi_universe.png
15 | add.png
16 | remove.png
17 | add_multi.png
18 | spin_up.png
19 | spin_down.png
20 | spin_down_dark.png
21 | spin_up_dark.png
22 | capture_playback.png
23 | clear.png
24 | ledgreen.png
25 | ledred.png
26 |
27 |
28 | Logo.png
29 |
30 |
31 | camera.wav
32 | beep.wav
33 |
34 |
35 |
--------------------------------------------------------------------------------
/res/sacnview.rc:
--------------------------------------------------------------------------------
1 | IDI_ICON1 ICON DISCARDABLE "icon.ico"
--------------------------------------------------------------------------------
/res/scope.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/scope.png
--------------------------------------------------------------------------------
/res/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/settings.png
--------------------------------------------------------------------------------
/res/snapshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/snapshot.png
--------------------------------------------------------------------------------
/res/spin_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/spin_down.png
--------------------------------------------------------------------------------
/res/spin_down_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/spin_down_dark.png
--------------------------------------------------------------------------------
/res/spin_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/spin_up.png
--------------------------------------------------------------------------------
/res/spin_up_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/spin_up_dark.png
--------------------------------------------------------------------------------
/res/transmit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/transmit.png
--------------------------------------------------------------------------------
/res/univ_view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/res/univ_view.png
--------------------------------------------------------------------------------
/src/aboutdialog.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef ABOUTDIALOG_H
17 | #define ABOUTDIALOG_H
18 |
19 | #include "streamingacn.h"
20 | #include "sacnlistener.h"
21 | #include
22 | #include
23 | #include
24 |
25 | namespace Ui {
26 | class aboutDialog;
27 | }
28 |
29 | class aboutDialog : public QDialog
30 | {
31 | Q_OBJECT
32 |
33 | public:
34 | explicit aboutDialog(QWidget *parent = Q_NULLPTR);
35 | ~aboutDialog();
36 |
37 | private slots:
38 | void updateDisplay();
39 |
40 | void on_twDiag_expanded(const QModelIndex &index);
41 | void on_twDiag_collapsed(const QModelIndex &index);
42 |
43 | void on_aboutDialog_finished(int result);
44 |
45 | private:
46 | Ui::aboutDialog *ui;
47 | QTimer *m_displayTimer;
48 |
49 | struct universeDetails
50 | {
51 | universeDetails() {}
52 |
53 | sACNManager::tListener listener;
54 | QTreeWidgetItem* treeUniverse;
55 | QTreeWidgetItem* treeMergesPerSecond;
56 | QTreeWidgetItem* treeMergesBindStatus;
57 | QTreeWidgetItem* treeMergesBindStatusUnicast;
58 | QTreeWidgetItem* treeMergesBindStatusMulticast;
59 | };
60 | QList m_universeDetails;
61 |
62 | void resizeDiagColumn();
63 | void bindStatus(QTreeWidgetItem *treeItem, sACNRxSocket::eBindStatus bindStatus);
64 | };
65 |
66 | #endif // ABOUTDIALOG_H
67 |
--------------------------------------------------------------------------------
/src/addmultidialog.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef ADDMULTIDIALOG_H
17 | #define ADDMULTIDIALOG_H
18 |
19 | #include
20 | #include "sacneffectengine.h"
21 |
22 | namespace Ui {
23 | class AddMultiDialog;
24 | }
25 |
26 | class AddMultiDialog : public QDialog
27 | {
28 | Q_OBJECT
29 |
30 | public:
31 | explicit AddMultiDialog(QWidget *parent = 0);
32 | ~AddMultiDialog();
33 |
34 | int startUniverse();
35 | int universeCount();
36 | sACNEffectEngine::FxMode mode();
37 | int startAddress();
38 | int endAddress();
39 | bool startNow();
40 | int level();
41 | qreal rate();
42 | int priority();
43 |
44 | private slots:
45 | void rangeChanged();
46 | void on_cbEffect_currentIndexChanged(int index);
47 | void on_slLevel_sliderMoved(int value);
48 | void on_slLevel_valueChanged(int value);
49 | void on_dlFadeRate_valueChanged(int value);
50 | private:
51 | Ui::AddMultiDialog *ui;
52 | void setupFxControl();
53 |
54 | };
55 |
56 | #endif // ADDMULTIDIALOG_H
57 |
--------------------------------------------------------------------------------
/src/bigdisplay.h:
--------------------------------------------------------------------------------
1 | #ifndef BIGDISPLAY_H
2 | #define BIGDISPLAY_H
3 |
4 | #include
5 | #include "consts.h"
6 |
7 | namespace Ui {
8 | class BigDisplay;
9 | }
10 |
11 | class BigDisplay : public QWidget
12 | {
13 | Q_OBJECT
14 |
15 | public:
16 | explicit BigDisplay(int universe, quint16 address, QWidget *parent = 0);
17 | ~BigDisplay();
18 |
19 | private:
20 | Ui::BigDisplay *ui;
21 |
22 | enum tabModes
23 | {
24 | tabModes_bit8,
25 | tabModes_bit16,
26 | tabModes_rgb
27 | };
28 |
29 | private slots:
30 | void dataReady(int universe, quint16 address, QPointF data);
31 |
32 | void on_tabWidget_currentChanged(int index);
33 |
34 | private:
35 | void displayLevel();
36 |
37 | quint32 m_level;
38 | };
39 |
40 | #endif // BIGDISPLAY_H
41 |
--------------------------------------------------------------------------------
/src/configureperchanpriodlg.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 |
17 | #ifndef CONFIGUREPERCHANPRIODLG_H
18 | #define CONFIGUREPERCHANPRIODLG_H
19 |
20 | #include
21 | #include
22 | #include "consts.h"
23 |
24 | namespace Ui {
25 | class ConfigurePerChanPrioDlg;
26 | }
27 |
28 | class ConfigurePerChanPrioDlg : public QDialog
29 | {
30 | Q_OBJECT
31 |
32 | public:
33 | explicit ConfigurePerChanPrioDlg(QWidget *parent = Q_NULLPTR);
34 | ~ConfigurePerChanPrioDlg();
35 | void setData(quint8 *data);
36 | quint8 *data();
37 | public slots:
38 | void on_btnSetAll_pressed();
39 | void on_btnSet_pressed();
40 | void on_widget_selectedCellsChanged(QList cells);
41 | void on_btnPresetRec_toggled(bool on);
42 | void presetButtonPressed();
43 | private:
44 | Ui::ConfigurePerChanPrioDlg *ui;
45 | quint8 m_data[MAX_DMX_ADDRESS];
46 | QList m_presets;
47 | QListm_presetButtons;
48 | QList m_selectedCells;
49 | };
50 |
51 | #endif // CONFIGUREPERCHANPRIODLG_H
52 |
--------------------------------------------------------------------------------
/src/crash_handler.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | namespace Breakpad {
5 | class CrashHandlerPrivate;
6 | class CrashHandler
7 | {
8 | public:
9 | static CrashHandler* instance();
10 | void Init(const QString& reportPath);
11 |
12 | void setReportCrashesToSystem(bool report);
13 | bool writeMinidump();
14 |
15 | private:
16 | CrashHandler();
17 | ~CrashHandler();
18 | Q_DISABLE_COPY(CrashHandler)
19 | CrashHandlerPrivate* d;
20 | };
21 | }
22 |
--------------------------------------------------------------------------------
/src/crash_test.cpp:
--------------------------------------------------------------------------------
1 | #include "crash_test.h"
2 | #include "ui_crash_test.h"
3 |
4 | #include
5 |
6 | CrashTest::CrashTest(QWidget *parent) :
7 | QDialog(parent),
8 | ui(new Ui::CrashTest)
9 | {
10 | ui->setupUi(this);
11 |
12 | m_signalMapper = new QSignalMapper(this);
13 |
14 | for (uint n = 0; n < numOfCrashMethods; n++) {
15 | QPushButton *b = new QPushButton(this);
16 | b->setText(QString("Method %1").arg(n));
17 | connect(b, SIGNAL(clicked()), m_signalMapper, SLOT(map()));
18 | m_signalMapper->setMapping(b, n);
19 |
20 | ui->verticalLayout->addWidget(b);
21 | }
22 |
23 | connect(m_signalMapper, SIGNAL(mapped(int)),
24 | this, SLOT(crashMethod(int)));
25 | }
26 |
27 | CrashTest::~CrashTest()
28 | {
29 | delete ui;
30 | }
31 |
32 | void CrashTest::crashMethod(const int id)
33 | {
34 | switch (id) {
35 | default:
36 | case 0:
37 | {
38 | abort();
39 | break;
40 | }
41 | case 1:
42 | {
43 | void* jump = nullptr;
44 | ((void(*)())jump)();
45 | break;
46 | }
47 | case 2:
48 | {
49 | *((int*) 0) = 0;
50 | }
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/src/crash_test.h:
--------------------------------------------------------------------------------
1 | #ifndef CRASHTEST_H
2 | #define CRASHTEST_H
3 |
4 | #include
5 | #include
6 |
7 | namespace Ui {
8 | class CrashTest;
9 | }
10 |
11 | class CrashTest : public QDialog
12 | {
13 | Q_OBJECT
14 |
15 | public:
16 | explicit CrashTest(QWidget *parent = 0);
17 | ~CrashTest();
18 |
19 | private slots:
20 | void crashMethod(const int id);
21 |
22 | private:
23 | const uint numOfCrashMethods = 3;
24 |
25 | Ui::CrashTest *ui;
26 | QSignalMapper *m_signalMapper;
27 | };
28 |
29 | #endif // CRASHTEST_H
30 |
--------------------------------------------------------------------------------
/src/flickerfinderinfoform.cpp:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #include "flickerfinderinfoform.h"
17 | #include "ui_flickerfinderinfoform.h"
18 | #include "consts.h"
19 | #include "preferences.h"
20 |
21 | FlickerFinderInfoForm::FlickerFinderInfoForm(QWidget *parent) :
22 | QDialog(parent),
23 | ui(new Ui::FlickerFinderInfoForm)
24 | {
25 | ui->setupUi(this);
26 | QPalette p = ui->wLower->palette();
27 | p.setColor(QPalette::Background, flickerLowerColor);
28 | ui->wLower->setPalette(p);
29 | p.setColor(QPalette::Background, flickerHigherColor);
30 | ui->wHigher->setPalette(p);
31 | p.setColor(QPalette::Background, flickerChangedColor);
32 | ui->wChange->setPalette(p);
33 | }
34 |
35 | FlickerFinderInfoForm::~FlickerFinderInfoForm()
36 | {
37 | if(ui->cbDontShowAgain->isChecked())
38 | {
39 | Preferences::getInstance()->setFlickerFinderShowInfo(false);
40 | }
41 | delete ui;
42 | }
43 |
--------------------------------------------------------------------------------
/src/flickerfinderinfoform.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef FLICKERFINDERINFOFORM_H
17 | #define FLICKERFINDERINFOFORM_H
18 |
19 | #include
20 |
21 | namespace Ui {
22 | class FlickerFinderInfoForm;
23 | }
24 |
25 | class FlickerFinderInfoForm : public QDialog
26 | {
27 | Q_OBJECT
28 |
29 | public:
30 | explicit FlickerFinderInfoForm(QWidget *parent = 0);
31 | ~FlickerFinderInfoForm();
32 |
33 | private:
34 | Ui::FlickerFinderInfoForm *ui;
35 | };
36 |
37 | #endif // FLICKERFINDERINFOFORM_H
38 |
--------------------------------------------------------------------------------
/src/grideditwidget.cpp:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #include "grideditwidget.h"
17 | #include
18 | #include "consts.h"
19 |
20 | GridEditWidget::GridEditWidget(QWidget *parent) : GridWidget(parent)
21 | {
22 | setMultiSelect(true);
23 | }
24 |
25 |
26 | void GridEditWidget::wheelEvent(QWheelEvent *event)
27 | {
28 | int numDegrees = event->delta() / 8;
29 | int numSteps = numDegrees / 15;
30 |
31 | QList> level_list;
32 |
33 | QListIteratori(selectedCells());
34 | while(i.hasNext())
35 | {
36 | int cell = i.next();
37 | int value = cellValue(cell).toInt();
38 | value += numSteps;
39 |
40 | if(!(valuem_maximum))
41 | {
42 | setCellValue(cell, QString::number(value));
43 | level_list << QPair(cell, value);
44 | }
45 | }
46 |
47 | if(level_list.count()>0)
48 | emit levelsSet(level_list);
49 |
50 | update();
51 |
52 | event->accept();
53 | }
54 |
55 | void GridEditWidget::setAllValues(int value)
56 | {
57 | for(int i=0; i<512; i++)
58 | {
59 | setCellValue(i, QString::number(value));
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/grideditwidget.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef GRIDEDITWIDGET_H
17 | #define GRIDEDITWIDGET_H
18 |
19 | #include
20 | #include
21 | #include "gridwidget.h"
22 |
23 | /**
24 | * @brief The GridEditWidget class provides a widget, based on the grid widget, which allows
25 | * editing of per channel priority values
26 | */
27 | class GridEditWidget : public GridWidget
28 | {
29 | Q_OBJECT
30 | public:
31 | GridEditWidget(QWidget *parent = Q_NULLPTR);
32 | void setMinimum(int min) {m_minimum = min;}
33 | void setMaximum(int max) {m_maximum = max;}
34 | void setAllValues(int value);
35 | signals:
36 | void levelsSet(QList> setLevels);
37 | protected:
38 | virtual void wheelEvent(QWheelEvent *event);
39 | private:
40 | int m_minimum = 0;
41 | int m_maximum = 100;
42 | };
43 |
44 | #endif // GRIDEDITWIDGET_H
45 |
--------------------------------------------------------------------------------
/src/ipc.h:
--------------------------------------------------------------------------------
1 | #ifndef IPC_H
2 | #define IPC_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include "mdimainwindow.h"
8 | #include "sacnlistener.h"
9 | #include "sacnsender.h"
10 |
11 | class IPC : public QObject
12 | {
13 | Q_OBJECT
14 | public:
15 | IPC(MDIMainWindow *w, QObject *parent = 0);
16 | virtual ~IPC();
17 | bool isListening() {return m_pipe->isListening();}
18 |
19 | private:
20 | QLocalServer *m_pipe;
21 | MDIMainWindow *main_window;
22 |
23 | private slots:
24 | void newConnection();
25 | void foreground();
26 | };
27 |
28 | class IPC_Client : public QObject
29 | {
30 | Q_OBJECT
31 | public:
32 | IPC_Client(QLocalSocket *client, QObject *parent = 0);
33 | virtual ~IPC_Client();
34 |
35 | private:
36 | QLocalSocket *m_client;
37 | QSharedPointerm_listener;
38 | sACNSentUniverse *m_sender;
39 |
40 | private slots:
41 | void readyRead();
42 | void levelsChanged();
43 |
44 | signals:
45 | void foreground();
46 | };
47 |
48 | #endif // IPC_H
49 |
--------------------------------------------------------------------------------
/src/logwindow.h:
--------------------------------------------------------------------------------
1 | #ifndef LOGWINDOW_H
2 | #define LOGWINDOW_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include "sacnlistener.h"
8 |
9 | namespace Ui {
10 | class LogWindow;
11 | }
12 |
13 | class LogWindow : public QWidget
14 | {
15 | Q_OBJECT
16 |
17 | public:
18 | explicit LogWindow(int universe, QWidget *parent = 0);
19 | ~LogWindow();
20 |
21 | private slots:
22 | void onLevelsChanged();
23 | void onSourceFound(sACNSource *source);
24 | void onSourceResume(sACNSource *source);
25 | void onSourceLost(sACNSource *source);
26 |
27 | void on_btnCopyClipboard_pressed();
28 | void on_btnClear_pressed();
29 |
30 | void on_cbLevels_clicked(bool checked);
31 | void on_cbSources_clicked(bool checked);
32 |
33 | void on_cbDisplayFormat_currentIndexChanged(int index);
34 |
35 | void on_cbLogToFile_clicked(bool checked);
36 | void on_pbLogToFile_clicked();
37 |
38 | private:
39 | Ui::LogWindow *ui;
40 |
41 | sACNManager::tListener m_listener;
42 |
43 | QFile *m_file;
44 | QTextStream *m_fileStream;
45 | void closeLogFile();
46 | bool openLogFile();
47 |
48 | void appendLogLine(QString &line);
49 |
50 | struct sTimeFormat {
51 | QString friendlyName;
52 | QString strFormat;
53 | Qt::DateFormat dateFormat;
54 | };
55 | QList lTimeFormat = {
56 | #ifndef TARGET_WINXP
57 | {tr("ISO8601 w/Ms"), QString(), Qt::ISODateWithMs},
58 | #endif
59 | {tr("ISO8601"), QString(), Qt::ISODate},
60 | {tr("US 12Hour (sACNView 1)"), "M/d/yyyy h:mm:ss AP", (Qt::DateFormat)NULL},
61 | {tr("EU 12Hour"), "d/M/yyyy h:mm:ss AP", (Qt::DateFormat)NULL},
62 | };
63 |
64 | struct sDisplayFormat {
65 | QString friendlyName;
66 | QString format;
67 | QChar seperator;
68 | bool onlyChangedAllowed;
69 | };
70 | QList lDisplayFormat = {
71 | {tr("[Level1],[Levelx]...[Level512]"), "{LEVEL}", QChar(','), false},
72 | {tr("[Chan]@[Level]"), "{CHAN}@{LEVEL} ", QChar(' '), true},
73 | };
74 |
75 | enum eLevelFormat {
76 | levelFormatByte,
77 | levelFormatPercent,
78 | levelFormatHex
79 | };
80 | };
81 |
82 |
83 |
84 | #endif // LOGWINDOW_H
85 |
--------------------------------------------------------------------------------
/src/mdimainwindow.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef MDIMAINWINDOW_H
17 | #define MDIMAINWINDOW_H
18 |
19 | #include
20 |
21 | class sACNUniverseListModel;
22 | class sACNDiscoveredSourceListModel;
23 | class sACNSourceListProxy;
24 |
25 | namespace Ui {
26 | class MDIMainWindow;
27 | }
28 |
29 | class MDIMainWindow : public QMainWindow
30 | {
31 | Q_OBJECT
32 |
33 | public:
34 | explicit MDIMainWindow(QWidget *parent = 0);
35 | ~MDIMainWindow();
36 |
37 | void showWidgetAsMdiWindow(QWidget *w);
38 |
39 | void saveMdiWindows();
40 | void restoreMdiWindows();
41 | protected slots:
42 | void on_actionScopeView_triggered(bool checked);
43 | void on_actionRecieve_triggered(bool checked);
44 | void on_actionTranmsit_triggered(bool checked);
45 | void on_actionSettings_triggered(bool checked);
46 | void on_actionSnapshot_triggered(bool checked);
47 | void on_btnUnivListBack_pressed();
48 | void on_btnUnivListForward_pressed();
49 | void on_sbUniverseList_valueChanged(int value);
50 | void universeDoubleClick(const QModelIndex &index);
51 | void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end);
52 | private slots:
53 | void on_actionAbout_triggered(bool checked);
54 |
55 | void on_actionMultiUniverse_triggered();
56 |
57 | void on_actionPCAPPlayback_triggered();
58 |
59 | void on_pbFewer_clicked();
60 |
61 | void on_pbMore_clicked();
62 | private:
63 | Ui::MDIMainWindow *ui;
64 | sACNUniverseListModel *m_model;
65 | sACNDiscoveredSourceListModel *m_modelDiscovered;
66 | sACNSourceListProxy *m_proxy;
67 | int getSelectedUniverse();
68 | };
69 |
70 | #endif // MDIMAINWINDOW_H
71 |
--------------------------------------------------------------------------------
/src/nicselectdialog.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef NICSELECTDIALOG_H
17 | #define NICSELECTDIALOG_H
18 |
19 | #include
20 | #include
21 | #include
22 |
23 | namespace Ui {
24 | class NICSelectDialog;
25 | }
26 |
27 | class NICSelectDialog : public QDialog
28 | {
29 | Q_OBJECT
30 |
31 | public:
32 | explicit NICSelectDialog(QWidget *parent = 0);
33 | ~NICSelectDialog();
34 | QNetworkInterface getSelectedInterface() const {return m_selectedInterface;};
35 | protected slots:
36 | void on_listWidget_itemSelectionChanged();
37 | void on_btnSelect_pressed();
38 | void on_btnWorkOffline_pressed();
39 | private:
40 | Ui::NICSelectDialog *ui;
41 | QNetworkInterface m_selectedInterface;
42 | QList m_interfaceList;
43 | };
44 |
45 | #endif // NICSELECTDIALOG_H
46 |
--------------------------------------------------------------------------------
/src/pcapplayback.h:
--------------------------------------------------------------------------------
1 | #ifndef PCAPPLAYBACK_H
2 | #define PCAPPLAYBACK_H
3 |
4 | #include
5 | #include "pcapplaybacksender.h"
6 |
7 | namespace Ui {
8 | class PcapPlayback;
9 | }
10 |
11 | class PcapPlayback : public QWidget
12 | {
13 | Q_OBJECT
14 |
15 | public:
16 | explicit PcapPlayback(QWidget *parent = 0);
17 | ~PcapPlayback();
18 |
19 | private slots:
20 | void on_btnOpen_clicked();
21 | void on_btnStartPause_clicked();
22 | void increaseProgress();
23 | void playbackFinished();
24 | void playbackClosed();
25 | void playbackThreadClosed();
26 | void error(QString errorMessage);
27 |
28 | void on_btnReset_clicked();
29 |
30 | private:
31 | Ui::PcapPlayback *ui;
32 |
33 | pcapplaybacksender *sender;
34 |
35 | void openThread();
36 | void closeThread();
37 | void updateUIBtns(bool clear = false);
38 | };
39 |
40 | #endif // PCAPPLAYBACK_H
41 |
--------------------------------------------------------------------------------
/src/pcapplaybacksender.h:
--------------------------------------------------------------------------------
1 | #ifndef PCAPPLAYBACKSENDER_H
2 | #define PCAPPLAYBACKSENDER_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include "sacn/sacnsocket.h"
11 |
12 | #define sacn_packet_filter "ip and udp and dst port 5568 and dst net 239.255.0.0 mask 255.255.6.0"
13 |
14 | class pcapplaybacksender : public QThread
15 | {
16 | Q_OBJECT
17 |
18 | public:
19 | explicit pcapplaybacksender(QString FileName);
20 | ~pcapplaybacksender();
21 |
22 | bool isRunning();
23 |
24 | private:
25 | bool openFile();
26 | void closeFile();
27 | void run();
28 |
29 | signals:
30 | void error(QString errorMessage);
31 | void packetSent();
32 | void sendingFinished();
33 | void sendingClosed();
34 |
35 | public slots:
36 | void play();
37 | void pause();
38 | void reset();
39 | void quit();
40 |
41 | private:
42 | QThread *m_thread;
43 | QString m_filename;
44 |
45 | typedef struct pcap pcap_t;
46 | pcap_t *m_pcap_in;
47 | QMutex m_pcap_in_Mutex;
48 | pcap_t *m_pcap_out;
49 | QMutex m_pcap_out_Mutex;
50 | bool m_running;
51 | bool m_shutdown;
52 | QTime m_pktLastTime;
53 |
54 | typedef struct pcap_pkthdr pcap_pkthdr_t;
55 | QNetworkDatagram createDatagram(pcap_t *hpcap, pcap_pkthdr_t *pkt_header, const unsigned char *pkt_data);
56 | };
57 |
58 | #endif // PCAPPLAYBACKSENDER_H
59 |
--------------------------------------------------------------------------------
/src/preferencesdialog.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef PREFERENCESDIALOG_H
17 | #define PREFERENCESDIALOG_H
18 |
19 | #include "translations/translationdialog.h"
20 | #include
21 | #include
22 |
23 | class QRadioButton;
24 |
25 |
26 | namespace Ui {
27 | class PreferencesDialog;
28 | }
29 |
30 | class PreferencesDialog : public QDialog
31 | {
32 | Q_OBJECT
33 |
34 | public:
35 | explicit PreferencesDialog(QWidget *parent = 0);
36 | ~PreferencesDialog();
37 |
38 | private slots:
39 | void on_buttonBox_accepted();
40 |
41 | private:
42 | Ui::PreferencesDialog *ui;
43 | QList m_interfaceList;
44 | QList m_interfaceButtons;
45 | TranslationDialog* m_translation;
46 |
47 | };
48 |
49 | #endif // PREFERENCESDIALOG_H
50 |
--------------------------------------------------------------------------------
/src/qt56.h:
--------------------------------------------------------------------------------
1 | #ifndef QT56_H
2 | #define QT56_H
3 |
4 | #if (QT_VERSION < QT_VERSION_CHECK(5, 8, 0))
5 | /*
6 | * Q_FALLTHROUGH()
7 | * This function was introduced in Qt 5.8.
8 | *
9 | * /src/corelib/global/qcompilerdetection.h
10 | */
11 | #if defined(__cplusplus)
12 | #if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
13 | # define Q_FALLTHROUGH() [[clang::fallthrough]]
14 | #elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
15 | # define Q_FALLTHROUGH() [[gnu::fallthrough]]
16 | #elif QT_HAS_CPP_ATTRIBUTE(fallthrough)
17 | # define Q_FALLTHROUGH() [[fallthrough]]
18 | #endif
19 | #endif
20 | #ifndef Q_FALLTHROUGH
21 | # if (defined(Q_CC_GNU) && Q_CC_GNU >= 700) && !defined(Q_CC_INTEL)
22 | # define Q_FALLTHROUGH() __attribute__((fallthrough))
23 | # else
24 | # define Q_FALLTHROUGH() (void)0
25 | #endif
26 | #endif
27 | #endif
28 |
29 |
30 | #endif // QT56_H
31 |
--------------------------------------------------------------------------------
/src/sacn/ACNShare/tock.cpp:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2015 Electronic Theatre Controls, http://www.etcconnect.com
2 | //
3 | // Permission is hereby granted, free of charge, to any person obtaining a copy
4 | // of this software and associated documentation files (the "Software"), to deal
5 | // in the Software without restriction, including without limitation the rights
6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | // copies of the Software, and to permit persons to whom the Software is
8 | // furnished to do so, subject to the following conditions:
9 | //
10 | // The above copyright notice and this permission notice shall be included in
11 | // all copies or substantial portions of the Software.
12 | //
13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | // THE SOFTWARE.
20 |
21 | /* tock.cpp
22 |
23 | Implementation of the platforms-specific part of the tock library.
24 | */
25 |
26 | #include "tock.h"
27 | #include
28 |
29 | static QElapsedTimer timer;
30 |
31 | //Initializes the tock layer. Only needs to be called once per application
32 | bool Tock_StartLib()
33 | {
34 | timer.start();
35 | return true;
36 | }
37 |
38 | //Gets a tock representing the current time
39 | tock Tock_GetTock()
40 | {
41 | return tock(timer.elapsed());
42 | }
43 |
44 | //Shuts down the tock layer.
45 | void Tock_StopLib()
46 | {
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/src/sacn/StreamCli/StreamCli.sln:
--------------------------------------------------------------------------------
1 | Microsoft Visual Studio Solution File, Format Version 9.00
2 | # Visual Studio 2005
3 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StreamCli", "StreamCli.vcproj", "{16CA4F54-D3B5-4870-8AC4-A831EE1E8157}"
4 | EndProject
5 | Global
6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
7 | Debug|Win32 = Debug|Win32
8 | Release|Win32 = Release|Win32
9 | EndGlobalSection
10 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
11 | {16CA4F54-D3B5-4870-8AC4-A831EE1E8157}.Debug|Win32.ActiveCfg = Debug|Win32
12 | {16CA4F54-D3B5-4870-8AC4-A831EE1E8157}.Debug|Win32.Build.0 = Debug|Win32
13 | {16CA4F54-D3B5-4870-8AC4-A831EE1E8157}.Release|Win32.ActiveCfg = Release|Win32
14 | {16CA4F54-D3B5-4870-8AC4-A831EE1E8157}.Release|Win32.Build.0 = Release|Win32
15 | EndGlobalSection
16 | GlobalSection(SolutionProperties) = preSolution
17 | HideSolutionNode = FALSE
18 | EndGlobalSection
19 | GlobalSection(DPCodeReviewSolutionGUID) = preSolution
20 | DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/src/sacn/StreamSrv/StreamSrv.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/sacn/StreamSrv/StreamSrv.cpp
--------------------------------------------------------------------------------
/src/sacn/StreamSrv/StreamSrv.sln:
--------------------------------------------------------------------------------
1 | Microsoft Visual Studio Solution File, Format Version 9.00
2 | # Visual Studio 2005
3 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StreamSrv", "StreamSrv.vcproj", "{88FB3D90-DD44-4B9F-A25F-20109431561C}"
4 | EndProject
5 | Global
6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
7 | Debug|Win32 = Debug|Win32
8 | Release|Win32 = Release|Win32
9 | EndGlobalSection
10 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
11 | {88FB3D90-DD44-4B9F-A25F-20109431561C}.Debug|Win32.ActiveCfg = Debug|Win32
12 | {88FB3D90-DD44-4B9F-A25F-20109431561C}.Debug|Win32.Build.0 = Debug|Win32
13 | {88FB3D90-DD44-4B9F-A25F-20109431561C}.Release|Win32.ActiveCfg = Release|Win32
14 | {88FB3D90-DD44-4B9F-A25F-20109431561C}.Release|Win32.Build.0 = Release|Win32
15 | EndGlobalSection
16 | GlobalSection(SolutionProperties) = preSolution
17 | HideSolutionNode = FALSE
18 | EndGlobalSection
19 | GlobalSection(DPCodeReviewSolutionGUID) = preSolution
20 | DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/src/sacn/e1_11.h:
--------------------------------------------------------------------------------
1 | #ifndef E1_11_H
2 | #define E1_11_H
3 |
4 | namespace E1_11 {
5 | static const unsigned int MAX_REFRESH_RATE_HZ = 44; // E1.11:2008 Table 6
6 | }
7 |
8 | #endif // E1_11_H
9 |
--------------------------------------------------------------------------------
/src/sacn/firewallcheck.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include "firewallcheck.h"
6 | #include "streamcommon.h"
7 |
8 | #ifdef Q_OS_WIN
9 | #include "netfw.h"
10 | #include "Objbase.h"
11 | #endif
12 |
13 | FwCheck::FwCheck_t FwCheck::isFWBlocked(QHostAddress ip)
14 | {
15 | FwCheck_t ret;
16 |
17 | #ifdef Q_OS_WIN
18 | qDebug() << "Firewall Starting Check";
19 | HRESULT hr = S_OK;
20 | INetFwMgr* fwMgr = NULL;
21 |
22 | VARIANT allowed;
23 | VARIANT restricted;
24 | QString filename = QDir::toNativeSeparators(QCoreApplication::applicationFilePath());
25 | BSTR bstrFilename = SysAllocString(reinterpret_cast(filename.utf16()));
26 | QString ipaddress = ip.toString();
27 | BSTR bstrIpaddress = SysAllocString(reinterpret_cast(ipaddress.utf16()));
28 |
29 | // Create instance of firewall manager
30 | hr = CoCreateInstance(
31 | __uuidof(NetFwMgr),
32 | NULL,
33 | CLSCTX_INPROC_SERVER,
34 | __uuidof(INetFwMgr),
35 | (void**)&fwMgr
36 | );
37 | if (!FAILED(hr))
38 | {
39 | // Check if port is blocked
40 | hr = fwMgr->IsPortAllowed(
41 | bstrFilename,
42 | NET_FW_IP_VERSION_V4,
43 | STREAM_IP_PORT,
44 | bstrIpaddress,
45 | NET_FW_IP_PROTOCOL_UDP,
46 | &allowed,
47 | &restricted
48 | );
49 |
50 | ret.allowed = (VARIANT_TRUE == allowed.boolVal);
51 | qDebug() << "Firewall - Allowed:" << ret.allowed;
52 | ret.restricted = (VARIANT_TRUE == restricted.boolVal);
53 | qDebug() << "Firewall - Restricted:" << ret.restricted;
54 |
55 | fwMgr->Release();
56 | } else {
57 | qDebug() << "Firewall Check Failed" << hr;
58 | }
59 |
60 | // Clean up (SysFreeString is null pointer safe)
61 | SysFreeString(bstrFilename);
62 | SysFreeString(bstrIpaddress);
63 |
64 | ret.allowed = (VARIANT_TRUE == allowed.boolVal);
65 | ret.restricted = (VARIANT_TRUE == restricted.boolVal);
66 | #else //Q_WS_WIN
67 | Q_UNUSED(ip);
68 | #endif
69 |
70 | return ret;
71 | }
72 |
--------------------------------------------------------------------------------
/src/sacn/firewallcheck.h:
--------------------------------------------------------------------------------
1 | #ifndef FIREWALLCHECK_H
2 | #define FIREWALLCHECK_H
3 |
4 | namespace FwCheck {
5 | struct FwCheck_t {
6 | bool allowed = true;
7 | bool restricted = false;
8 | };
9 | FwCheck_t isFWBlocked(QHostAddress ip);
10 | }
11 |
12 | #endif // FIREWALLCHECK_H
13 |
--------------------------------------------------------------------------------
/src/sacn/fpscounter.cpp:
--------------------------------------------------------------------------------
1 | #include "fpscounter.h"
2 | #include
3 |
4 | #define updateInterval 1000
5 |
6 | fpsCounter::fpsCounter(QObject *parent) : QObject(parent),
7 | currentFps(0),
8 | previousFps(0),
9 | lastTime(0)
10 | {
11 | QTimer *timer = new QTimer(this);
12 | connect(timer, SIGNAL(timeout()), this, SLOT(updateFPS()));
13 | timer->start(updateInterval);
14 | }
15 |
16 | void fpsCounter::updateFPS()
17 | {
18 | QMutexLocker queueLocker(&queueMutex);
19 |
20 | // We need at least two frame to calculate interval
21 | if (frameTimes.count() < 2)
22 | {
23 | // No frames, or very old single frame
24 | if (
25 | (frameTimes.count() == 0) ||
26 | ((frameTimes.count() == 1) && (QDateTime::currentMSecsSinceEpoch() > (frameTimes.back() + (updateInterval * 2))))
27 | )
28 | {
29 | previousFps = currentFps;
30 | currentFps = 0;
31 | }
32 | } else {
33 | if (lastTime == 0)
34 | lastTime = frameTimes.takeFirst();
35 |
36 | // Create list of all intervals
37 | QList intervals;
38 | while (frameTimes.count())
39 | {
40 | auto time = frameTimes.takeFirst();
41 |
42 | if (time > lastTime)
43 | {
44 | intervals << time - lastTime;
45 | lastTime = time;
46 | }
47 | }
48 |
49 | if (intervals.isEmpty()) return;
50 |
51 | // Calculate average of the intervals
52 | time_t intervalTotal = 0;
53 | for (auto interval: intervals)
54 | {
55 | intervalTotal += interval;
56 | }
57 | auto intervalAvg = intervalTotal / intervals.count();
58 |
59 | // Calculate the current FPS
60 | previousFps = currentFps;
61 | currentFps = 1000 / static_cast(intervalAvg);
62 | }
63 |
64 | // Flag if the FPS has changed
65 | newFps = ((previousFps < currentFps) | (previousFps > currentFps));
66 | }
67 |
68 | void fpsCounter::newFrame()
69 | {
70 | QMutexLocker queueLocker(&queueMutex);
71 | frameTimes.append(QDateTime::currentMSecsSinceEpoch());
72 | }
73 |
--------------------------------------------------------------------------------
/src/sacn/fpscounter.h:
--------------------------------------------------------------------------------
1 | #ifndef FPSCounter_H
2 | #define FPSCounter_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | class fpsCounter : public QObject
10 | {
11 | Q_OBJECT
12 | public:
13 | explicit fpsCounter(QObject *parent = nullptr);
14 |
15 | // Return current FPS
16 | float FPS() { newFps = false; return currentFps;}
17 |
18 | // Returns true if FPS has changed since last checked
19 | bool isNewFPS() { return newFps; }
20 |
21 | // Log new frame
22 | void newFrame();
23 |
24 | private slots:
25 | void updateFPS();
26 |
27 | private:
28 | typedef time_t quint64;
29 |
30 | float currentFps;
31 | float previousFps;
32 | bool newFps;
33 |
34 | QMutex queueMutex;
35 | QList frameTimes;
36 | time_t lastTime;
37 | };
38 |
39 | #endif // FPSCounter_H
40 |
--------------------------------------------------------------------------------
/src/sacn/sacnsocket.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef SACNSOCKET_H
17 | #define SACNSOCKET_H
18 |
19 | #include
20 | #include
21 | #include
22 |
23 | class sACNRxSocket : public QUdpSocket
24 | {
25 | Q_OBJECT
26 | public:
27 | sACNRxSocket(QNetworkInterface iface, QObject *parent = Q_NULLPTR);
28 |
29 | enum eBindStatus
30 | {
31 | BIND_UNKNOWN,
32 | BIND_OK,
33 | BIND_FAILED
34 | };
35 | struct sBindStatus
36 | {
37 | sBindStatus() {
38 | unicast = BIND_UNKNOWN;
39 | multicast = BIND_UNKNOWN;
40 | }
41 | eBindStatus unicast;
42 | eBindStatus multicast;
43 | };
44 |
45 | sBindStatus bind(quint16 universe);
46 | int getBoundUniverse() { return m_universe; }
47 | QNetworkInterface getBoundInterface() { return m_interface; }
48 |
49 | private:
50 | QNetworkInterface m_interface;
51 | int m_universe;
52 | };
53 |
54 | class sACNTxSocket : public QUdpSocket
55 | {
56 | Q_OBJECT
57 | public:
58 | sACNTxSocket(QNetworkInterface iface, QObject *parent = Q_NULLPTR);
59 |
60 | bool bind();
61 |
62 | //qint64 writeDatagram(const QNetworkDatagram &datagram);
63 | qint64 writeDatagram(const char *data, qint64 len, const QHostAddress &host, quint16 port);
64 | inline qint64 writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port)
65 | { return writeDatagram(datagram.constData(), datagram.size(), host, port); }
66 |
67 | private:
68 | QNetworkInterface m_interface;
69 | };
70 |
71 |
72 | #endif // SACNSOCKET_H
73 |
--------------------------------------------------------------------------------
/src/scopewindow.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef SCOPEWINDOW_H
17 | #define SCOPEWINDOW_H
18 |
19 | class ScopeChannel;
20 | class QTableWidgetItem;
21 |
22 | #include
23 | #include
24 | #include
25 | #include "streamingacn.h"
26 | #include "consts.h"
27 |
28 | namespace Ui {
29 | class ScopeWindow;
30 | }
31 |
32 | class ScopeWindow : public QWidget
33 | {
34 | Q_OBJECT
35 |
36 | public:
37 | explicit ScopeWindow(int universe = MIN_SACN_UNIVERSE, QWidget *parent = 0);
38 | ~ScopeWindow();
39 | private slots:
40 | void timebaseChanged(int value);
41 | void on_btnStart_pressed();
42 | void on_btnStop_pressed();
43 | void on_btnAddChannel_pressed();
44 | void on_btnRemoveChannel_pressed();
45 | void on_tableWidget_cellDoubleClicked(int row, int col);
46 | void on_tableWidget_itemChanged(QTableWidgetItem * item);
47 | void on_buttonGroup_buttonPressed(int id);
48 | void on_cbTriggerMode_currentIndexChanged(int index);
49 | void on_sbTriggerLevel_valueChanged(int value);
50 | void on_scopeWidget_stopped();
51 | private:
52 | Ui::ScopeWindow *ui;
53 | QList m_channels;
54 | QButtonGroup *m_radioGroup;
55 | QHash m_universes;
56 |
57 | enum {
58 | COL_UNIVERSE,
59 | COL_ADDRESS,
60 | COL_ENABLED,
61 | COL_COLOUR,
62 | COL_TRIGGER,
63 | COL_16BIT
64 | };
65 | int m_defaultUniverse;
66 | };
67 |
68 | #endif // SCOPEWINDOW_H
69 |
--------------------------------------------------------------------------------
/src/snapshot.h:
--------------------------------------------------------------------------------
1 | #ifndef SNAPSHOT_H
2 | #define SNAPSHOT_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include "streamingacn.h"
8 | #include "clssnapshot.h"
9 | #include "consts.h"
10 |
11 | namespace Ui {
12 | class Snapshot;
13 | }
14 |
15 | class Snapshot : public QWidget
16 | {
17 | Q_OBJECT
18 | public:
19 | explicit Snapshot(int firstUniverse = MIN_SACN_UNIVERSE, QWidget *parent = Q_NULLPTR);
20 | ~Snapshot();
21 |
22 | enum state
23 | {
24 | stSetup,
25 | stCountDown5,
26 | stCountDown4,
27 | stCountDown3,
28 | stCountDown2,
29 | stCountDown1,
30 | stReadyPlayback,
31 | stPlayback,
32 | stReplay
33 | };
34 |
35 | class PlaybackBtn : public QToolButton
36 | {
37 | public:
38 | PlaybackBtn(QWidget *parent = Q_NULLPTR);
39 |
40 | void setPlay();
41 | void setPause();
42 | };
43 |
44 | class InfoLbl : public QLabel
45 | {
46 | public:
47 | InfoLbl(QWidget *parent = Q_NULLPTR);
48 |
49 | void setText(Snapshot::state state);
50 | virtual void setText(const QString &t) { QLabel::setText(t); }
51 | };
52 |
53 | protected slots:
54 | void counterTick();
55 | void on_btnSnapshot_pressed();
56 | void on_btnPlay_pressed();
57 | void btnPlay_update(bool updateState = false);
58 | void on_btnAddRow_clicked();
59 | void on_btnRemoveRow_clicked();
60 | void senderTimedOut();
61 | void senderStopped();
62 | void senderStarted();
63 | void updateMatchIcon();
64 | protected:
65 | virtual void resizeEvent(QResizeEvent *event);
66 |
67 | private slots:
68 | void on_tableWidget_itemSelectionChanged();
69 |
70 | private:
71 | enum {
72 | COL_BUTTON,
73 | COL_UNIVERSE,
74 | COL_PRIORITY,
75 | COLCOUNT
76 | };
77 |
78 | void setState(state s);
79 | void setState(int s) { setState(static_cast(s)); }
80 | void saveSnapshot();
81 | void playSnapshot();
82 | void stopSnapshot();
83 | Ui::Snapshot *ui;
84 | QTimer *m_countdown;
85 | state m_state;
86 | QSound *m_camera, *m_beep;
87 | QList m_snapshots;
88 | quint16 m_firstUniverse;
89 | CID m_cid;
90 | };
91 |
92 |
93 |
94 | #endif // SNAPSHOT_H
95 |
--------------------------------------------------------------------------------
/src/theme/README.txt:
--------------------------------------------------------------------------------
1 | Dark Theme from https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle
--------------------------------------------------------------------------------
/src/theme/darkstyle.h:
--------------------------------------------------------------------------------
1 | /*
2 | ###############################################################################
3 | # #
4 | # The MIT License #
5 | # #
6 | # Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
7 | # >> https://github.com/Jorgen-VikingGod #
8 | # #
9 | # Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
10 | # #
11 | ###############################################################################
12 | */
13 |
14 | #ifndef _DarkStyle_HPP
15 | #define _DarkStyle_HPP
16 |
17 | #include
18 | #include
19 | #include
20 | #include
21 | #include
22 |
23 | class DarkStyle : public QProxyStyle
24 | {
25 | Q_OBJECT
26 | public:
27 | DarkStyle();
28 | explicit DarkStyle(QStyle *style);
29 |
30 | QStyle *baseStyle() const;
31 |
32 | void polish(QPalette &palette) override;
33 | void polish(QApplication *app) override;
34 | virtual void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = Q_NULLPTR) const override;
35 | virtual void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = Q_NULLPTR) const override;
36 |
37 | private:
38 | QStyle *styleBase(QStyle *style=Q_NULLPTR) const;
39 | };
40 |
41 | #endif // _DarkStyle_HPP
42 |
43 | //*****************************************************************************
44 | // END OF FILE
45 | //*****************************************************************************
46 |
--------------------------------------------------------------------------------
/src/theme/darkstyle.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | darkstyle/darkstyle.qss
4 | darkstyle/icon_close.png
5 | darkstyle/icon_undock.png
6 | darkstyle/icon_branch_closed.png
7 | darkstyle/icon_branch_end.png
8 | darkstyle/icon_branch_more.png
9 | darkstyle/icon_branch_open.png
10 | darkstyle/icon_vline.png
11 | darkstyle/icon_checkbox_checked.png
12 | darkstyle/icon_checkbox_indeterminate.png
13 | darkstyle/icon_checkbox_unchecked.png
14 | darkstyle/icon_checkbox_checked_pressed.png
15 | darkstyle/icon_checkbox_indeterminate_pressed.png
16 | darkstyle/icon_checkbox_unchecked_pressed.png
17 | darkstyle/icon_checkbox_checked_disabled.png
18 | darkstyle/icon_checkbox_indeterminate_disabled.png
19 | darkstyle/icon_checkbox_unchecked_disabled.png
20 | darkstyle/icon_radiobutton_checked.png
21 | darkstyle/icon_radiobutton_unchecked.png
22 | darkstyle/icon_radiobutton_checked_pressed.png
23 | darkstyle/icon_radiobutton_unchecked_pressed.png
24 | darkstyle/icon_radiobutton_checked_disabled.png
25 | darkstyle/icon_radiobutton_unchecked_disabled.png
26 |
27 |
28 |
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_branch_closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_branch_closed.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_branch_end.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_branch_end.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_branch_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_branch_more.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_branch_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_branch_open.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_checkbox_checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_checkbox_checked.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_checkbox_checked_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_checkbox_checked_disabled.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_checkbox_checked_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_checkbox_checked_pressed.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_checkbox_indeterminate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_checkbox_indeterminate.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_checkbox_indeterminate_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_checkbox_indeterminate_disabled.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_checkbox_indeterminate_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_checkbox_indeterminate_pressed.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_checkbox_unchecked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_checkbox_unchecked.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_checkbox_unchecked_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_checkbox_unchecked_disabled.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_checkbox_unchecked_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_checkbox_unchecked_pressed.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_close.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_radiobutton_checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_radiobutton_checked.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_radiobutton_checked_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_radiobutton_checked_disabled.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_radiobutton_checked_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_radiobutton_checked_pressed.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_radiobutton_unchecked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_radiobutton_unchecked.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_radiobutton_unchecked_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_radiobutton_unchecked_disabled.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_radiobutton_unchecked_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_radiobutton_unchecked_pressed.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_undock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_undock.png
--------------------------------------------------------------------------------
/src/theme/darkstyle/icon_vline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docsteer/sacnview/601f474120920308c6396c25f7455f48623579a3/src/theme/darkstyle/icon_vline.png
--------------------------------------------------------------------------------
/src/universedisplay.h:
--------------------------------------------------------------------------------
1 | // Copyright 2016 Tom Steer
2 | // http://www.tomsteer.net
3 | //
4 | // Licensed under the Apache License, Version 2.0 (the "License");
5 | // you may not use this file except in compliance with the License.
6 | // You may obtain a copy of the License at
7 | //
8 | // http://www.apache.org/licenses/LICENSE-2.0
9 | //
10 | // Unless required by applicable law or agreed to in writing, software
11 | // distributed under the License is distributed on an "AS IS" BASIS,
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | // See the License for the specific language governing permissions and
14 | // limitations under the License.
15 |
16 | #ifndef UNIVERSEDISPLAY_H
17 | #define UNIVERSEDISPLAY_H
18 |
19 | #include "sacnlistener.h"
20 | #include "gridwidget.h"
21 | #include "consts.h"
22 |
23 | class UniverseDisplay : public GridWidget
24 | {
25 | Q_OBJECT
26 | public:
27 | explicit UniverseDisplay(QWidget *parent = 0);
28 | virtual ~UniverseDisplay() {}
29 | bool flickerFinder() const { return m_flickerFinder; }
30 |
31 | Q_PROPERTY(bool showChannelPriority READ showChannelPriority WRITE setShowChannelPriority NOTIFY showChannelPriorityChanged)
32 | bool showChannelPriority() const { return m_showChannelPriority; }
33 | Q_SLOT void setShowChannelPriority(bool enable);
34 | Q_SIGNAL void showChannelPriorityChanged(bool enable);
35 |
36 | public slots:
37 | void setUniverse(int universe);
38 | void levelsChanged();
39 | void pause();
40 | void setFlickerFinder(bool on);
41 | private:
42 | sACNMergedSourceList m_sources;
43 | sACNManager::tListener m_listener;
44 | quint8 m_flickerFinderLevels[MAX_DMX_ADDRESS];
45 | bool m_flickerFinderHasChanged[MAX_DMX_ADDRESS];
46 | bool m_flickerFinder;
47 | bool m_showChannelPriority;
48 | };
49 |
50 | #endif // UNIVERSEDISPLAY_H
51 |
--------------------------------------------------------------------------------
/src/versioncheck.h:
--------------------------------------------------------------------------------
1 | #ifndef VERSIONCHECK_H
2 | #define VERSIONCHECK_H
3 |
4 | #include "consts.h"
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 | #include
15 | #include
16 | #include
17 | #include
18 | #include
19 | #include
20 |
21 | namespace Ui {
22 | class NewVersionDialog;
23 | }
24 |
25 | class NewVersionDialog : public QDialog
26 | {
27 | Q_OBJECT
28 | public:
29 | NewVersionDialog(QWidget *parent = Q_NULLPTR);
30 |
31 | void setNewVersionNumber(const QString &version);
32 | void setNewVersionInfo(const QString &info);
33 | void setDownloadUrl(const QString &url);
34 | private slots:
35 | void on_btnInstall_pressed();
36 | void on_btnExitInstall_pressed();
37 | void on_btnCancelDl_pressed();
38 | void progress(qint64 bytes, qint64 total);
39 | void finished();
40 | void dataReadyRead();
41 | private:
42 | Ui::NewVersionDialog *ui;
43 | QString m_dlUrl;
44 | QString m_newVersion;
45 | QNetworkAccessManager *m_manager;
46 | QNetworkReply *m_reply;
47 | QFile m_dlFile;
48 | QString m_storagePath;
49 | void doDownload(const QUrl &url);
50 | };
51 |
52 | class VersionCheck : public QObject
53 | {
54 | Q_OBJECT
55 | public:
56 | VersionCheck(QObject *parent = 0);
57 |
58 | public slots:
59 | void replyFinished (QNetworkReply *reply);
60 |
61 | private:
62 | QNetworkAccessManager *manager;
63 | };
64 |
65 | #endif // VERSIONCHECK_H
66 |
--------------------------------------------------------------------------------
/src/widgets/monitorspinbox.h:
--------------------------------------------------------------------------------
1 | #ifndef MONITORSPINBOX_H
2 | #define MONITORSPINBOX_H
3 |
4 | #include
5 | #include "sacnlistener.h"
6 |
7 | class monitorspinbox : public QAbstractSpinBox
8 | {
9 | Q_OBJECT
10 | public:
11 | monitorspinbox(QWidget* parent = nullptr);
12 |
13 | quint16 address() const { return m_address; }
14 | void setAddress(int universe, quint16 address);
15 | void setAddress(quint16 address) { setAddress(m_listener->universe(), address); }
16 |
17 | int universe() const { return m_listener->universe(); }
18 |
19 | quint8 level() const {
20 | auto level = m_listener->mergedLevels().at(m_address).level;
21 | return level > 0 ? level : 0;
22 | }
23 |
24 | signals:
25 | void dataReady(int universe, quint16 address, QPointF data);
26 |
27 | protected:
28 | void stepBy(int steps);
29 | QAbstractSpinBox::StepEnabled stepEnabled() const {return StepUpEnabled | StepDownEnabled; }
30 |
31 | QValidator::State validate(QString &input, int &pos) const;
32 | QValidator::State validate(const quint16 value) const;
33 |
34 | quint16 addressFromText(const QString &text) const;
35 | QString textFromAddress(quint16 address) const;
36 |
37 | private:
38 | sACNManager::tListener m_listener;
39 | void setupListener(int universe);
40 | quint16 m_address;
41 | };
42 |
43 | #endif // MONITORSPINBOX_H
44 |
--------------------------------------------------------------------------------
/src/xpwarning.h:
--------------------------------------------------------------------------------
1 | #ifndef XPWARNING_H
2 | #define XPWARNING_H
3 |
4 | #include
5 |
6 | /*
7 | * Returns true if Windows XP
8 | */
9 | bool XPOnlyFeature() {
10 | #ifdef TARGET_WINXP
11 | QMessageBox msgBox;
12 | msgBox.setStandardButtons(QMessageBox::Ok);
13 | msgBox.setIcon(QMessageBox::Information);
14 | msgBox.setText(QObject::tr("This binary is intended for Windows XP only\r\nThis feature is unavailable"));
15 | msgBox.exec();
16 | return true;
17 | #else
18 | return false;
19 | #endif
20 | }
21 |
22 | #endif // XPWARNING_H
23 |
--------------------------------------------------------------------------------
/translations.pri:
--------------------------------------------------------------------------------
1 | # Supported languages
2 | ## **Add new .qm to translations.qrc**
3 | ## **Update translations.cpp**
4 | LANGUAGES = en fr de es
5 |
6 | TRANSLATIONS_DIR = $${_PRO_FILE_PWD_}/translations
7 | SOURCES += \
8 | $${TRANSLATIONS_DIR}/translationdialog.cpp \
9 | $${TRANSLATIONS_DIR}/translations.cpp
10 | HEADERS += \
11 | $${TRANSLATIONS_DIR}/translationdialog.h \
12 | $${TRANSLATIONS_DIR}/translations.h
13 | FORMS += \
14 | $${TRANSLATIONS_DIR}/translationdialog.ui
15 | RESOURCES += \
16 | $${TRANSLATIONS_DIR}/translations.qrc
17 |
18 | # Create/update .ts Files
19 | qtPrepareTool(LUPDATE, lupdate)
20 | command = $$LUPDATE -no-obsolete $$shell_quote($$_PRO_FILE_)
21 | system($$command)|error("Failed to run: $$command")
22 |
23 | ## https://appbus.wordpress.com/2016/04/28/howto-translations-i18n/
24 | # Available translations
25 | defineReplace(prependAll) {
26 | for(a,$$1):result += $$2$${a}$$3
27 | return($$result)
28 | }
29 | tsroot = $$join(TARGET,,,.ts)
30 | tstarget = $$join(TARGET,,,_)
31 | TRANSLATIONS = $${TRANSLATIONS_DIR}/$$tsroot
32 | TRANSLATIONS += $$prependAll(LANGUAGES, $${TRANSLATIONS_DIR}/$$tstarget, .ts)
33 |
34 | # run LRELEASE to generate the qm files
35 | qtPrepareTool(LRELEASE, lrelease)
36 | for(tsfile, TRANSLATIONS) {
37 | command = $$LRELEASE $$shell_quote($$tsfile)
38 | system($$command)|error("Failed to run: $$command")
39 | }
40 |
--------------------------------------------------------------------------------
/translations/translationdialog.h:
--------------------------------------------------------------------------------
1 | #ifndef TRANSLATIONDIALOG_H
2 | #define TRANSLATIONDIALOG_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 |
11 | namespace Ui {
12 | class TranslationDialog;
13 | }
14 |
15 | class TranslationDialog : public QDialog
16 | {
17 | Q_OBJECT
18 |
19 | public:
20 | /* Translation dialog/handler
21 | *
22 | * @arg CurrentFilename (Optional) - Fullpath to current tranlation file
23 | * @arg VBoxLayout (Optional) - VBoxLayout to fill with checkboxes, if nullptr a dialog is created and displayed
24 | */
25 | explicit TranslationDialog(const QLocale DefaultLocale, QVBoxLayout *VBoxLayout = Q_NULLPTR, QWidget *parent = Q_NULLPTR);
26 | ~TranslationDialog();
27 |
28 | /* exec()
29 | *
30 | * Display dialog, if multiple options avaliabe, and block until close
31 | */
32 | virtual int exec();
33 |
34 | public:
35 | bool LoadTranslation(const QLocale locale);
36 | bool LoadTranslation() {
37 | return LoadTranslation(m_locate);
38 | }
39 |
40 | QLocale GetSelectedLocale();
41 |
42 | private slots:
43 | void on_buttonBox_accepted();
44 |
45 | private:
46 | Ui::TranslationDialog *ui;
47 | QButtonGroup *m_bgTranslations;
48 | QLocale m_locate;
49 | };
50 |
51 | #endif // TRANSLATIONDIALOG_H
52 |
--------------------------------------------------------------------------------
/translations/translationdialog.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | TranslationDialog
4 |
5 |
6 | Qt::ApplicationModal
7 |
8 |
9 |
10 | 0
11 | 0
12 | 200
13 | 98
14 |
15 |
16 |
17 |
18 | 0
19 | 0
20 |
21 |
22 |
23 | Qt::NoContextMenu
24 |
25 |
26 | sACNView
27 |
28 |
29 |
30 | :/Logo.png:/Logo.png
31 |
32 |
33 | -
34 |
35 |
36 |
37 | 0
38 | 0
39 |
40 |
41 |
42 | Select Language
43 |
44 |
45 |
46 |
47 | -
48 |
49 |
50 |
51 | 0
52 | 0
53 |
54 |
55 |
56 | QDialogButtonBox::Ok
57 |
58 |
59 | true
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/translations/translations.cpp:
--------------------------------------------------------------------------------
1 | #include "translations/translations.h"
2 |
3 | const QList Translations::lTranslations =
4 | {
5 | {
6 | "English",
7 | QLocale::English,
8 | QStringList{}
9 | },
10 | {
11 | "Français",
12 | QLocale::French,
13 | QStringList{"Tom Wickens", "Pilou Roy"}
14 | },
15 | {
16 | "Deutsch",
17 | QLocale::German,
18 | QStringList{"Tom Wickens"}
19 | },
20 | {
21 | "Español",
22 | QLocale::Spanish,
23 | QStringList{"Tom Wickens"}
24 | }
25 | };
26 |
--------------------------------------------------------------------------------
/translations/translations.h:
--------------------------------------------------------------------------------
1 | #ifndef TRANSLATIONS_H
2 | #define TRANSLATIONS_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | class Translations {
10 |
11 | public:
12 | struct sTranslations
13 | {
14 | QString NativeLanguageName;
15 | QLocale::Language Language;
16 | QStringList Translators;
17 | };
18 |
19 | static const QList lTranslations;
20 | };
21 |
22 |
23 | #endif // TRANSLATIONS_H
24 |
--------------------------------------------------------------------------------
/translations/translations.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | sACNView.qm
4 | sACNView_de.qm
5 | sACNView_en.qm
6 | sACNView_es.qm
7 | sACNView_fr.qm
8 |
9 |
10 |
--------------------------------------------------------------------------------
/ui/crash_test.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | CrashTest
4 |
5 |
6 | Qt::ApplicationModal
7 |
8 |
9 |
10 | 0
11 | 0
12 | 300
13 | 18
14 |
15 |
16 |
17 |
18 | 0
19 | 0
20 |
21 |
22 |
23 | sACNView Crash Tester
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/ui/nicselectdialog.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | NICSelectDialog
4 |
5 |
6 |
7 | 0
8 | 0
9 | 400
10 | 181
11 |
12 |
13 |
14 | Select Network Interface
15 |
16 |
17 | -
18 |
19 |
20 | Select a network interface on which to work with Streaming ACN.
21 |
22 |
23 | Qt::AlignCenter
24 |
25 |
26 |
27 | -
28 |
29 |
30 | -
31 |
32 |
-
33 |
34 |
35 | Qt::Horizontal
36 |
37 |
38 |
39 | 40
40 | 20
41 |
42 |
43 |
44 |
45 | -
46 |
47 |
48 | Work Offline
49 |
50 |
51 |
52 | -
53 |
54 |
55 | Select
56 |
57 |
58 | true
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------