mirror of
https://github.com/SDRSharpR/SDRSharp.git
synced 2025-12-06 03:42:01 +01:00
SDRSharp Build 1632 Full Source (VS2017)
This commit is contained in:
parent
c0fc5d4af0
commit
bce56796eb
6
Build Order.txt
Normal file
6
Build Order.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Radio
|
||||
PanView
|
||||
Common
|
||||
CollaspiblePanel
|
||||
FrequencyEdit
|
||||
SDRSharp
|
||||
95
Core Includes/BandPlan.xml
Normal file
95
Core Includes/BandPlan.xml
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- This file is brought to you courtesy of Henry Forte atouk@atouk.com -->
|
||||
<!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
|
||||
<!-- -->
|
||||
<!-- Each RangeEntry for a band must be the first line of a group, and may be the only one. -->
|
||||
<!-- -->
|
||||
<!-- If desired, each band can be broken down into individual areas with distinct coloring -->
|
||||
<!-- or operating modes. The mode entry used in the RangeEntry section will be the default -->
|
||||
<!-- mode unless a subrange overrides it. This rule applies to band color, also. -->
|
||||
<!-- -->
|
||||
<!-- Color can be defined as YRGB, where Y=transparency, R=Red, G=Green, B=Blue in 2 digit -->
|
||||
<!-- hexadecimal values, or as a colorname http://www.w3schools.com/colors/colors_names.asp -->
|
||||
<!-- Using a colorname forces Y to be FF. Colornames are not case sensitive. -->
|
||||
<!-- -->
|
||||
<!-- Step will set the Step Size in the Radio section to the desired value for each band -->
|
||||
<!-- so that Snap to Grid works properly. This is an optional value. -->
|
||||
<!-- -->
|
||||
<!-- Mode can be preset to WFM, NFM, AM, USB, LSB, CW or AM. -->
|
||||
<!-- The Mode in the Radio section of SDR# will automatically change to the selected one in -->
|
||||
<!-- either the RangeEntry, or subrange entry. This allows dividing allocation bands into -->
|
||||
<!-- designated modes of operation. Some bands with multiple allocations of operating modes -->
|
||||
<!-- make preselecting the proper mode impractical. (http://www.arrl.org/band-plan e.g. 6m). -->
|
||||
<!-- -->
|
||||
<!-- NOTE: Operating mode may not change to the one preselected in Free Tuning, until an -->
|
||||
<!-- operation that causes the Frequency Display to change readout. To override the -->
|
||||
<!-- default operating mode, uncheck "Auto update radio settings" in the Band Plan panel. -->
|
||||
<!-- -->
|
||||
<!-- Band Range labels are optional. Comments must be single line only. -->
|
||||
<!-- Some special characters will break XML parsing, so only alphanumeric are recommended. -->
|
||||
<!-- RangeEntry definitions do not have to be in order of frequency (see Air Band below). -->
|
||||
<!-- Any formatting or character errors will simply stop the Band Plan plugin from loading -->
|
||||
<!-- and are non fatal to SDR#. -->
|
||||
<!-- The order of variables in each RangeEntry is optional. -->
|
||||
<!-- -->
|
||||
<!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
|
||||
<ArrayOfRangeEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<RangeEntry minFrequency="148500" maxFrequency="283500" mode="AM" step="9000" color="900000FF">Long Wave</RangeEntry>
|
||||
<RangeEntry minFrequency="526500" maxFrequency="1606500" mode="AM" step="1000" color="900000FF">Medium Wave</RangeEntry>
|
||||
<RangeEntry minFrequency="2300000" maxFrequency="2468000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="3200000" maxFrequency="3400000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="3950000" maxFrequency="4000000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="4750000" maxFrequency="4995000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="5005000" maxFrequency="5060000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="5900000" maxFrequency="6200000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="7200000" maxFrequency="7450000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="9400000" maxFrequency="9900000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="11600000" maxFrequency="12100000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="13570000" maxFrequency="13870000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="15100000" maxFrequency="15800000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="17480000" maxFrequency="17900000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="18900000" maxFrequency="19020000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="21450000" maxFrequency="21850000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="25670000" maxFrequency="26100000" mode="AM" step="5000" color="900000FF">Shortwave Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="87500000" maxFrequency="108000000" mode="WFM" step="100000" color="red">FM Broadcast</RangeEntry>
|
||||
<RangeEntry minFrequency="108000000" maxFrequency="118000000" mode="AM" step="5000" color="900000FF">Air Band VOR/ILS</RangeEntry>
|
||||
<RangeEntry minFrequency="118000000" maxFrequency="137000000" mode="AM" step="5000" color="900000FF">Air Band Voice</RangeEntry>
|
||||
<RangeEntry minFrequency="1800000" maxFrequency="2000000" mode="CW" step="10" color="50AAAAAA">160m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="3500000" maxFrequency="3950000" mode="AM" step="10" color="red">80m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="5351500" maxFrequency="5366500" mode="USB" step="10" color="blue">60m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="7000000" maxFrequency="7200000" mode="LSB" step="10" color="green">40m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="7000000" maxFrequency="7100000" mode="CW" step="10" color="50AAAAAA"/>
|
||||
<RangeEntry minFrequency="10100000" maxFrequency="10150000" mode="USB" step="5000" color="red">30m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="14000000" maxFrequency="14350000" mode="USB" step="10" color="red">20m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="18068000" maxFrequency="18168000" mode="USB" step="10" color="red">17m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="21000000" maxFrequency="21450000" mode="USB" step="10" color="red">15m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="24890000" maxFrequency="24990000" mode="USB" step="10" color="red">12m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="26960000" maxFrequency="27410000" mode="AM" step="5000" color="red">CB</RangeEntry>
|
||||
<RangeEntry minFrequency="28000000" maxFrequency="29750000" mode="USB" step="10" color="red">10m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="50000000" maxFrequency="54000000" mode="USB" step="10" color="red">6m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="144000000" maxFrequency="148000000" mode="NFM" step="12500" color="red">2m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="144000000" maxFrequency="144100000" mode="CW" step="10" color="50AAAAAA"/>
|
||||
<RangeEntry minFrequency="144100000" maxFrequency="144200000" mode="USB" step="10" color="blue"/>
|
||||
<RangeEntry minFrequency="144200000" maxFrequency="144200000" mode="NFM" step="12500" color="red"/>
|
||||
<RangeEntry minFrequency="144200000" maxFrequency="144275000" mode="USB" step="10" color="blue"/>
|
||||
<RangeEntry minFrequency="144275000" maxFrequency="148000000" mode="NFM" step="12500" color="red"/>
|
||||
<RangeEntry minFrequency="156000000" maxFrequency="162025000" mode="NFM" step="12500" color="navy">Marine</RangeEntry>
|
||||
<RangeEntry minFrequency="222000000" maxFrequency="225000000" mode="NFM" step="12500" color="red">1.25m Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="225000000" maxFrequency="380000000" mode="NFM" step="12500" color="red">Military Air</RangeEntry>
|
||||
<RangeEntry minFrequency="240000000" maxFrequency="270000000" mode="NFM" step="12500" color="red">Mil Sat</RangeEntry>
|
||||
<RangeEntry minFrequency="420000000" maxFrequency="450000000" mode="NFM" step="12500" color="red">70cm Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="420000000" maxFrequency="432070000" mode="NFM" step="12500" color="red"/>
|
||||
<RangeEntry minFrequency="432070000" maxFrequency="432100000" mode="CW" step="10" color="50AAAAAA"/>
|
||||
<RangeEntry minFrequency="432100000" maxFrequency="450000000" mode="NFM" step="12500" color="red"/>
|
||||
<RangeEntry minFrequency="446000000" maxFrequency="446200000" mode="NFM" step="6250" color="green">PMR446</RangeEntry>
|
||||
<RangeEntry minFrequency="902000000" maxFrequency="928000000" mode="NFM" step="12500" color="red">33cm Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="902000000" maxFrequency="902075000" mode="USB" step="10" color="blue"/>
|
||||
<RangeEntry minFrequency="902075000" maxFrequency="902125000" mode="NFM" step="12500" color="red"/>
|
||||
<RangeEntry minFrequency="902125000" maxFrequency="903400000" mode="USB" step="10" color="blue"/>
|
||||
<RangeEntry minFrequency="903400000" maxFrequency="928000000" mode="NFM" step="12500" color="red"/>
|
||||
<RangeEntry minFrequency="1240000000" maxFrequency="1300000000" mode="NFM" step="12500" color="red">23cm Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="1240000000" maxFrequency="1296200000" mode="USB" step="10" color="blue"/>
|
||||
<RangeEntry minFrequency="1296200000" maxFrequency="1300000000" mode="NFM" step="12500" color="red"/>
|
||||
<RangeEntry minFrequency="2300000000" maxFrequency="2310000000" mode="NFM" step="12500" color="red">13cm Ham Band</RangeEntry>
|
||||
<RangeEntry minFrequency="2390000000" maxFrequency="2450000000" mode="NFM" step="12500" color="red">13cm Ham Band</RangeEntry>
|
||||
</ArrayOfRangeEntry>
|
||||
13
Core Includes/FrontEnds.xml
Normal file
13
Core Includes/FrontEnds.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<frontendPlugins>
|
||||
<add key="UHD / USRP" value="SDRSharp.USRP.UsrpIO,SDRSharp.USRP" />
|
||||
<add key="HackRF" value="SDRSharp.HackRF.HackRFIO,SDRSharp.HackRF" />
|
||||
<add key="RTL-SDR (USB)" value="SDRSharp.RTLSDR.RtlSdrIO,SDRSharp.RTLSDR" />
|
||||
<add key="RTL-SDR (TCP)" value="SDRSharp.RTLTCP.RtlTcpIO,SDRSharp.RTLTCP"/>
|
||||
<add key="FUNcube Dongle Pro" value="SDRSharp.FUNcube.FunCubeIO,SDRSharp.FUNcube" />
|
||||
<add key="FUNcube Dongle Pro+" value="SDRSharp.FUNcubeProPlus.FunCubeProPlusIO,SDRSharp.FUNcubeProPlus" />
|
||||
<add key="SoftRock (Si570)" value="SDRSharp.SoftRock.SoftRockIO,SDRSharp.SoftRock" />
|
||||
<add key="RFSPACE SDR-IQ (USB)" value="SDRSharp.SDRIQ.SdrIqIO,SDRSharp.SDRIQ" />
|
||||
<add key="RFSPACE Networked Radios" value="SDRSharp.SDRIP.SdrIpIO,SDRSharp.SDRIP" />
|
||||
<add key="Afedri SDR-Net" value="SDRSharp.AfedriSDRNet.AfedriSdrNetIO,SDRSharp.AfedriSDRNet" />
|
||||
</frontendPlugins>
|
||||
BIN
Core Includes/NDde.dll
Normal file
BIN
Core Includes/NDde.dll
Normal file
Binary file not shown.
22
Core Includes/Plugins.xml
Normal file
22
Core Includes/Plugins.xml
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<sharpPlugins>
|
||||
<!-- add key="AF DNR" value="SDRSharp.DNR.AFNoiseReductionPlugin,SDRSharp.DNR" /> -->
|
||||
<!-- add key="IF DNR" value="SDRSharp.DNR.IFNoiseReductionPlugin,SDRSharp.DNR" /> -->
|
||||
<!-- add key="Baseband Noise Blanker" value="SDRSharp.NoiseBlanker.BasebandNoiseBlankerPlugin,SDRSharp.NoiseBlanker" /> -->
|
||||
<!-- add key="Demodulator Noise Blanker" value="SDRSharp.NoiseBlanker.DemodulatorNoiseBlankerPlugin,SDRSharp.NoiseBlanker" /> -->
|
||||
<add key="Wave Recorder" value="SDRSharp.WavRecorder.WavRecorderPlugin,SDRSharp.WavRecorder" />
|
||||
<add key="Zoom FFT" value="SDRSharp.ZoomFFT.ZoomFFTPlugin,SDRSharp.ZoomFFT" />
|
||||
<!-- add key="Band Plan" value="SDRSharp.BandPlan.BandPlanPlugin,SDRSharp.BandPlan" /> -->
|
||||
<add key="Frequency Manager" value="SDRSharp.FrequencyManager.FrequencyManagerPlugin,SDRSharp.FrequencyManager" />
|
||||
<add key="Signal Diagnostics" value="SDRSharp.Diagnostics.DiagnosticsPlugin,SDRSharp.Diagnostics" />
|
||||
<!-- add key="DDE Tracking Client" value="SDRSharp.DDETracker.DdeTrackingPlugin,SDRSharp.DDETracker" /> -->
|
||||
<add key="Trunker" value="SDRSharp.Trunker.TrunkerPlugin,SDRSharp.Trunker" />
|
||||
<add key="DSD" value="SDRSharp.DSD.DSDPlugin,SDRSharp.DSD" />
|
||||
<add key="Frequency Scanner" value="SDRSharp.FrequencyScanner.FrequencyScannerPlugin,SDRSharp.FrequencyScanner" />
|
||||
<!-- add key="TimeShift" value="SDRSharp.TimeShift.TimeShiftPlugin,SDRSharp.TimeShift" /> -->
|
||||
<!-- add key="TV" value="SDRSharp.TV.TVPlugin,SDRSharp.TV" /> -->
|
||||
<!-- add key="DCSDecoder" value="SDRSharp.DCSDecoder.DCSDecoderPlugin,SDRSharp.DCSDecoder" /> -->
|
||||
<!-- add key="DAP" value="SDRSharp.DAP.DAPPlugin,SDRSharp.DAP" /> -->
|
||||
<add key="CTCSSDecoder" value="SDRSharp.CTCSSDecoder.CTCSSDecoderPlugin,SDRSharp.CTCSSDecoder" />
|
||||
<!-- add key="JarodCalc" value="SDRSharp.JarodCalc.JarodCalcPlugin,SDRSharp.JarodCalc" /> -->
|
||||
</sharpPlugins>
|
||||
BIN
Core Includes/PortAudio.dll
Normal file
BIN
Core Includes/PortAudio.dll
Normal file
Binary file not shown.
BIN
Core Includes/SDRSharp.AfedriSDRNet.dll
Normal file
BIN
Core Includes/SDRSharp.AfedriSDRNet.dll
Normal file
Binary file not shown.
BIN
Core Includes/SDRSharp.FUNcube.dll
Normal file
BIN
Core Includes/SDRSharp.FUNcube.dll
Normal file
Binary file not shown.
BIN
Core Includes/SDRSharp.FUNcubeProPlus.dll
Normal file
BIN
Core Includes/SDRSharp.FUNcubeProPlus.dll
Normal file
Binary file not shown.
BIN
Core Includes/SDRSharp.HackRF.dll
Normal file
BIN
Core Includes/SDRSharp.HackRF.dll
Normal file
Binary file not shown.
BIN
Core Includes/SDRSharp.RTLSDR.dll
Normal file
BIN
Core Includes/SDRSharp.RTLSDR.dll
Normal file
Binary file not shown.
BIN
Core Includes/SDRSharp.RTLTCP.dll
Normal file
BIN
Core Includes/SDRSharp.RTLTCP.dll
Normal file
Binary file not shown.
BIN
Core Includes/SDRSharp.SDRIP.dll
Normal file
BIN
Core Includes/SDRSharp.SDRIP.dll
Normal file
Binary file not shown.
BIN
Core Includes/SDRSharp.SDRIQ.dll
Normal file
BIN
Core Includes/SDRSharp.SDRIQ.dll
Normal file
Binary file not shown.
BIN
Core Includes/SDRSharp.SoftRock.dll
Normal file
BIN
Core Includes/SDRSharp.SoftRock.dll
Normal file
Binary file not shown.
BIN
Core Includes/SRDLL.dll
Normal file
BIN
Core Includes/SRDLL.dll
Normal file
Binary file not shown.
BIN
Core Includes/airspy.dll
Normal file
BIN
Core Includes/airspy.dll
Normal file
Binary file not shown.
BIN
Core Includes/airspyhf.dll
Normal file
BIN
Core Includes/airspyhf.dll
Normal file
Binary file not shown.
2
Core Includes/digital_frequencies.xml
Normal file
2
Core Includes/digital_frequencies.xml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0"?>
|
||||
<ArrayOfDigitalEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
|
||||
57
Core Includes/frequencies.xml
Normal file
57
Core Includes/frequencies.xml
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
<?xml version="1.0"?>
|
||||
<ArrayOfMemoryEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<MemoryEntry>
|
||||
<IsFavourite>true</IsFavourite>
|
||||
<Name>Santa Ana</Name>
|
||||
<GroupName>CHP</GroupName>
|
||||
<Frequency>39440000</Frequency>
|
||||
<DetectorType>WFM</DetectorType>
|
||||
<Shift>0</Shift>
|
||||
<FilterBandwidth>10</FilterBandwidth>
|
||||
</MemoryEntry>
|
||||
<MemoryEntry>
|
||||
<IsFavourite>true</IsFavourite>
|
||||
<Name>NPR Radio</Name>
|
||||
<GroupName>FM Radio</GroupName>
|
||||
<Frequency>89300000</Frequency>
|
||||
<DetectorType>WFM</DetectorType>
|
||||
<Shift>0</Shift>
|
||||
<FilterBandwidth>75330</FilterBandwidth>
|
||||
</MemoryEntry>
|
||||
<MemoryEntry>
|
||||
<IsFavourite>true</IsFavourite>
|
||||
<Name>KFI AM</Name>
|
||||
<GroupName>Misc</GroupName>
|
||||
<Frequency>115840000</Frequency>
|
||||
<DetectorType>AM</DetectorType>
|
||||
<Shift>0</Shift>
|
||||
<FilterBandwidth>11130</FilterBandwidth>
|
||||
</MemoryEntry>
|
||||
<MemoryEntry>
|
||||
<IsFavourite>true</IsFavourite>
|
||||
<Name>Air</Name>
|
||||
<GroupName>CHP</GroupName>
|
||||
<Frequency>122850000</Frequency>
|
||||
<DetectorType>AM</DetectorType>
|
||||
<Shift>0</Shift>
|
||||
<FilterBandwidth>4240</FilterBandwidth>
|
||||
</MemoryEntry>
|
||||
<MemoryEntry>
|
||||
<IsFavourite>true</IsFavourite>
|
||||
<Name>NOAA - Oxnard</Name>
|
||||
<GroupName>Weather</GroupName>
|
||||
<Frequency>162550000</Frequency>
|
||||
<DetectorType>NFM</DetectorType>
|
||||
<Shift>0</Shift>
|
||||
<FilterBandwidth>24390</FilterBandwidth>
|
||||
</MemoryEntry>
|
||||
<MemoryEntry>
|
||||
<IsFavourite>true</IsFavourite>
|
||||
<Name>Conv. Center Security</Name>
|
||||
<GroupName>Anaheim</GroupName>
|
||||
<Frequency>453225000</Frequency>
|
||||
<DetectorType>NFM</DetectorType>
|
||||
<Shift>0</Shift>
|
||||
<FilterBandwidth>5000</FilterBandwidth>
|
||||
</MemoryEntry>
|
||||
</ArrayOfMemoryEntry>
|
||||
BIN
Core Includes/hackrf.dll
Normal file
BIN
Core Includes/hackrf.dll
Normal file
Binary file not shown.
17
Core Includes/install-rtlsdr.bat
Normal file
17
Core Includes/install-rtlsdr.bat
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
@echo off
|
||||
|
||||
mkdir tmp
|
||||
|
||||
echo Downloading RTLSDR Driver
|
||||
httpget http://osmocom.org/attachments/download/2242/RelWithDebInfo.zip tmp\RelWithDebInfo.zip
|
||||
|
||||
echo Downloading Zadig
|
||||
set zadig_exe=zadig.exe
|
||||
ver | findstr /l "5.1." > NUL
|
||||
if %errorlevel% equ 0 set zadig_exe=zadig_xp.exe
|
||||
httpget http://zadig.akeo.ie/downloads/%zadig_exe% %zadig_exe%
|
||||
|
||||
unzip -o tmp\RelWithDebInfo.zip -d tmp
|
||||
move tmp\rtl-sdr-release\x32\rtlsdr.dll .
|
||||
|
||||
rmdir tmp /S /Q
|
||||
2
Core Includes/inverted_frequencies.xml
Normal file
2
Core Includes/inverted_frequencies.xml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0"?>
|
||||
<ArrayOfInvertorEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
|
||||
BIN
Core Includes/libusb-1.0.dll
Normal file
BIN
Core Includes/libusb-1.0.dll
Normal file
Binary file not shown.
BIN
Core Includes/modesparser.dll
Normal file
BIN
Core Includes/modesparser.dll
Normal file
Binary file not shown.
BIN
Core Includes/msvcr100.dll
Normal file
BIN
Core Includes/msvcr100.dll
Normal file
Binary file not shown.
BIN
Core Includes/pthreadVCE2.dll
Normal file
BIN
Core Includes/pthreadVCE2.dll
Normal file
Binary file not shown.
BIN
Core Includes/rtlsdr.dll
Normal file
BIN
Core Includes/rtlsdr.dll
Normal file
Binary file not shown.
BIN
Core Includes/sdriq.dll
Normal file
BIN
Core Includes/sdriq.dll
Normal file
Binary file not shown.
BIN
Core Includes/shark.dll
Normal file
BIN
Core Includes/shark.dll
Normal file
Binary file not shown.
15
SDRSharp.CollapsiblePanel/Properties/AssemblyInfo.cs
Normal file
15
SDRSharp.CollapsiblePanel/Properties/AssemblyInfo.cs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Security.Permissions;
|
||||
|
||||
[assembly: CompilationRelaxations(8)]
|
||||
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
|
||||
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
|
||||
[assembly: AssemblyTitle("Collapsible Panel")]
|
||||
[assembly: AssemblyDescription("Collapsible Panel Component")]
|
||||
[assembly: AssemblyProduct("SDR#")]
|
||||
[assembly: AssemblyCopyright("Copyright © Youssef TOUIL 2012")]
|
||||
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
using System.CodeDom.Compiler;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace SDRSharp.CollapsiblePanel.Properties
|
||||
{
|
||||
[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[DebuggerNonUserCode]
|
||||
[CompilerGenerated]
|
||||
internal class Resources
|
||||
{
|
||||
private static ResourceManager resourceMan;
|
||||
|
||||
private static CultureInfo resourceCulture;
|
||||
|
||||
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
||||
internal static ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Resources.resourceMan == null)
|
||||
{
|
||||
Resources.resourceMan = new ResourceManager("SDRSharp.CollapsiblePanel.Properties.Resources", typeof(Resources).Assembly);
|
||||
}
|
||||
return Resources.resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
||||
internal static CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return Resources.resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
Resources.resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
internal static Bitmap CollapsedIcon
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Bitmap)Resources.ResourceManager.GetObject("CollapsedIcon", Resources.resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
internal static string ExpandedHeigth
|
||||
{
|
||||
get
|
||||
{
|
||||
return Resources.ResourceManager.GetString("ExpandedHeigth", Resources.resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
internal static Bitmap ExpandedIcon
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Bitmap)Resources.ResourceManager.GetObject("ExpandedIcon", Resources.resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
internal static Bitmap titleBackground
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Bitmap)Resources.ResourceManager.GetObject("titleBackground", Resources.resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="ExpandedIcon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAMCAYAAAC9QufkAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAN
|
||||
1gAADdYBkG95nAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACdSURBVChTlZGx
|
||||
DcIwEEUtalZIBmEYZiGLULMAtUsGYICQNi0VEpL5D9nWRbYs50tP1t29X9mFELxYxGsH+J7yKGaxJ/gj
|
||||
ZZjEV/QED9+l8kE8RE/w8HMZTmIVrXDH+3dsGa6iFe7Zt0U4iqeohT337Nti4izewoaZ/cbdDIa7sGEu
|
||||
vGIRGUT6e17mwisWhov4xLd2b5b5y1t8K/fgfhf9ch0fZsVEAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="titleBackground" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBD
|
||||
AAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0M
|
||||
DgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
|
||||
DAwMDAwMDAwMDAwMDAz/wAARCAARALkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF
|
||||
BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAk
|
||||
M2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
|
||||
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
|
||||
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA
|
||||
AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5
|
||||
OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq
|
||||
srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDz
|
||||
f/hd6/3ovzH+FH/C71/vRfmP8K+Sv+F4v/z0lo/4Xi//AD0lrp9mZ859a/8AC71/vRfmP8KP+F3r/ei/
|
||||
Mf4V8lf8Lxf/AJ6S0f8AC8X/AOektHsw5z61/wCF3r/ei/Mf4Uf8LvX+9F+Y/wAK+Sv+F4v/AM9JaP8A
|
||||
heL/APPSWj2Yc59a/wDC71/vRfmP8KP+F3r/AHovzH+FfJX/AAvF/wDnpLR/wvF/+ektHsw5z61/4Xev
|
||||
96L8x/hR/wALvX+9F+Y/wr5K/wCF4v8A89JaP+F4v/z0lo9mHOfWv/C71/vRfmP8KP8Ahd6/3ovzH+Ff
|
||||
JX/C8X/56S0f8Lxf/npLR7MOc+tf+F3r/ei/Mf4Uf8LvX+9F+Y/wr5K/4Xi//PSWj/heL/8APSWj2Yc5
|
||||
9a/8LvX+9F+Y/wAKP+F3r/ei/Mf4V8lf8Lxf/npLR/wvF/8AnpLR7MOc+tf+F3r/AHovzH+FH/C71/vR
|
||||
fmP8K+Sv+F4v/wA9JaP+F4v/AM9JaPZhzn1r/wALvX+9F+Y/wo/4Xev96L8x/hXyV/wvF/8AnpLR/wAL
|
||||
xf8A56S0ezDnPrX/AIXev96L8x/hR/wu9f70X5j/AAr5K/4Xi/8Az0lo/wCF4v8A89JaPZhzn1r/AMLv
|
||||
X+9F+Y/wo/4Xev8Aei/Mf4V8lf8AC8X/AOektH/C8X/56S0ezDnPJKKKK5jQKKKKACiiigAooooAKKKK
|
||||
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/2Q==
|
||||
</value>
|
||||
</data>
|
||||
<data name="ExpandedHeigth" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="CollapsedIcon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAPCAYAAADQ4S5JAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAN
|
||||
1gAADdYBkG95nAAAAHRJREFUKFNj+P///z4GBgaZAwcOMBCDQRoeA/F9IG7CpgAdgzSAFIPAbyA+BsSW
|
||||
2BTCMLIGGHgNxPOAzuQhVgMMXALiWFI0gMBnIN6GHCiENMAASA04UIjVAAKgQFlFdRtI8gPRoUR0PBAd
|
||||
0ySnJRJS6wEGAICmKADl6upOAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="ExpandedIcon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAMCAYAAAC9QufkAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAN
|
||||
1gAADdYBkG95nAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACdSURBVChTlZGx
|
||||
DcIwEEUtalZIBmEYZiGLULMAtUsGYICQNi0VEpL5D9nWRbYs50tP1t29X9mFELxYxGsH+J7yKGaxJ/gj
|
||||
ZZjEV/QED9+l8kE8RE/w8HMZTmIVrXDH+3dsGa6iFe7Zt0U4iqeohT337Nti4izewoaZ/cbdDIa7sGEu
|
||||
vGIRGUT6e17mwisWhov4xLd2b5b5y1t8K/fgfhf9ch0fZsVEAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="titleBackground" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBD
|
||||
AAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0M
|
||||
DgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
|
||||
DAwMDAwMDAwMDAwMDAz/wAARCAARALkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF
|
||||
BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAk
|
||||
M2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
|
||||
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
|
||||
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA
|
||||
AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5
|
||||
OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq
|
||||
srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDz
|
||||
f/hd6/3ovzH+FH/C71/vRfmP8K+Sv+F4v/z0lo/4Xi//AD0lrp9mZ859a/8AC71/vRfmP8KP+F3r/ei/
|
||||
Mf4V8lf8Lxf/AJ6S0f8AC8X/AOektHsw5z61/wCF3r/ei/Mf4Uf8LvX+9F+Y/wAK+Sv+F4v/AM9JaP8A
|
||||
heL/APPSWj2Yc59a/wDC71/vRfmP8KP+F3r/AHovzH+FfJX/AAvF/wDnpLR/wvF/+ektHsw5z61/4Xev
|
||||
96L8x/hR/wALvX+9F+Y/wr5K/wCF4v8A89JaP+F4v/z0lo9mHOfWv/C71/vRfmP8KP8Ahd6/3ovzH+Ff
|
||||
JX/C8X/56S0f8Lxf/npLR7MOc+tf+F3r/ei/Mf4Uf8LvX+9F+Y/wr5K/4Xi//PSWj/heL/8APSWj2Yc5
|
||||
9a/8LvX+9F+Y/wAKP+F3r/ei/Mf4V8lf8Lxf/npLR/wvF/8AnpLR7MOc+tf+F3r/AHovzH+FH/C71/vR
|
||||
fmP8K+Sv+F4v/wA9JaP+F4v/AM9JaPZhzn1r/wALvX+9F+Y/wo/4Xev96L8x/hXyV/wvF/8AnpLR/wAL
|
||||
xf8A56S0ezDnPrX/AIXev96L8x/hR/wu9f70X5j/AAr5K/4Xi/8Az0lo/wCF4v8A89JaPZhzn1r/AMLv
|
||||
X+9F+Y/wo/4Xev8Aei/Mf4V8lf8AC8X/AOektH/C8X/56S0ezDnPJKKKK5jQKKKKACiiigAooooAKKKK
|
||||
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/2Q==
|
||||
</value>
|
||||
</data>
|
||||
<data name="ExpandedHeigth" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="CollapsedIcon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAPCAYAAADQ4S5JAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAN
|
||||
1gAADdYBkG95nAAAAHRJREFUKFNj+P///z4GBgaZAwcOMBCDQRoeA/F9IG7CpgAdgzSAFIPAbyA+BsSW
|
||||
2BTCMLIGGHgNxPOAzuQhVgMMXALiWFI0gMBnIN6GHCiENMAASA04UIjVAAKgQFlFdRtI8gPRoUR0PBAd
|
||||
0ySnJRJS6wEGAICmKADl6upOAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
65
SDRSharp.CollapsiblePanel/SDRSharp.CollapsiblePanel.csproj
Normal file
65
SDRSharp.CollapsiblePanel/SDRSharp.CollapsiblePanel.csproj
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{A5EFB9F9-6F99-4EBD-B5C9-3F68EFEFC823}</ProjectGuid>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<OutputType>Library</OutputType>
|
||||
<AssemblyName>SDRSharp.CollapsiblePanel</AssemblyName>
|
||||
<TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
|
||||
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System">
|
||||
<HintPath>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms">
|
||||
<HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing">
|
||||
<HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Design">
|
||||
<HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Design\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Design.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SDRSharp.CollapsiblePanel.Properties\Resources.cs" />
|
||||
<Compile Include="SDRSharp.CollapsiblePanel\CollapsiblePanel.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SDRSharp.CollapsiblePanel\CollapsiblePanelDesigner.cs" />
|
||||
<Compile Include="SDRSharp.CollapsiblePanel\ContentPanel.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SDRSharp.CollapsiblePanel\ContentPanelDesigner.cs" />
|
||||
<Compile Include="SDRSharp.CollapsiblePanel\PanelStateOptions.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="SDRSharp.CollapsiblePanel.Properties\Resources.resx">
|
||||
<DependentUpon>Resources.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="SDRSharp.CollapsiblePanel\CollapsiblePanel.resx">
|
||||
<DependentUpon>CollapsiblePanel.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
25
SDRSharp.CollapsiblePanel/SDRSharp.CollapsiblePanel.sln
Normal file
25
SDRSharp.CollapsiblePanel/SDRSharp.CollapsiblePanel.sln
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27428.2015
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SDRSharp.CollapsiblePanel", "SDRSharp.CollapsiblePanel.csproj", "{A5EFB9F9-6F99-4EBD-B5C9-3F68EFEFC823}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A5EFB9F9-6F99-4EBD-B5C9-3F68EFEFC823}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A5EFB9F9-6F99-4EBD-B5C9-3F68EFEFC823}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A5EFB9F9-6F99-4EBD-B5C9-3F68EFEFC823}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A5EFB9F9-6F99-4EBD-B5C9-3F68EFEFC823}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {AF25AAAB-B38C-48F7-A7D7-0D815C0D1E47}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
@ -0,0 +1,271 @@
|
|||
using SDRSharp.CollapsiblePanel.Properties;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace SDRSharp.CollapsiblePanel
|
||||
{
|
||||
[DesignTimeVisible(true)]
|
||||
[Category("Containers")]
|
||||
[Description("Visual Studio like Collapsible Panel")]
|
||||
[Designer(typeof(CollapsiblePanelDesigner))]
|
||||
public class CollapsiblePanel : UserControl
|
||||
{
|
||||
private bool _autoHeight;
|
||||
|
||||
private PanelStateOptions _panelState = PanelStateOptions.Expanded;
|
||||
|
||||
private CollapsiblePanel _nextPanel;
|
||||
|
||||
private IContainer components;
|
||||
|
||||
private Panel titlePanel;
|
||||
|
||||
private PictureBox togglingImage;
|
||||
|
||||
private ImageList collapsiblePanelImageList;
|
||||
|
||||
private Label lblPanelTitle;
|
||||
|
||||
private ContentPanel contentPanel;
|
||||
|
||||
private TableLayoutPanel titleTableLayoutPanel;
|
||||
|
||||
[Description("Gets or sets panel title")]
|
||||
[DisplayName("Panel Title")]
|
||||
[Category("Collapsible Panel")]
|
||||
public string PanelTitle
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.lblPanelTitle.Text;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.lblPanelTitle.Text = value;
|
||||
}
|
||||
}
|
||||
|
||||
[DefaultValue(typeof(PanelStateOptions), "Expanded")]
|
||||
[Description("Gets or sets current panel state")]
|
||||
[DisplayName("Panel State")]
|
||||
[Category("Collapsible Panel")]
|
||||
public PanelStateOptions PanelState
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._panelState;
|
||||
}
|
||||
set
|
||||
{
|
||||
this._panelState = value;
|
||||
this.UpdateState();
|
||||
}
|
||||
}
|
||||
|
||||
[Category("Collapsible Panel")]
|
||||
[Description("Gets or sets the panel to be located beneath this panel")]
|
||||
public CollapsiblePanel NextPanel
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._nextPanel;
|
||||
}
|
||||
set
|
||||
{
|
||||
this._nextPanel = value;
|
||||
this.MoveNextPanel();
|
||||
}
|
||||
}
|
||||
|
||||
[Category("Appearance")]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
||||
public ContentPanel Content
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.contentPanel;
|
||||
}
|
||||
}
|
||||
|
||||
public bool AutoHeight
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._autoHeight;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (this._autoHeight != value)
|
||||
{
|
||||
this._autoHeight = value;
|
||||
this.UpdateState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public CollapsiblePanel()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
base.Load += this.CollapsiblePanel_Load;
|
||||
base.SizeChanged += this.CollapsiblePanel_SizeChanged;
|
||||
base.LocationChanged += this.CollapsiblePanel_LocationChanged;
|
||||
}
|
||||
|
||||
private void CollapsiblePanel_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (this._panelState == PanelStateOptions.Collapsed)
|
||||
{
|
||||
this.togglingImage.Image = Resources.CollapsedIcon;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.togglingImage.Image = Resources.ExpandedIcon;
|
||||
}
|
||||
}
|
||||
|
||||
private void CollapsiblePanel_SizeChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.MoveNextPanel();
|
||||
}
|
||||
|
||||
private void CollapsiblePanel_LocationChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.MoveNextPanel();
|
||||
}
|
||||
|
||||
private void ToggleState(object sender, EventArgs e)
|
||||
{
|
||||
this._panelState = ((this._panelState == PanelStateOptions.Collapsed) ? PanelStateOptions.Expanded : PanelStateOptions.Collapsed);
|
||||
this.UpdateState();
|
||||
}
|
||||
|
||||
internal void UpdateState()
|
||||
{
|
||||
if (this._panelState == PanelStateOptions.Collapsed)
|
||||
{
|
||||
this.contentPanel.Visible = false;
|
||||
base.Height = this.titlePanel.Height;
|
||||
this.togglingImage.Image = Resources.CollapsedIcon;
|
||||
}
|
||||
else
|
||||
{
|
||||
int num = (this.contentPanel.Controls.Count != 1 || !this._autoHeight) ? this.contentPanel.Height : this.contentPanel.Controls[0].Height;
|
||||
base.Height = this.titlePanel.Height + num;
|
||||
this.contentPanel.Visible = true;
|
||||
this.togglingImage.Image = Resources.ExpandedIcon;
|
||||
Panel panel = base.Parent as Panel;
|
||||
while (panel != null && panel.AutoSize)
|
||||
{
|
||||
panel = (panel.Parent as Panel);
|
||||
}
|
||||
if (panel != null)
|
||||
{
|
||||
panel.ScrollControlIntoView(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void MoveNextPanel()
|
||||
{
|
||||
if (this._nextPanel != null)
|
||||
{
|
||||
CollapsiblePanel nextPanel = this._nextPanel;
|
||||
Point location = base.Location;
|
||||
int x = location.X;
|
||||
location = base.Location;
|
||||
nextPanel.Location = new Point(x, location.Y + base.Size.Height);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && this.components != null)
|
||||
{
|
||||
this.components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new Container();
|
||||
ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof(CollapsiblePanel));
|
||||
this.collapsiblePanelImageList = new ImageList(this.components);
|
||||
this.titlePanel = new Panel();
|
||||
this.titleTableLayoutPanel = new TableLayoutPanel();
|
||||
this.togglingImage = new PictureBox();
|
||||
this.lblPanelTitle = new Label();
|
||||
this.contentPanel = new ContentPanel();
|
||||
this.titlePanel.SuspendLayout();
|
||||
this.titleTableLayoutPanel.SuspendLayout();
|
||||
((ISupportInitialize)this.togglingImage).BeginInit();
|
||||
base.SuspendLayout();
|
||||
this.collapsiblePanelImageList.ImageStream = (ImageListStreamer)componentResourceManager.GetObject("collapsiblePanelImageList.ImageStream");
|
||||
this.collapsiblePanelImageList.TransparentColor = Color.Transparent;
|
||||
this.collapsiblePanelImageList.Images.SetKeyName(0, "ExpandIcon.jpg");
|
||||
this.titlePanel.BackColor = Color.DarkGray;
|
||||
this.titlePanel.BackgroundImage = Resources.titleBackground;
|
||||
this.titlePanel.BackgroundImageLayout = ImageLayout.Stretch;
|
||||
this.titlePanel.Controls.Add(this.titleTableLayoutPanel);
|
||||
this.titlePanel.Dock = DockStyle.Top;
|
||||
this.titlePanel.Location = new Point(0, 0);
|
||||
this.titlePanel.Name = "titlePanel";
|
||||
this.titlePanel.Size = new Size(150, 24);
|
||||
this.titlePanel.TabIndex = 0;
|
||||
this.titleTableLayoutPanel.BackColor = Color.Transparent;
|
||||
this.titleTableLayoutPanel.ColumnCount = 2;
|
||||
this.titleTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 24f));
|
||||
this.titleTableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100f));
|
||||
this.titleTableLayoutPanel.Controls.Add(this.togglingImage, 0, 0);
|
||||
this.titleTableLayoutPanel.Controls.Add(this.lblPanelTitle, 1, 0);
|
||||
this.titleTableLayoutPanel.Dock = DockStyle.Fill;
|
||||
this.titleTableLayoutPanel.Location = new Point(0, 0);
|
||||
this.titleTableLayoutPanel.Name = "titleTableLayoutPanel";
|
||||
this.titleTableLayoutPanel.RowCount = 1;
|
||||
this.titleTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100f));
|
||||
this.titleTableLayoutPanel.Size = new Size(150, 24);
|
||||
this.titleTableLayoutPanel.TabIndex = 2;
|
||||
this.titleTableLayoutPanel.Click += this.ToggleState;
|
||||
this.togglingImage.Anchor = AnchorStyles.None;
|
||||
this.togglingImage.BackColor = Color.Transparent;
|
||||
this.togglingImage.Image = Resources.ExpandedIcon;
|
||||
this.togglingImage.Location = new Point(7, 7);
|
||||
this.togglingImage.Name = "togglingImage";
|
||||
this.togglingImage.Size = new Size(10, 10);
|
||||
this.togglingImage.SizeMode = PictureBoxSizeMode.StretchImage;
|
||||
this.togglingImage.TabIndex = 0;
|
||||
this.togglingImage.TabStop = false;
|
||||
this.togglingImage.Click += this.ToggleState;
|
||||
this.lblPanelTitle.Anchor = AnchorStyles.Left;
|
||||
this.lblPanelTitle.AutoEllipsis = true;
|
||||
this.lblPanelTitle.AutoSize = true;
|
||||
this.lblPanelTitle.BackColor = Color.Transparent;
|
||||
this.lblPanelTitle.Font = new Font("Segoe UI Semibold", 9f, FontStyle.Regular, GraphicsUnit.Point, 0);
|
||||
this.lblPanelTitle.ForeColor = Color.WhiteSmoke;
|
||||
this.lblPanelTitle.Location = new Point(27, 4);
|
||||
this.lblPanelTitle.Name = "lblPanelTitle";
|
||||
this.lblPanelTitle.Size = new Size(59, 15);
|
||||
this.lblPanelTitle.TabIndex = 1;
|
||||
this.lblPanelTitle.Text = "Panel title";
|
||||
this.lblPanelTitle.Click += this.ToggleState;
|
||||
this.contentPanel.Location = new Point(0, 24);
|
||||
this.contentPanel.Margin = new Padding(2);
|
||||
this.contentPanel.Name = "contentPanel";
|
||||
this.contentPanel.Size = new Size(150, 126);
|
||||
this.contentPanel.TabIndex = 1;
|
||||
base.AutoScaleDimensions = new SizeF(96f, 96f);
|
||||
base.AutoScaleMode = AutoScaleMode.Dpi;
|
||||
base.Controls.Add(this.contentPanel);
|
||||
base.Controls.Add(this.titlePanel);
|
||||
base.Name = "CollapsiblePanel";
|
||||
this.titlePanel.ResumeLayout(false);
|
||||
this.titleTableLayoutPanel.ResumeLayout(false);
|
||||
this.titleTableLayoutPanel.PerformLayout();
|
||||
((ISupportInitialize)this.togglingImage).EndInit();
|
||||
base.ResumeLayout(false);
|
||||
base.PerformLayout();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="collapsiblePanelImageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABe
|
||||
CAAAAk1TRnQBSQFMAwEBAAHEAQABxAEAARABAAEQAQAE/wEJARAI/wFCAU0BNgEEBgABNgEEAgABKAMA
|
||||
AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
|
||||
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
|
||||
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
|
||||
AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ
|
||||
AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm
|
||||
AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz
|
||||
AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm
|
||||
AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm
|
||||
AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA
|
||||
ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm
|
||||
AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm
|
||||
ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm
|
||||
AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA
|
||||
AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ
|
||||
AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz
|
||||
AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/
|
||||
AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA
|
||||
AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM
|
||||
AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm
|
||||
ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ
|
||||
AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/
|
||||
ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM
|
||||
ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm
|
||||
AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM
|
||||
AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA
|
||||
AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA
|
||||
ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7
|
||||
Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8BAAHyAfALvAHwAfEB9DAA
|
||||
AQcBkgvsAe0B7wHxMAAB7QH3B+8B9wPvAfcB7QHwMAAB7AH3BAcB7wGSAe8EBwHvAewBvDAAAewB9wIH
|
||||
Au8B7AFDAesB7wEHAbwBBwHvAewBvDAAAewB7wHxAvABvAHsAQ4BbQHwAwcB7wHsAbwwAAHsAQcD/wH0
|
||||
AZIBDgHsAfQBvAHvAQcB7wHsAbwwAAHsAbwB8wHvAuwBEgEOARQB7AFtAesB9wHvAewBvDAAAewBBwHy
|
||||
AeoDDgEAAg4BDwEVAe0B7wHsAbwwAAHsAQcB8wEHAvcBbQEOARMB7QH3Ae8B8AEHAewBvDAAAewBBwT/
|
||||
AfcBDgHsAfQD/wHwAe0BvDAAAewBvAL/AfQB/wGSAQ4B7AT/AfAB7AG8MAAB7AG8Av8B9AH/AQcB6gHv
|
||||
BP8B8AHsAbwwAAHsAQcE/wH0AfIB8wH/AfQB8wH/AfEB7QG8MAAB7QHvArwKBwH3AfAwAAEHAZIL7AHt
|
||||
Ae8B8jAAAUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/+XAAs=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="collapsiblePanelImageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABe
|
||||
CAAAAk1TRnQBSQFMAwEBAAHEAQABxAEAARABAAEQAQAE/wEJARAI/wFCAU0BNgEEBgABNgEEAgABKAMA
|
||||
AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
|
||||
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
|
||||
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
|
||||
AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ
|
||||
AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm
|
||||
AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz
|
||||
AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm
|
||||
AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm
|
||||
AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA
|
||||
ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm
|
||||
AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm
|
||||
ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm
|
||||
AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA
|
||||
AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ
|
||||
AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz
|
||||
AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/
|
||||
AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA
|
||||
AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM
|
||||
AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm
|
||||
ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ
|
||||
AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/
|
||||
ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM
|
||||
ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm
|
||||
AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM
|
||||
AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA
|
||||
AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA
|
||||
ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7
|
||||
Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8BAAHyAfALvAHwAfEB9DAA
|
||||
AQcBkgvsAe0B7wHxMAAB7QH3B+8B9wPvAfcB7QHwMAAB7AH3BAcB7wGSAe8EBwHvAewBvDAAAewB9wIH
|
||||
Au8B7AFDAesB7wEHAbwBBwHvAewBvDAAAewB7wHxAvABvAHsAQ4BbQHwAwcB7wHsAbwwAAHsAQcD/wH0
|
||||
AZIBDgHsAfQBvAHvAQcB7wHsAbwwAAHsAbwB8wHvAuwBEgEOARQB7AFtAesB9wHvAewBvDAAAewBBwHy
|
||||
AeoDDgEAAg4BDwEVAe0B7wHsAbwwAAHsAQcB8wEHAvcBbQEOARMB7QH3Ae8B8AEHAewBvDAAAewBBwT/
|
||||
AfcBDgHsAfQD/wHwAe0BvDAAAewBvAL/AfQB/wGSAQ4B7AT/AfAB7AG8MAAB7AG8Av8B9AH/AQcB6gHv
|
||||
BP8B8AHsAbwwAAHsAQcE/wH0AfIB8wH/AfQB8wH/AfEB7QG8MAAB7QHvArwKBwH3AfAwAAEHAZIL7AHt
|
||||
Ae8B8jAAAUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/+XAAs=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
using System.ComponentModel;
|
||||
using System.Windows.Forms.Design;
|
||||
|
||||
namespace SDRSharp.CollapsiblePanel
|
||||
{
|
||||
public class CollapsiblePanelDesigner : ParentControlDesigner
|
||||
{
|
||||
public override void Initialize(IComponent component)
|
||||
{
|
||||
base.Initialize(component);
|
||||
if (this.Control is CollapsiblePanel)
|
||||
{
|
||||
base.EnableDesignMode(((CollapsiblePanel)this.Control).Content, "Content");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace SDRSharp.CollapsiblePanel
|
||||
{
|
||||
[Designer(typeof(ContentPanelDesigner))]
|
||||
public class ContentPanel : Panel
|
||||
{
|
||||
public ContentPanel()
|
||||
{
|
||||
base.Dock = DockStyle.Fill;
|
||||
}
|
||||
|
||||
protected override void OnControlAdded(ControlEventArgs e)
|
||||
{
|
||||
e.Control.Resize += this.sourceControlPanel_Resize;
|
||||
base.OnControlAdded(e);
|
||||
}
|
||||
|
||||
protected override void OnControlRemoved(ControlEventArgs e)
|
||||
{
|
||||
e.Control.Resize -= this.sourceControlPanel_Resize;
|
||||
base.OnControlRemoved(e);
|
||||
}
|
||||
|
||||
private void sourceControlPanel_Resize(object sender, EventArgs e)
|
||||
{
|
||||
((CollapsiblePanel)base.Parent).UpdateState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
using System.Collections;
|
||||
using System.Windows.Forms.Design;
|
||||
|
||||
namespace SDRSharp.CollapsiblePanel
|
||||
{
|
||||
public class ContentPanelDesigner : ScrollableControlDesigner
|
||||
{
|
||||
protected override void PreFilterProperties(IDictionary properties)
|
||||
{
|
||||
properties.Remove("Dock");
|
||||
properties.Remove("AutoSize");
|
||||
properties.Remove("AutoSizeMode");
|
||||
base.PreFilterProperties(properties);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
namespace SDRSharp.CollapsiblePanel
|
||||
{
|
||||
public enum PanelStateOptions
|
||||
{
|
||||
Collapsed,
|
||||
Expanded
|
||||
}
|
||||
}
|
||||
17
SDRSharp.Common/Properties/AssemblyInfo.cs
Normal file
17
SDRSharp.Common/Properties/AssemblyInfo.cs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Security;
|
||||
using System.Security.Permissions;
|
||||
|
||||
[assembly: CompilationRelaxations(8)]
|
||||
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
|
||||
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
|
||||
[assembly: SecurityRules(SecurityRuleSet.Level1)]
|
||||
[assembly: AssemblyTitle("SDR Sharp")]
|
||||
[assembly: AssemblyDescription("Software Defined Radio")]
|
||||
[assembly: AssemblyProduct("SDR#")]
|
||||
[assembly: AssemblyCopyright("Copyright © Youssef TOUIL 2012")]
|
||||
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
59
SDRSharp.Common/SDRSharp.Common.csproj
Normal file
59
SDRSharp.Common/SDRSharp.Common.csproj
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{E8BB1EAC-ED6B-4D5E-AA88-6A6CD961F37E}</ProjectGuid>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<OutputType>Library</OutputType>
|
||||
<AssemblyName>SDRSharp.Common</AssemblyName>
|
||||
<TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
|
||||
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="SDRSharp.PanView">
|
||||
<HintPath>..\SDRSharp.PanView\bin\Debug\SDRSharp.PanView.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SDRSharp.Radio">
|
||||
<HintPath>..\SDRSharp.Radio\bin\Debug\SDRSharp.Radio.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System">
|
||||
<HintPath>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing">
|
||||
<HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms">
|
||||
<HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SDRSharp.Common\ByteSamplesEventArgs.cs" />
|
||||
<Compile Include="SDRSharp.Common\ComplexSamplesEventArgs.cs" />
|
||||
<Compile Include="SDRSharp.Common\IFFTSource.cs" />
|
||||
<Compile Include="SDRSharp.Common\ISharpControl.cs" />
|
||||
<Compile Include="SDRSharp.Common\ISharpPlugin.cs" />
|
||||
<Compile Include="SDRSharp.Common\IVFOSource.cs" />
|
||||
<Compile Include="SDRSharp.Common\PluginPosition.cs" />
|
||||
<Compile Include="SDRSharp.Common\RealSamplesEventArgs.cs" />
|
||||
<Compile Include="SDRSharp.Common\SamplesAvailableDelegate.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
25
SDRSharp.Common/SDRSharp.Common.sln
Normal file
25
SDRSharp.Common/SDRSharp.Common.sln
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27428.2015
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SDRSharp.Common", "SDRSharp.Common.csproj", "{E8BB1EAC-ED6B-4D5E-AA88-6A6CD961F37E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{E8BB1EAC-ED6B-4D5E-AA88-6A6CD961F37E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E8BB1EAC-ED6B-4D5E-AA88-6A6CD961F37E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E8BB1EAC-ED6B-4D5E-AA88-6A6CD961F37E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E8BB1EAC-ED6B-4D5E-AA88-6A6CD961F37E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {0AE04AD9-F937-4F9E-9BEC-85735408578C}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
19
SDRSharp.Common/SDRSharp.Common/ByteSamplesEventArgs.cs
Normal file
19
SDRSharp.Common/SDRSharp.Common/ByteSamplesEventArgs.cs
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
using System;
|
||||
|
||||
namespace SDRSharp.Common
|
||||
{
|
||||
public sealed class ByteSamplesEventArgs : EventArgs
|
||||
{
|
||||
public int Length
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public unsafe byte* Buffer
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
}
|
||||
26
SDRSharp.Common/SDRSharp.Common/ComplexSamplesEventArgs.cs
Normal file
26
SDRSharp.Common/SDRSharp.Common/ComplexSamplesEventArgs.cs
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
using SDRSharp.Radio;
|
||||
using System;
|
||||
|
||||
namespace SDRSharp.Common
|
||||
{
|
||||
public sealed class ComplexSamplesEventArgs : EventArgs
|
||||
{
|
||||
public int Length
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public ulong DroppedSamples
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public unsafe Complex* Buffer
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
}
|
||||
36
SDRSharp.Common/SDRSharp.Common/IFFTSource.cs
Normal file
36
SDRSharp.Common/SDRSharp.Common/IFFTSource.cs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
namespace SDRSharp.Common
|
||||
{
|
||||
public interface IFFTSource
|
||||
{
|
||||
bool FFTEnabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int FFTRange
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int FFTOffset
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int DisplayBandwidth
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
int DisplayPixels
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
event SamplesAvailableDelegate<ByteSamplesEventArgs> FFTAvailable;
|
||||
}
|
||||
}
|
||||
371
SDRSharp.Common/SDRSharp.Common/ISharpControl.cs
Normal file
371
SDRSharp.Common/SDRSharp.Common/ISharpControl.cs
Normal file
|
|
@ -0,0 +1,371 @@
|
|||
using SDRSharp.PanView;
|
||||
using SDRSharp.Radio;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace SDRSharp.Common
|
||||
{
|
||||
public interface ISharpControl
|
||||
{
|
||||
DetectorType DetectorType
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
WindowType FilterType
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int AudioGain
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
long CenterFrequency
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int CWShift
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool FilterAudio
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool UnityGain
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int FilterBandwidth
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int FilterOrder
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool FmStereo
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
long Frequency
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
long FrequencyShift
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool FrequencyShiftEnabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool MarkPeaks
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool SnapToGrid
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool SquelchEnabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int SquelchThreshold
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool IsSquelchOpen
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
bool SwapIq
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool UseAgc
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool AgcHang
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int AgcThreshold
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int AgcDecay
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int AgcSlope
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int FFTResolution
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
float FFTRange
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
float FFTOffset
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
int FFTContrast
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
float VisualSNR
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
int IFOffset
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
ColorBlend Gradient
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
SpectrumStyle FFTSpectrumStyle
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
int StepSize
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int Zoom
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool IsPlaying
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
float SAttack
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
float SDecay
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
float WAttack
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
float WDecay
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool UseTimeMarkers
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
string RdsProgramService
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
string RdsRadioText
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
bool RdsUseFEC
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int RFBandwidth
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
int RFDisplayBandwidth
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
int TunableBandwidth
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
float TuningLimit
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
TuningStyle TuningStyle
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool TuningStyleFreezed
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool SourceIsSoundCard
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
bool SourceIsWaveFile
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
bool SourceIsTunable
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
object Source
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
bool AudioIsMuted
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
bool BypassDemodulation
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
Type SourceType
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
string SourceName
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
double AudioSampleRate
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
event CustomPaintEventHandler WaterfallCustomPaint;
|
||||
|
||||
event CustomPaintEventHandler SpectrumAnalyzerCustomPaint;
|
||||
|
||||
event CustomPaintEventHandler SpectrumAnalyzerBackgroundCustomPaint;
|
||||
|
||||
void SetFrequency(long frequency, bool onlyMoveCenterFrequency);
|
||||
|
||||
void ResetFrequency(long frequency);
|
||||
|
||||
void ResetFrequency(long frequency, long centerFrequency);
|
||||
|
||||
[Obsolete("Use GetSpectrumSnapshot(float[], float, float) instead")]
|
||||
void GetSpectrumSnapshot(byte[] destArray);
|
||||
|
||||
void GetSpectrumSnapshot(float[] destArray, float scale = 1f, float offset = 0f);
|
||||
|
||||
void StartRadio();
|
||||
|
||||
void StopRadio();
|
||||
|
||||
void RegisterStreamHook(object streamHook, ProcessorType processorType);
|
||||
|
||||
void UnregisterStreamHook(object streamHook);
|
||||
|
||||
void RegisterFrontControl(UserControl control, PluginPosition preferredPosition);
|
||||
|
||||
void Perform();
|
||||
|
||||
void RefreshSource(bool reload);
|
||||
}
|
||||
}
|
||||
21
SDRSharp.Common/SDRSharp.Common/ISharpPlugin.cs
Normal file
21
SDRSharp.Common/SDRSharp.Common/ISharpPlugin.cs
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
using System.Windows.Forms;
|
||||
|
||||
namespace SDRSharp.Common
|
||||
{
|
||||
public interface ISharpPlugin
|
||||
{
|
||||
UserControl Gui
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
string DisplayName
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
void Initialize(ISharpControl control);
|
||||
|
||||
void Close();
|
||||
}
|
||||
}
|
||||
27
SDRSharp.Common/SDRSharp.Common/IVFOSource.cs
Normal file
27
SDRSharp.Common/SDRSharp.Common/IVFOSource.cs
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
namespace SDRSharp.Common
|
||||
{
|
||||
public interface IVFOSource
|
||||
{
|
||||
long VFOFrequency
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int VFODecimation
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
int VFOMinIQDecimation
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
double VFOMaxSampleRate
|
||||
{
|
||||
get;
|
||||
}
|
||||
}
|
||||
}
|
||||
10
SDRSharp.Common/SDRSharp.Common/PluginPosition.cs
Normal file
10
SDRSharp.Common/SDRSharp.Common/PluginPosition.cs
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
namespace SDRSharp.Common
|
||||
{
|
||||
public enum PluginPosition
|
||||
{
|
||||
Top,
|
||||
Bottom,
|
||||
Left,
|
||||
Right
|
||||
}
|
||||
}
|
||||
25
SDRSharp.Common/SDRSharp.Common/RealSamplesEventArgs.cs
Normal file
25
SDRSharp.Common/SDRSharp.Common/RealSamplesEventArgs.cs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
using System;
|
||||
|
||||
namespace SDRSharp.Common
|
||||
{
|
||||
public sealed class RealSamplesEventArgs : EventArgs
|
||||
{
|
||||
public int Length
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public ulong DroppedSamples
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public unsafe float* Buffer
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
namespace SDRSharp.Common
|
||||
{
|
||||
public delegate void SamplesAvailableDelegate<ArgsType>(object sender, ArgsType e);
|
||||
}
|
||||
0
SDRSharp.Common/refs SDRSharp.PanView and Radio.txt
Normal file
0
SDRSharp.Common/refs SDRSharp.PanView and Radio.txt
Normal file
22
SDRSharp.FrequencyEdit/SDRSharp.FrequencyEdit.sln
Normal file
22
SDRSharp.FrequencyEdit/SDRSharp.FrequencyEdit.sln
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.26228.4
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SDRSharp.FrequencyEdit", "SDRSharp.FrequencyEdit\SDRSharp.FrequencyEdit.csproj", "{A50690CF-7A7A-4B31-9A03-B3A2AF0AF0E0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A50690CF-7A7A-4B31-9A03-B3A2AF0AF0E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A50690CF-7A7A-4B31-9A03-B3A2AF0AF0E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A50690CF-7A7A-4B31-9A03-B3A2AF0AF0E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A50690CF-7A7A-4B31-9A03-B3A2AF0AF0E0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
11
SDRSharp.FrequencyEdit/SDRSharp.FrequencyEdit/EntryMode.cs
Normal file
11
SDRSharp.FrequencyEdit/SDRSharp.FrequencyEdit/EntryMode.cs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
using System;
|
||||
|
||||
namespace SDRSharp.FrequencyEdit
|
||||
{
|
||||
public enum EntryMode
|
||||
{
|
||||
None,
|
||||
Direct,
|
||||
Arrow
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
|
||||
namespace SDRSharp.FrequencyEdit
|
||||
{
|
||||
public class FrequencyChangingEventArgs : EventArgs
|
||||
{
|
||||
public long Frequency { get; set; }
|
||||
|
||||
public bool Accept { get; set; }
|
||||
|
||||
public FrequencyChangingEventArgs()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
749
SDRSharp.FrequencyEdit/SDRSharp.FrequencyEdit/FrequencyEdit.cs
Normal file
749
SDRSharp.FrequencyEdit/SDRSharp.FrequencyEdit/FrequencyEdit.cs
Normal file
|
|
@ -0,0 +1,749 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using SDRSharp.FrequencyEdit.Properties;
|
||||
|
||||
namespace SDRSharp.FrequencyEdit
|
||||
{
|
||||
public sealed class FrequencyEdit : UserControl
|
||||
{
|
||||
public event EventHandler FrequencyChanged;
|
||||
|
||||
public event EventHandler<FrequencyChangingEventArgs> FrequencyChanging;
|
||||
|
||||
public int StepSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._stepSize;
|
||||
}
|
||||
set
|
||||
{
|
||||
this._stepSize = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool DisableFrequencyEvents
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._disableFrequencyEvents;
|
||||
}
|
||||
set
|
||||
{
|
||||
this._disableFrequencyEvents = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool EntryModeActive
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._currentEntryMode > EntryMode.None;
|
||||
}
|
||||
}
|
||||
|
||||
public long Frequency
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._frequency;
|
||||
}
|
||||
set
|
||||
{
|
||||
this._frequencyChangingEventArgs.Accept = true;
|
||||
this._frequencyChangingEventArgs.Frequency = value;
|
||||
if (!this._disableFrequencyEvents && this.FrequencyChanging != null)
|
||||
{
|
||||
this.FrequencyChanging(this, this._frequencyChangingEventArgs);
|
||||
}
|
||||
if (this._frequencyChangingEventArgs.Accept)
|
||||
{
|
||||
this._frequency = this._frequencyChangingEventArgs.Frequency;
|
||||
this.UpdateDigitsValues();
|
||||
if (!this._disableFrequencyEvents && this.FrequencyChanged != null)
|
||||
{
|
||||
this.FrequencyChanged(this, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public FrequencyEdit()
|
||||
{
|
||||
this.DoubleBuffered = true;
|
||||
this.AutoSize = true;
|
||||
base.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
this._digitImages = Resources.Numbers;
|
||||
this._renderTimer.Interval = 30;
|
||||
this._renderTimer.Tick += this.renderTimer_Tick;
|
||||
this._renderTimer.Enabled = true;
|
||||
this.ConfigureComponent();
|
||||
}
|
||||
|
||||
private void renderTimer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
for (int i = 0; i < base.Controls.Count; i++)
|
||||
{
|
||||
if (base.Controls[i] is IRenderable)
|
||||
{
|
||||
((IRenderable)base.Controls[i]).Render();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ConfigureComponent()
|
||||
{
|
||||
this.BackColor = Color.Transparent;
|
||||
if (this._digitImages != null)
|
||||
{
|
||||
for (int i = 0; i < 12; i++)
|
||||
{
|
||||
if (this._digitControls[i] != null && base.Controls.Contains(this._digitControls[i]))
|
||||
{
|
||||
base.Controls.Remove(this._digitControls[i]);
|
||||
this._digitControls[i] = null;
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < 12; j++)
|
||||
{
|
||||
if (this._separatorControls[j] != null && base.Controls.Contains(this._separatorControls[j]))
|
||||
{
|
||||
base.Controls.Remove(this._separatorControls[j]);
|
||||
this._separatorControls[j] = null;
|
||||
}
|
||||
}
|
||||
this.SplitDigitImages();
|
||||
}
|
||||
if (this._imageList.Images.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
int num = 0;
|
||||
int y = 0;
|
||||
int width = this._imageList.ImageSize.Width;
|
||||
int height = this._imageList.ImageSize.Height;
|
||||
for (int k = 11; k >= 0; k--)
|
||||
{
|
||||
if ((k + 1) % 3 == 0 && k != 11)
|
||||
{
|
||||
FrequencyEditSeparator frequencyEditSeparator = new FrequencyEditSeparator();
|
||||
int num2 = width / 2;
|
||||
int num3 = k / 3;
|
||||
frequencyEditSeparator.Image = this._imageList.Images[11];
|
||||
frequencyEditSeparator.Width = num2;
|
||||
frequencyEditSeparator.Height = height;
|
||||
frequencyEditSeparator.Location = new Point(num, y);
|
||||
base.Controls.Add(frequencyEditSeparator);
|
||||
this._separatorControls[num3] = frequencyEditSeparator;
|
||||
num += num2 + 2;
|
||||
}
|
||||
FrequencyEditDigit frequencyEditDigit = new FrequencyEditDigit(k);
|
||||
frequencyEditDigit.Location = new Point(num, y);
|
||||
frequencyEditDigit.OnDigitClick += this.DigitClickHandler;
|
||||
frequencyEditDigit.MouseLeave += this.DigitMouseLeave;
|
||||
frequencyEditDigit.Width = width;
|
||||
frequencyEditDigit.Height = height;
|
||||
frequencyEditDigit.ImageList = this._imageList;
|
||||
base.Controls.Add(frequencyEditDigit);
|
||||
this._digitControls[k] = frequencyEditDigit;
|
||||
num += width + 2;
|
||||
}
|
||||
long num4 = 1L;
|
||||
for (int l = 0; l < 12; l++)
|
||||
{
|
||||
this._digitControls[l].Weight = num4;
|
||||
num4 *= 10L;
|
||||
}
|
||||
base.Height = height;
|
||||
this.UpdateDigitMask();
|
||||
}
|
||||
|
||||
private void SplitDigitImages()
|
||||
{
|
||||
int height = this._digitImages.Height;
|
||||
int num = (int)Math.Round((double)((float)this._digitImages.Width / 11.5f));
|
||||
this._imageList.Images.Clear();
|
||||
this._imageList.ImageSize = new Size(num, height);
|
||||
int num2 = 0;
|
||||
Bitmap bitmap;
|
||||
for (int i = 0; i < 11; i++)
|
||||
{
|
||||
bitmap = new Bitmap(num, height);
|
||||
using (Graphics graphics = Graphics.FromImage(bitmap))
|
||||
{
|
||||
graphics.DrawImage(this._digitImages, new Rectangle(0, 0, num, height), new Rectangle(num2, 0, num, height), GraphicsUnit.Pixel);
|
||||
}
|
||||
num2 += num;
|
||||
this._imageList.Images.Add(bitmap);
|
||||
}
|
||||
bitmap = new Bitmap(num, height);
|
||||
using (Graphics graphics2 = Graphics.FromImage(bitmap))
|
||||
{
|
||||
graphics2.DrawImage(this._digitImages, new Rectangle(0, 0, num, height), new Rectangle(num2, 0, num / 2, height), GraphicsUnit.Pixel);
|
||||
}
|
||||
this._imageList.Images.Add(bitmap);
|
||||
}
|
||||
|
||||
private void DigitClickHandler(object sender, FrequencyEditDigitClickEventArgs args)
|
||||
{
|
||||
if (this._currentEntryMode != EntryMode.None)
|
||||
{
|
||||
this.LeaveEntryMode();
|
||||
return;
|
||||
}
|
||||
FrequencyEditDigit frequencyEditDigit = (FrequencyEditDigit)sender;
|
||||
if (frequencyEditDigit != null)
|
||||
{
|
||||
this._newFrequency = this._frequency;
|
||||
if (args.Button == MouseButtons.Right)
|
||||
{
|
||||
this.ZeroDigits(frequencyEditDigit.DigitIndex);
|
||||
}
|
||||
else if (args.IsUpperHalf && this._frequency >= 0L)
|
||||
{
|
||||
this.IncrementDigit(frequencyEditDigit.DigitIndex, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.DecrementDigit(frequencyEditDigit.DigitIndex, true);
|
||||
}
|
||||
if (this._newFrequency != this._frequency)
|
||||
{
|
||||
this._frequencyChangingEventArgs.Accept = true;
|
||||
this._frequencyChangingEventArgs.Frequency = this._newFrequency;
|
||||
if (!this._disableFrequencyEvents && this.FrequencyChanging != null)
|
||||
{
|
||||
this.FrequencyChanging(this, this._frequencyChangingEventArgs);
|
||||
}
|
||||
if (this._frequencyChangingEventArgs.Accept)
|
||||
{
|
||||
this._frequency = this._frequencyChangingEventArgs.Frequency;
|
||||
this.UpdateDigitsValues();
|
||||
if (!this._disableFrequencyEvents && this.FrequencyChanged != null)
|
||||
{
|
||||
this.FrequencyChanged(this, EventArgs.Empty);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.UpdateDigitsValues();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void IncrementDigit(int index, bool updateDigit)
|
||||
{
|
||||
FrequencyEditDigit frequencyEditDigit = this._digitControls[index];
|
||||
if (frequencyEditDigit != null)
|
||||
{
|
||||
int displayedDigit = frequencyEditDigit.DisplayedDigit;
|
||||
int num = (frequencyEditDigit.DisplayedDigit == 9) ? 0 : (frequencyEditDigit.DisplayedDigit + 1);
|
||||
long newFrequency = this._newFrequency - (long)displayedDigit * frequencyEditDigit.Weight + (long)num * frequencyEditDigit.Weight;
|
||||
if (updateDigit)
|
||||
{
|
||||
frequencyEditDigit.DisplayedDigit = num;
|
||||
}
|
||||
this._newFrequency = newFrequency;
|
||||
if (displayedDigit == 9 && index < 11)
|
||||
{
|
||||
this.IncrementDigit(index + 1, updateDigit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DecrementDigit(int index, bool updateDigit)
|
||||
{
|
||||
FrequencyEditDigit frequencyEditDigit = this._digitControls[index];
|
||||
if (frequencyEditDigit != null)
|
||||
{
|
||||
int displayedDigit = frequencyEditDigit.DisplayedDigit;
|
||||
int num = (frequencyEditDigit.DisplayedDigit == 0) ? 9 : (frequencyEditDigit.DisplayedDigit - 1);
|
||||
long newFrequency = this._newFrequency - (long)displayedDigit * frequencyEditDigit.Weight + (long)num * frequencyEditDigit.Weight;
|
||||
if (updateDigit)
|
||||
{
|
||||
frequencyEditDigit.DisplayedDigit = num;
|
||||
}
|
||||
this._newFrequency = newFrequency;
|
||||
if (displayedDigit == 0 && index < 11 && (double)this._newFrequency > Math.Pow(10.0, (double)(index + 1)))
|
||||
{
|
||||
this.DecrementDigit(index + 1, updateDigit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ZeroDigits(int index)
|
||||
{
|
||||
for (int i = 0; i <= index; i++)
|
||||
{
|
||||
this._digitControls[i].DisplayedDigit = 0;
|
||||
}
|
||||
long num = (long)Math.Pow(10.0, (double)(index + 1));
|
||||
this._newFrequency = this._newFrequency / num * num;
|
||||
}
|
||||
|
||||
private void UpdateDigitsValues()
|
||||
{
|
||||
if (this._digitControls[0] == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
long num = this._frequency;
|
||||
for (int i = 11; i >= 0; i--)
|
||||
{
|
||||
long num2 = num / this._digitControls[i].Weight;
|
||||
this._digitControls[i].DisplayedDigit = (int)num2;
|
||||
num -= (long)this._digitControls[i].DisplayedDigit * this._digitControls[i].Weight;
|
||||
}
|
||||
this.UpdateDigitMask();
|
||||
}
|
||||
|
||||
private void UpdateDigitMask()
|
||||
{
|
||||
long frequency = this._frequency;
|
||||
if (frequency >= 0L)
|
||||
{
|
||||
for (int i = 1; i < 12; i++)
|
||||
{
|
||||
if ((i + 1) % 3 == 0 && i != 11)
|
||||
{
|
||||
int num = i / 3;
|
||||
if (this._separatorControls[num] != null)
|
||||
{
|
||||
this._separatorControls[num].Masked = (this._digitControls[i + 1].Weight > frequency);
|
||||
}
|
||||
}
|
||||
if (this._digitControls[i] != null)
|
||||
{
|
||||
this._digitControls[i].Masked = (this._digitControls[i].Weight > frequency);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DigitMouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
if (!base.ClientRectangle.Contains(base.PointToClient(Control.MousePosition)) && this._currentEntryMode != EntryMode.None)
|
||||
{
|
||||
this.AbortEntryMode();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnMouseLeave(EventArgs e)
|
||||
{
|
||||
base.OnMouseLeave(e);
|
||||
if (!base.ClientRectangle.Contains(base.PointToClient(Control.MousePosition)) && this._currentEntryMode != EntryMode.None)
|
||||
{
|
||||
this.AbortEntryMode();
|
||||
}
|
||||
}
|
||||
|
||||
private long GetFrequencyValue()
|
||||
{
|
||||
long num = 0L;
|
||||
for (int i = 0; i < this._digitControls.Length; i++)
|
||||
{
|
||||
num += this._digitControls[i].Weight * (long)this._digitControls[i].DisplayedDigit;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
private void SetFrequencyValue(long newFrequency)
|
||||
{
|
||||
if (newFrequency != this._frequency)
|
||||
{
|
||||
this._frequencyChangingEventArgs.Accept = true;
|
||||
this._frequencyChangingEventArgs.Frequency = newFrequency;
|
||||
if (!this._disableFrequencyEvents && this.FrequencyChanging != null)
|
||||
{
|
||||
this.FrequencyChanging(this, this._frequencyChangingEventArgs);
|
||||
}
|
||||
if (this._frequencyChangingEventArgs.Accept)
|
||||
{
|
||||
this._frequency = this._frequencyChangingEventArgs.Frequency;
|
||||
this.UpdateDigitsValues();
|
||||
if (!this._disableFrequencyEvents && this.FrequencyChanged != null)
|
||||
{
|
||||
this.FrequencyChanged(this, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void EnterDirectMode()
|
||||
{
|
||||
if (this._changingEntryMode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this._changingEntryMode = true;
|
||||
for (int i = 0; i < this._digitControls.Length; i++)
|
||||
{
|
||||
if (this._digitControls[i] != null)
|
||||
{
|
||||
this._digitControls[i].Masked = false;
|
||||
if (this._digitControls[i].CursorInside)
|
||||
{
|
||||
this._editModePosition = i;
|
||||
this._digitControls[i].Highlight = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.ZeroDigits(this._digitControls.Length - 1);
|
||||
this._currentEntryMode = EntryMode.Direct;
|
||||
this._changingEntryMode = false;
|
||||
}
|
||||
|
||||
private void DirectModeHandler(KeyEventArgs args)
|
||||
{
|
||||
Keys keyCode = args.KeyCode;
|
||||
if (keyCode <= Keys.Return)
|
||||
{
|
||||
if (keyCode != Keys.Back)
|
||||
{
|
||||
if (keyCode != Keys.Tab)
|
||||
{
|
||||
if (keyCode != Keys.Return)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this.LeaveEntryMode();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this._digitControls[this._editModePosition].DisplayedDigit = 0;
|
||||
if (this._editModePosition < this._digitControls.Length - 1)
|
||||
{
|
||||
this._digitControls[this._editModePosition].Highlight = false;
|
||||
this._editModePosition++;
|
||||
this._digitControls[this._editModePosition].Highlight = true;
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (keyCode <= Keys.D9)
|
||||
{
|
||||
if (keyCode == Keys.Escape)
|
||||
{
|
||||
this.AbortEntryMode();
|
||||
return;
|
||||
}
|
||||
switch (keyCode)
|
||||
{
|
||||
case Keys.Left:
|
||||
if (this._editModePosition < this._digitControls.Length - 1)
|
||||
{
|
||||
this._digitControls[this._editModePosition].Highlight = false;
|
||||
this._editModePosition++;
|
||||
this._digitControls[this._editModePosition].Highlight = true;
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case Keys.Up:
|
||||
case Keys.Down:
|
||||
case Keys.Select:
|
||||
case Keys.Print:
|
||||
case Keys.Execute:
|
||||
case Keys.Snapshot:
|
||||
case Keys.Insert:
|
||||
case Keys.Delete:
|
||||
case Keys.Help:
|
||||
return;
|
||||
case Keys.Right:
|
||||
if (this._editModePosition > 0)
|
||||
{
|
||||
this._digitControls[this._editModePosition].Highlight = false;
|
||||
this._editModePosition--;
|
||||
this._digitControls[this._editModePosition].Highlight = true;
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case Keys.D0:
|
||||
case Keys.D1:
|
||||
case Keys.D2:
|
||||
case Keys.D3:
|
||||
case Keys.D4:
|
||||
case Keys.D5:
|
||||
case Keys.D6:
|
||||
case Keys.D7:
|
||||
case Keys.D8:
|
||||
case Keys.D9:
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (keyCode)
|
||||
{
|
||||
case Keys.NumPad0:
|
||||
case Keys.NumPad1:
|
||||
case Keys.NumPad2:
|
||||
case Keys.NumPad3:
|
||||
case Keys.NumPad4:
|
||||
case Keys.NumPad5:
|
||||
case Keys.NumPad6:
|
||||
case Keys.NumPad7:
|
||||
case Keys.NumPad8:
|
||||
case Keys.NumPad9:
|
||||
break;
|
||||
case Keys.Multiply:
|
||||
case Keys.Add:
|
||||
case Keys.Separator:
|
||||
case Keys.Subtract:
|
||||
return;
|
||||
case Keys.Decimal:
|
||||
goto IL_249;
|
||||
default:
|
||||
if (keyCode != Keys.OemPeriod)
|
||||
{
|
||||
return;
|
||||
}
|
||||
goto IL_249;
|
||||
}
|
||||
}
|
||||
int displayedDigit = (args.KeyCode >= Keys.D0 && args.KeyCode <= Keys.D9) ? (args.KeyCode - Keys.D0) : (args.KeyCode - Keys.NumPad0);
|
||||
this._digitControls[this._editModePosition].DisplayedDigit = displayedDigit;
|
||||
if (this._editModePosition > 0)
|
||||
{
|
||||
this._digitControls[this._editModePosition].Highlight = false;
|
||||
this._editModePosition--;
|
||||
this._digitControls[this._editModePosition].Highlight = true;
|
||||
return;
|
||||
}
|
||||
this.LeaveEntryMode();
|
||||
return;
|
||||
}
|
||||
IL_249:
|
||||
this._digitControls[this._editModePosition].Highlight = false;
|
||||
this._editModePosition -= this._editModePosition % 3 + 1;
|
||||
if (this._editModePosition < 2)
|
||||
{
|
||||
if (args.KeyCode != Keys.Tab)
|
||||
{
|
||||
this._editModePosition = 0;
|
||||
this.LeaveEntryMode();
|
||||
return;
|
||||
}
|
||||
this._editModePosition = this._digitControls.Length - 1;
|
||||
}
|
||||
this._digitControls[this._editModePosition].Highlight = true;
|
||||
}
|
||||
|
||||
private void EnterArrowMode()
|
||||
{
|
||||
if (this._changingEntryMode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this._changingEntryMode = true;
|
||||
for (int i = 0; i < this._digitControls.Length; i++)
|
||||
{
|
||||
if (this._digitControls[i] != null)
|
||||
{
|
||||
this._digitControls[i].Masked = false;
|
||||
if (this._digitControls[i].CursorInside)
|
||||
{
|
||||
this._editModePosition = i;
|
||||
this._digitControls[i].Highlight = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
this._currentEntryMode = EntryMode.Arrow;
|
||||
this._changingEntryMode = false;
|
||||
}
|
||||
|
||||
private void ArrowModeHandler(KeyEventArgs args)
|
||||
{
|
||||
Keys keyCode = args.KeyCode;
|
||||
if (keyCode <= Keys.Return)
|
||||
{
|
||||
if (keyCode == Keys.Tab)
|
||||
{
|
||||
this._digitControls[this._editModePosition].Highlight = false;
|
||||
this._editModePosition -= this._editModePosition % 3 + 1;
|
||||
if (this._editModePosition < 2)
|
||||
{
|
||||
this._editModePosition = this._digitControls.Length - 1;
|
||||
}
|
||||
this._digitControls[this._editModePosition].Highlight = true;
|
||||
return;
|
||||
}
|
||||
if (keyCode != Keys.Return)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (keyCode != Keys.Escape)
|
||||
{
|
||||
switch (keyCode)
|
||||
{
|
||||
case Keys.Left:
|
||||
if (this._editModePosition < this._digitControls.Length - 1)
|
||||
{
|
||||
this._digitControls[this._editModePosition].Highlight = false;
|
||||
this._editModePosition++;
|
||||
this._digitControls[this._editModePosition].Highlight = true;
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case Keys.Up:
|
||||
this._newFrequency = this._frequency;
|
||||
this.IncrementDigit(this._editModePosition, false);
|
||||
this.SetFrequencyValue(this._newFrequency);
|
||||
return;
|
||||
case Keys.Right:
|
||||
if (this._editModePosition > 0)
|
||||
{
|
||||
this._digitControls[this._editModePosition].Highlight = false;
|
||||
this._editModePosition--;
|
||||
this._digitControls[this._editModePosition].Highlight = true;
|
||||
return;
|
||||
}
|
||||
return;
|
||||
case Keys.Down:
|
||||
this._newFrequency = this._frequency;
|
||||
this.DecrementDigit(this._editModePosition, false);
|
||||
this.SetFrequencyValue(this._newFrequency);
|
||||
return;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
this.AbortEntryMode();
|
||||
}
|
||||
|
||||
private void AbortEntryMode()
|
||||
{
|
||||
if (this._changingEntryMode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this._changingEntryMode = true;
|
||||
this._digitControls[this._editModePosition].Highlight = false;
|
||||
this.UpdateDigitsValues();
|
||||
this._currentEntryMode = EntryMode.None;
|
||||
this._changingEntryMode = false;
|
||||
}
|
||||
|
||||
private void LeaveEntryMode()
|
||||
{
|
||||
if (this._changingEntryMode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this._changingEntryMode = true;
|
||||
this._digitControls[this._editModePosition].Highlight = false;
|
||||
if (this._currentEntryMode == EntryMode.Direct)
|
||||
{
|
||||
long frequencyValue = this.GetFrequencyValue();
|
||||
this.SetFrequencyValue(frequencyValue);
|
||||
}
|
||||
this._currentEntryMode = EntryMode.None;
|
||||
this._changingEntryMode = false;
|
||||
}
|
||||
|
||||
private bool DigitKeyHandler(KeyEventArgs args)
|
||||
{
|
||||
if (!base.ClientRectangle.Contains(base.PointToClient(Control.MousePosition)) || this._changingEntryMode)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (this._currentEntryMode != EntryMode.None)
|
||||
{
|
||||
EntryMode currentEntryMode = this._currentEntryMode;
|
||||
if (currentEntryMode != EntryMode.Direct)
|
||||
{
|
||||
if (currentEntryMode == EntryMode.Arrow)
|
||||
{
|
||||
this.ArrowModeHandler(args);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.DirectModeHandler(args);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if ((args.KeyCode >= Keys.D0 && args.KeyCode <= Keys.D9) || (args.KeyCode >= Keys.NumPad0 && args.KeyCode <= Keys.NumPad9))
|
||||
{
|
||||
this.EnterDirectMode();
|
||||
this.DirectModeHandler(args);
|
||||
return true;
|
||||
}
|
||||
if (args.KeyCode == Keys.Up || args.KeyCode == Keys.Down || args.KeyCode == Keys.Left || args.KeyCode == Keys.Right)
|
||||
{
|
||||
this.EnterArrowMode();
|
||||
this.ArrowModeHandler(args);
|
||||
return true;
|
||||
}
|
||||
if (args.Modifiers == Keys.Control)
|
||||
{
|
||||
if (args.KeyCode == Keys.C)
|
||||
{
|
||||
Clipboard.SetText(string.Format("{0}", this.GetFrequencyValue()), TextDataFormat.Text);
|
||||
return true;
|
||||
}
|
||||
if (args.KeyCode == Keys.V)
|
||||
{
|
||||
long frequencyValue = 0L;
|
||||
if (long.TryParse(Clipboard.GetText(), out frequencyValue))
|
||||
{
|
||||
this.SetFrequencyValue(frequencyValue);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
||||
{
|
||||
if (msg.Msg == 256 || msg.Msg == 260)
|
||||
{
|
||||
return this.DigitKeyHandler(new KeyEventArgs(keyData));
|
||||
}
|
||||
return base.ProcessCmdKey(ref msg, keyData);
|
||||
}
|
||||
|
||||
private const int DigitCount = 12;
|
||||
|
||||
private const int DigitImageSplitCount = 12;
|
||||
|
||||
private const int DigitSeperatorCount = 12;
|
||||
|
||||
private readonly FrequencyEditDigit[] _digitControls = new FrequencyEditDigit[12];
|
||||
|
||||
private readonly FrequencyEditSeparator[] _separatorControls = new FrequencyEditSeparator[12];
|
||||
|
||||
private readonly ImageList _imageList = new ImageList();
|
||||
|
||||
private readonly Image _digitImages;
|
||||
|
||||
private readonly Timer _renderTimer = new Timer();
|
||||
|
||||
private readonly FrequencyChangingEventArgs _frequencyChangingEventArgs = new FrequencyChangingEventArgs();
|
||||
|
||||
private long _frequency;
|
||||
|
||||
private long _newFrequency;
|
||||
|
||||
private int _stepSize;
|
||||
|
||||
private int _editModePosition;
|
||||
|
||||
private bool _changingEntryMode;
|
||||
|
||||
private bool _disableFrequencyEvents;
|
||||
|
||||
private EntryMode _currentEntryMode;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,271 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace SDRSharp.FrequencyEdit
|
||||
{
|
||||
internal sealed class FrequencyEditDigit : UserControl, IRenderable
|
||||
{
|
||||
public event OnDigitClickDelegate OnDigitClick;
|
||||
|
||||
public ImageList ImageList
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._imageList;
|
||||
}
|
||||
set
|
||||
{
|
||||
this._imageList = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool Highlight
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._highlight;
|
||||
}
|
||||
set
|
||||
{
|
||||
this._highlight = value;
|
||||
this._renderNeeded = true;
|
||||
}
|
||||
}
|
||||
|
||||
public bool CursorInside
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._cursorInside;
|
||||
}
|
||||
}
|
||||
|
||||
public int DisplayedDigit
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._displayedDigit;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value >= 0 && value <= 9 && this._displayedDigit != value)
|
||||
{
|
||||
this._displayedDigit = value;
|
||||
this._renderNeeded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int DigitIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._digitIndex;
|
||||
}
|
||||
}
|
||||
|
||||
public bool Masked
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._masked;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (this._masked != value)
|
||||
{
|
||||
this._masked = value;
|
||||
this._renderNeeded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public long Weight
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._weight;
|
||||
}
|
||||
set
|
||||
{
|
||||
this._weight = value;
|
||||
}
|
||||
}
|
||||
|
||||
public FrequencyEditDigit(int digitIndex)
|
||||
{
|
||||
this.DoubleBuffered = true;
|
||||
this.BackColor = Color.Transparent;
|
||||
this._tickTimer.Tick += this.timer_Tick;
|
||||
base.UpdateStyles();
|
||||
this._digitIndex = digitIndex;
|
||||
ColorMatrix colorMatrix = new ColorMatrix();
|
||||
colorMatrix.Matrix33 = 0.3f;
|
||||
this._maskedAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
if (this._imageList != null && this._displayedDigit < this._imageList.Images.Count)
|
||||
{
|
||||
Image image = this._imageList.Images[this._displayedDigit];
|
||||
ImageAttributes imageAttrs = ((this._masked && !this._cursorInside) || !base.Parent.Enabled) ? this._maskedAttributes : null;
|
||||
e.Graphics.DrawImage(image, new Rectangle(0, 0, base.Width, base.Height), 0f, 0f, (float)image.Width, (float)image.Height, GraphicsUnit.Pixel, imageAttrs);
|
||||
}
|
||||
if (this._cursorInside && !((FrequencyEdit)base.Parent).EntryModeActive)
|
||||
{
|
||||
bool flag = this._lastMouseY <= base.ClientRectangle.Height / 2;
|
||||
using (SolidBrush solidBrush = new SolidBrush(Color.FromArgb(100, flag ? Color.Red : Color.Blue)))
|
||||
{
|
||||
if (flag)
|
||||
{
|
||||
e.Graphics.FillRectangle(solidBrush, new Rectangle(0, 0, base.ClientRectangle.Width, base.ClientRectangle.Height / 2));
|
||||
}
|
||||
else
|
||||
{
|
||||
e.Graphics.FillRectangle(solidBrush, new Rectangle(0, base.ClientRectangle.Height / 2, base.ClientRectangle.Width, base.ClientRectangle.Height));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this._highlight)
|
||||
{
|
||||
SolidBrush brush = new SolidBrush(Color.FromArgb(25, Color.Red));
|
||||
e.Graphics.FillRectangle(brush, new Rectangle(0, 0, base.ClientRectangle.Width, base.ClientRectangle.Height));
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnMouseMove(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseMove(e);
|
||||
this._isUpperHalf = (e.Y <= base.ClientRectangle.Height / 2);
|
||||
this._lastMouseY = e.Y;
|
||||
if (this._isUpperHalf != this._lastIsUpperHalf)
|
||||
{
|
||||
this._renderNeeded = true;
|
||||
this._tickCount = 0;
|
||||
}
|
||||
this._lastIsUpperHalf = this._isUpperHalf;
|
||||
}
|
||||
|
||||
protected override void OnMouseEnter(EventArgs e)
|
||||
{
|
||||
base.OnMouseEnter(e);
|
||||
this._cursorInside = true;
|
||||
this._renderNeeded = true;
|
||||
base.Focus();
|
||||
}
|
||||
|
||||
protected override void OnMouseLeave(EventArgs e)
|
||||
{
|
||||
base.OnMouseLeave(e);
|
||||
this._cursorInside = false;
|
||||
this._renderNeeded = true;
|
||||
}
|
||||
|
||||
protected override void OnMouseDown(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDown(e);
|
||||
this._isUpperHalf = (e.Y <= base.ClientRectangle.Height / 2);
|
||||
if (this.OnDigitClick != null)
|
||||
{
|
||||
this.OnDigitClick(this, new FrequencyEditDigitClickEventArgs(this._isUpperHalf, e.Button));
|
||||
}
|
||||
this._tickCount = 1;
|
||||
this._tickTimer.Interval = 300;
|
||||
this._tickTimer.Enabled = true;
|
||||
}
|
||||
|
||||
protected override void OnMouseUp(MouseEventArgs e)
|
||||
{
|
||||
this._tickTimer.Enabled = false;
|
||||
}
|
||||
|
||||
protected override void OnMouseWheel(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseWheel(e);
|
||||
if (this.OnDigitClick != null)
|
||||
{
|
||||
this.OnDigitClick(this, new FrequencyEditDigitClickEventArgs(e.Delta > 0, e.Button));
|
||||
}
|
||||
}
|
||||
|
||||
public void Render()
|
||||
{
|
||||
if (this._renderNeeded)
|
||||
{
|
||||
base.Invalidate();
|
||||
this._renderNeeded = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void timer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (this.OnDigitClick != null)
|
||||
{
|
||||
this.OnDigitClick(this, new FrequencyEditDigitClickEventArgs(this._isUpperHalf, MouseButtons.Left));
|
||||
}
|
||||
this._tickCount++;
|
||||
int tickCount = this._tickCount;
|
||||
if (tickCount <= 20)
|
||||
{
|
||||
if (tickCount == 10)
|
||||
{
|
||||
this._tickTimer.Interval = 200;
|
||||
return;
|
||||
}
|
||||
if (tickCount != 20)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this._tickTimer.Interval = 100;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tickCount == 50)
|
||||
{
|
||||
this._tickTimer.Interval = 50;
|
||||
return;
|
||||
}
|
||||
if (tickCount != 100)
|
||||
{
|
||||
return;
|
||||
}
|
||||
this._tickTimer.Interval = 20;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private const float MaskedDigitTransparency = 0.3f;
|
||||
|
||||
private bool _masked;
|
||||
|
||||
private int _displayedDigit;
|
||||
|
||||
private long _weight;
|
||||
|
||||
private bool _renderNeeded;
|
||||
|
||||
private bool _cursorInside;
|
||||
|
||||
private bool _highlight;
|
||||
|
||||
private int _lastMouseY;
|
||||
|
||||
private bool _lastIsUpperHalf;
|
||||
|
||||
private bool _isUpperHalf;
|
||||
|
||||
private int _tickCount;
|
||||
|
||||
private ImageList _imageList;
|
||||
|
||||
private readonly int _digitIndex;
|
||||
|
||||
private readonly Timer _tickTimer = new Timer();
|
||||
|
||||
private readonly ImageAttributes _maskedAttributes = new ImageAttributes();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace SDRSharp.FrequencyEdit
|
||||
{
|
||||
public class FrequencyEditDigitClickEventArgs
|
||||
{
|
||||
public FrequencyEditDigitClickEventArgs(bool isUpperHalf, MouseButtons button)
|
||||
{
|
||||
this.IsUpperHalf = isUpperHalf;
|
||||
this.Button = button;
|
||||
}
|
||||
|
||||
public bool IsUpperHalf;
|
||||
|
||||
public MouseButtons Button;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace SDRSharp.FrequencyEdit
|
||||
{
|
||||
internal sealed class FrequencyEditSeparator : UserControl, IRenderable
|
||||
{
|
||||
public Image Image
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._image;
|
||||
}
|
||||
set
|
||||
{
|
||||
this._image = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool Masked
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._masked;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (this._masked != value)
|
||||
{
|
||||
this._masked = value;
|
||||
this._renderNeeded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public FrequencyEditSeparator()
|
||||
{
|
||||
this.DoubleBuffered = true;
|
||||
base.UpdateStyles();
|
||||
ColorMatrix colorMatrix = new ColorMatrix();
|
||||
colorMatrix.Matrix33 = 0.3f;
|
||||
this._maskedAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
|
||||
}
|
||||
|
||||
public void Render()
|
||||
{
|
||||
if (this._renderNeeded)
|
||||
{
|
||||
base.Invalidate();
|
||||
this._renderNeeded = false;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
if (this._image != null)
|
||||
{
|
||||
ImageAttributes imageAttrs = (this._masked || !base.Parent.Enabled) ? this._maskedAttributes : null;
|
||||
e.Graphics.DrawImage(this._image, new Rectangle(0, 0, base.Width, base.Height), 0f, 0f, (float)this._image.Width, (float)this._image.Height, GraphicsUnit.Pixel, imageAttrs);
|
||||
}
|
||||
}
|
||||
|
||||
private const float MaskedDigitTransparency = 0.3f;
|
||||
|
||||
private Image _image;
|
||||
|
||||
private bool _masked;
|
||||
|
||||
private bool _renderNeeded;
|
||||
|
||||
private readonly ImageAttributes _maskedAttributes = new ImageAttributes();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
using System;
|
||||
|
||||
namespace SDRSharp.FrequencyEdit
|
||||
{
|
||||
internal interface IRenderable
|
||||
{
|
||||
void Render();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
using System;
|
||||
|
||||
namespace SDRSharp.FrequencyEdit
|
||||
{
|
||||
public delegate void OnDigitClickDelegate(object sender, FrequencyEditDigitClickEventArgs args);
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Security;
|
||||
using System.Security.Permissions;
|
||||
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: CompilationRelaxations(8)]
|
||||
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
|
||||
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
|
||||
[assembly: AssemblyTitle("Frequency Edit Control")]
|
||||
[assembly: AssemblyDescription("Frequency Edit Control")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("SDR#")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012 Youssef Touil, Ian Gilmour")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: ComVisible(false)]
|
||||
[assembly: Guid("300880ef-fb6f-41ec-b607-d468751fe0ad")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
|
||||
59
SDRSharp.FrequencyEdit/SDRSharp.FrequencyEdit/Properties/Resources.Designer.cs
generated
Normal file
59
SDRSharp.FrequencyEdit/SDRSharp.FrequencyEdit/Properties/Resources.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
using System;
|
||||
using System.CodeDom.Compiler;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace SDRSharp.FrequencyEdit.Properties
|
||||
{
|
||||
[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[DebuggerNonUserCode]
|
||||
[CompilerGenerated]
|
||||
internal class Resources
|
||||
{
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
||||
internal static ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Resources.resourceMan == null)
|
||||
{
|
||||
Resources.resourceMan = new ResourceManager("SDRSharp.FrequencyEdit.Properties.Resources", typeof(Resources).Assembly);
|
||||
}
|
||||
return Resources.resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
||||
internal static CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return Resources.resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
Resources.resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
internal static Bitmap Numbers
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Bitmap)Resources.ResourceManager.GetObject("Numbers", Resources.resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
private static ResourceManager resourceMan;
|
||||
|
||||
private static CultureInfo resourceCulture;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,177 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="Numbers" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAM8AAAAWCAYAAABnsMi4AAAABGdBTUEAALGPC/xhBQAAABp0RVh0U29m
|
||||
dHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAALqklEQVR4XtXcBawluRGF4QkzMzMzKszMzMykMEeh
|
||||
DSqkMDMzMyjMzMzMzDA532pKcloN7vvenVWO9Gtn+7rdbttll8vut2dExwnXD08O7w179/GF8Oxwy3DK
|
||||
cPDQq8OEk4Q7hEeG04Qeue884d7Bsz8Wqjz+7drdw+nDVHkOFy4V7hm80xvDH0Ll877wtOC9ThTW6B5B
|
||||
Hj8Op3ahQ8cO9exenhF6dKrwqfD9cEUXFnSk8KYw9swlLhnGVP1HnarbSv+b8OLw4HDBcOgwp6OGq4dH
|
||||
hdeGX4XK5/lBnzhDWNMPt6ZDhWuHj4a/hHrpIX8Lnw8MQcdc0sXDu8LXgvt/GM4clnSsoNJ0zHr2H8PP
|
||||
ws/DP/ddw3fCAWGsPAxdhVda5Xe/fPCPUNc/E24UehqEEXw6uPepYakzlHRw9/wr6BBVjjkeHZZ0/PDu
|
||||
IO/fh2uGJTEeHXrsmWOof/njEmGo84UPhLn+g5+Gx4Sp/nOm8M5Qz2vrqtoLXw63DfruQaZDhNuEKhRe
|
||||
Hx4Y7rIPI7fRpE3zoHD4MCf5viF8JLin13hOG6T/bXhuuF+4SjhHOHdQaRqgNS4zwSFDK/l4pjyMejcO
|
||||
7pcPbh3MSJUHLhqWdPNQneR0LnSq3utH4cqhyjGHWXtOOs8zgwFA3jcIw3oYkzS8gLFnjvHyIH+dWAdv
|
||||
ZTAxiPkd+s/9Q/UfbfPE0LbXvcKw48uHl1NpDKDuvVBQBu1lMGnzuVU4yGag8wajgYJ8NVw1GEkPFlqp
|
||||
bB2vDMHorxPNyT3yulxwT6/x6DA3CUZUeQzLQozezGK0kzd3xVTeinEfLchjqoLlww35SZCPmfLoYUre
|
||||
58NB2teFsbJNSSdw39fDCVzYoXS+Owaj85/DfcM2OtJJgzIr+9MDl7rkeZ7rNwZskBrrP+r5bOGzQdpv
|
||||
BTNx6bDhhcFvZp07hbl8PhGk5dXoB/tdCvzmUC9u1Fqq/PMHRuCeTwZ+7pJ0Tul7jUdn79XVgs4j/xu6
|
||||
sIG88yOCPDTcWcKULhCk4x7xy0s6sk6FKYOqeuByzBlor7jFvwzytAY8QtiG7hz+HjzHANrKMw0ifvtm
|
||||
OHGYE6OQFq37d/LwjeA6T2FpWXCNUGXatN13pHOFmnVMtUcMS9JJHhLcY7S7TljSWuNZIwv9LwX5cxU2
|
||||
lUW2PKC8YzKTcSWk+WKwbiB1wpV8QbDIPUYYU3UcrklPXc/pKOE9QX48ht6gxVrpxIzdc6zzhmoDD2YV
|
||||
s8Wcqi+gXZu119tBaUrHDBWUeI0L+1v3Cf8OCtAToSmJcNWLPsmFBW3TeMx8Ah3yf7ULG+pKod5pbEFM
|
||||
FsW1tuB/l3SYlwTXuTfczTGJnEmjE65x98ZkzVCBk8uGneY3JnlWvfw13CwM1c48nwu8mTkpq7RoB6nr
|
||||
hrpuUF+SAetFQXpBrG3NupMqHxPHdaFT3KqKfDCIJW3TeKxzKpRpcbqJdBIDiTwsiM8YhpLGrCINP5ub
|
||||
UeoxHq7hc4I0Hw98dx3AvcXc2qyVDqou5WWNZnZo8/Jv+e/UoMxubw2eY3Yfc9GVt4JJggbtOmYo5dFG
|
||||
0lqjtsEWIW7XITjQoxqMlM3adr/qK8HDf3Hg/63Tq0K97JK2aTzCy1UOgYlNxFi+G+Qx5b7qFJXmoUHn
|
||||
LOmwS8bTpvlQeHzg5olGFs8KDPRaQeRpSq2LKaxr9n9eqHz8W/4iURb7bVnXqNoNd3VhQicLbXmm1nNm
|
||||
MVsF0ilzG3jgqlUe1tU9KuPhttre2K+qwqrwtfLydf+StmU8Kqw2T0XApmZPIzEDEVlsuUzgiiiXoIP1
|
||||
n1FvbMQWmq+olg7Zqsd4dJSXhaqzOTyDC2QdJe9W1l0vDWP3DeFi6ljWgmvXWGZBRigfgYC5NZXZ5wGh
|
||||
wvfSGwRuug8urg3qXwd1aK02rCMGUy7x7VxYkPLZMJV+N9aQq+XBMIus1eNC3b+kbRmP/Se+uLyFtqdc
|
||||
nnZdNIUGndrj4U/XPob9jqF6jEfj6kD8dHsV1iy3D8L90MHsnJcfXzhF0RqQaFYFSH4XlMeelyCO+hA2
|
||||
fmyoYELxsLAUwWplsPlBcC+jb2eJMfndXk77zDHkKdQ81PFChZ8NhHMzLx05VKTYBvems+vGqhf6fzMe
|
||||
RmI/qp4vAjYnbgQ35i2BD++/sGfVHv24WzBLtTIL6dzSONojND5Uj/Eoc28I/qyh9q+UzyxZukhwHTZa
|
||||
5ySsXPlgTVDIyYm6b24dQwYX67maebhm7wgCOK8I6rpOZEAdCQq0g51/q/9K46iRNlaXInoGH56Gslwv
|
||||
8JYqrY3U/a56uGjJWj0h1P1L2k3j0ZlFverIj/DocHN0KA2jASyAW7h53DSBE3sGFXpvG1VI9P3Bsyz0
|
||||
GSIDa9F5yiWzV3HCsFOJ+P0pyNNMUq6k9ZBrAjbndGFB3KHvBfc4iTDmkg5lpq5jTQabuVHdjFOBFG4X
|
||||
V+rswfk0M53fzRLqhHfQhr2duGhVLmnt39hLk97MIj33zOaqdvJ7PfNiYUza0Uytf4xhtttYFTDQqdeq
|
||||
9d+XtJvGo7PXKPbt0I7Km0pDW+jK094Bgyk5yFjvyVAt6ocYdTWqNFwp+zlLR5eW1O6fCMWWy1VRKR2p
|
||||
5zBrG0ruCenqcFxK6W0YCyHPiXtXpzMMQkvvfeEgoin9w10YiKF5vraVZgxn8mpz+INhKljQ1uEYvYdu
|
||||
R9WGqteE+oxEtQboMbzdMB7PNBqb8v8TjKZG1Z6RtEe3CMpoQes0d6nKvgazggW/0W1Tta6gQa46SBmP
|
||||
+m/D5VNq8xE8WFpLOBrFyKQXFTRDz4kbKy2u4MKC2g6tjsYW+gyYkTNM9e80weWDgVM9+He527YYpvrA
|
||||
Vo2n3SR17qpXok1VADH+Je3UeKwVnPquEYsBOZqym6rzd1DekjCsmWQOvjof3b3C/iJPrrt3U3F3Kqom
|
||||
QGB2pHYzt2czsTUepyKWjMF6ovJ3bm5J7f5MO+hMaa0xD8VNtoZyv0Fl7n30Gy7kpSew2b+x2uM5Gmop
|
||||
okJmgDoIyPdU2UvaifEok47IHZIHH7in06xVO4K2xtOjnoDBWjGWtwd5tsde6mwdeo6xGNntXQ3zGZOR
|
||||
2qartGa2nm+v2nrrOZHO/XxlkH5tiFnfE8Z2L5dSGPwgkxd5W1AYx+R7Xt4izwjmnm0dDC2dIjwlCEdD
|
||||
5MZp5N1y1UpGqPo0wWcQwyP3S9qG8XBNat/D5yElbktF0ISplwY8YWFtK/3S2T9uVwUKBCnmDK1ktqlv
|
||||
bxwgbYMtY2rdQi7VmrYUaazwubD/0vpt62IwNfsI3fIzxyrAS+oUFSLs+SShtNZ4PF+YtfYqGI59jCWX
|
||||
YyiL16VPEvzGZWsPyBqB16jXeLgoGtwzpzqN0dUAZb0hP65qG1Xzu91+vwmd2x+aai+GVsEC78eFmZL0
|
||||
lda6bxgJm5LoYwVbrGG071RdG6ztW9UzuOK9EjWrqOdO15Oz2rt374HsEzdREAPq/n+kIWsqhA+NHM/n
|
||||
HhglRHSMXkYVha50PR/DldYYj8Kajus5sDZrP2KbYvhhmg7gmWMfw/mvTcr2Iz/rlbkONqVe47FAFejw
|
||||
TLOAIIVoYZXHiQL7UUsfjTFuLk+l0V6CJ9oK6lhebXtpY209JXVXaUVS18jso+7cq+zquu0/9mZsAfAc
|
||||
ai9Im/QOUu0m96Zt1K2B8SyeudM4w8+whQI1NIxadRDUmqP3M+zSGuMZi5C0n07PYWOu1dxn2P5bp5K9
|
||||
s3fnKk2NmnPqNR6zZ7tHoU51hmF5lJNrM1fPXEvrk7H2EjqWB6xzzE5DA2zF9fORm3zUl5PPa6TOfOlr
|
||||
H2ysPFytuu5dhfZ7v2cyW9dnICJsQuebtFG31hpPiYVLPPUHQJyInfuDG1PaqfH0IuLVSsfr+QMgDpfu
|
||||
5MvOXuPhRvmGRTROZx2Wp/6wSe8fWvHdkPbyDu0fSGn/sMnwHN6YuOo127WRvbVSh+rSs+f+AEhPYKrE
|
||||
eGo96m9VzA0Cu6Jl49mz578LaXeu1eI/rQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{A50690CF-7A7A-4B31-9A03-B3A2AF0AF0E0}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>SDRSharp.FrequencyEdit</RootNamespace>
|
||||
<AssemblyName>SDRSharp.FrequencyEdit</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AppDesigner Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="EntryMode.cs" />
|
||||
<Compile Include="FrequencyChangingEventArgs.cs" />
|
||||
<Compile Include="FrequencyEdit.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrequencyEditDigit.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrequencyEditDigitClickEventArgs.cs" />
|
||||
<Compile Include="FrequencyEditSeparator.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="IRenderable.cs" />
|
||||
<Compile Include="OnDigitClickDelegate.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
15
SDRSharp.PanView/Properties/AssemblyInfo.cs
Normal file
15
SDRSharp.PanView/Properties/AssemblyInfo.cs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Security.Permissions;
|
||||
|
||||
[assembly: CompilationRelaxations(8)]
|
||||
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
|
||||
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
|
||||
[assembly: AssemblyTitle("Panoramic Spectrum Viewer")]
|
||||
[assembly: AssemblyDescription("Panoramic Spectrum Viewer")]
|
||||
[assembly: AssemblyProduct("SDR#")]
|
||||
[assembly: AssemblyCopyright("Copyright © Youssef TOUIL 2012")]
|
||||
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
|
||||
[assembly: AssemblyVersion("0.0.0.0")]
|
||||
73
SDRSharp.PanView/SDRSharp.PanView.csproj
Normal file
73
SDRSharp.PanView/SDRSharp.PanView.csproj
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{040E3622-194B-4FA6-9CBB-1A22BD52A13D}</ProjectGuid>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<OutputType>Library</OutputType>
|
||||
<AssemblyName>SDRSharp.PanView</AssemblyName>
|
||||
<TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
|
||||
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="SDRSharp.Radio">
|
||||
<HintPath>..\SDRSharp.Radio\bin\Debug\SDRSharp.Radio.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms">
|
||||
<HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System">
|
||||
<HintPath>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing">
|
||||
<HintPath>C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SDRSharp.PanView\BandType.cs" />
|
||||
<Compile Include="SDRSharp.PanView\BandwidthEventArgs.cs" />
|
||||
<Compile Include="SDRSharp.PanView\CustomPaintEventArgs.cs" />
|
||||
<Compile Include="SDRSharp.PanView\CustomPaintEventHandler.cs" />
|
||||
<Compile Include="SDRSharp.PanView\FrequencyChangeSource.cs" />
|
||||
<Compile Include="SDRSharp.PanView\FrequencyEventArgs.cs" />
|
||||
<Compile Include="SDRSharp.PanView\GradientDialog.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SDRSharp.PanView\LineInsertEventArgs.cs" />
|
||||
<Compile Include="SDRSharp.PanView\LineInsertEventHandler.cs" />
|
||||
<Compile Include="SDRSharp.PanView\ManualBandwidthChangeEventHandler.cs" />
|
||||
<Compile Include="SDRSharp.PanView\ManualFrequencyChangeEventHandler.cs" />
|
||||
<Compile Include="SDRSharp.PanView\PeakDetector.cs" />
|
||||
<Compile Include="SDRSharp.PanView\SpectrumAnalyzer.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SDRSharp.PanView\SpectrumStyle.cs" />
|
||||
<Compile Include="SDRSharp.PanView\Waterfall.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="SDRSharp.PanView\GradientDialog.resx">
|
||||
<DependentUpon>GradientDialog.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
25
SDRSharp.PanView/SDRSharp.PanView.sln
Normal file
25
SDRSharp.PanView/SDRSharp.PanView.sln
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27428.2015
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SDRSharp.PanView", "SDRSharp.PanView.csproj", "{040E3622-194B-4FA6-9CBB-1A22BD52A13D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{040E3622-194B-4FA6-9CBB-1A22BD52A13D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{040E3622-194B-4FA6-9CBB-1A22BD52A13D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{040E3622-194B-4FA6-9CBB-1A22BD52A13D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{040E3622-194B-4FA6-9CBB-1A22BD52A13D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {A133AD22-210D-4E51-898D-75EF97AE9732}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
9
SDRSharp.PanView/SDRSharp.PanView/BandType.cs
Normal file
9
SDRSharp.PanView/SDRSharp.PanView/BandType.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
namespace SDRSharp.PanView
|
||||
{
|
||||
public enum BandType
|
||||
{
|
||||
Lower,
|
||||
Upper,
|
||||
Center
|
||||
}
|
||||
}
|
||||
38
SDRSharp.PanView/SDRSharp.PanView/BandwidthEventArgs.cs
Normal file
38
SDRSharp.PanView/SDRSharp.PanView/BandwidthEventArgs.cs
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
using System;
|
||||
|
||||
namespace SDRSharp.PanView
|
||||
{
|
||||
public class BandwidthEventArgs : EventArgs
|
||||
{
|
||||
public int Bandwidth
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public int Offset
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public bool Cancel
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public BandType Side
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public BandwidthEventArgs(int bandwidth, int offset, BandType side)
|
||||
{
|
||||
this.Bandwidth = bandwidth;
|
||||
this.Offset = offset;
|
||||
this.Side = side;
|
||||
}
|
||||
}
|
||||
}
|
||||
38
SDRSharp.PanView/SDRSharp.PanView/CustomPaintEventArgs.cs
Normal file
38
SDRSharp.PanView/SDRSharp.PanView/CustomPaintEventArgs.cs
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace SDRSharp.PanView
|
||||
{
|
||||
public class CustomPaintEventArgs : EventArgs
|
||||
{
|
||||
public Graphics Graphics
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public Point CursorPosition
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public string CustomTitle
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public bool Cancel
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public CustomPaintEventArgs(Graphics graphics, Point cursorPosition)
|
||||
{
|
||||
this.Graphics = graphics;
|
||||
this.CursorPosition = cursorPosition;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
namespace SDRSharp.PanView
|
||||
{
|
||||
public delegate void CustomPaintEventHandler(object sender, CustomPaintEventArgs e);
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
namespace SDRSharp.PanView
|
||||
{
|
||||
public enum FrequencyChangeSource
|
||||
{
|
||||
Scroll,
|
||||
Drag,
|
||||
Click
|
||||
}
|
||||
}
|
||||
31
SDRSharp.PanView/SDRSharp.PanView/FrequencyEventArgs.cs
Normal file
31
SDRSharp.PanView/SDRSharp.PanView/FrequencyEventArgs.cs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
using System;
|
||||
|
||||
namespace SDRSharp.PanView
|
||||
{
|
||||
public class FrequencyEventArgs : EventArgs
|
||||
{
|
||||
public long Frequency
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public FrequencyChangeSource Source
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public bool Cancel
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public FrequencyEventArgs(long frequency, FrequencyChangeSource source)
|
||||
{
|
||||
this.Frequency = frequency;
|
||||
this.Source = source;
|
||||
}
|
||||
}
|
||||
}
|
||||
269
SDRSharp.PanView/SDRSharp.PanView/GradientDialog.cs
Normal file
269
SDRSharp.PanView/SDRSharp.PanView/GradientDialog.cs
Normal file
|
|
@ -0,0 +1,269 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace SDRSharp.PanView
|
||||
{
|
||||
public class GradientDialog : Form
|
||||
{
|
||||
private IContainer components;
|
||||
|
||||
private ListBox colorListBox;
|
||||
|
||||
private Button upButton;
|
||||
|
||||
private Button downButton;
|
||||
|
||||
private PictureBox gradientPictureBox;
|
||||
|
||||
private Button addButton;
|
||||
|
||||
private Button deleteButton;
|
||||
|
||||
private Button cancelButton;
|
||||
|
||||
private Button okButton;
|
||||
|
||||
private ColorDialog colorDialog;
|
||||
|
||||
private GradientDialog()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
}
|
||||
|
||||
public static ColorBlend GetGradient(ColorBlend originalBlend)
|
||||
{
|
||||
using (GradientDialog gradientDialog = new GradientDialog())
|
||||
{
|
||||
gradientDialog.SetColorBlend(originalBlend);
|
||||
if (gradientDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
return gradientDialog.GetColorBlend();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private ColorBlend GetColorBlend()
|
||||
{
|
||||
ColorBlend colorBlend = new ColorBlend(this.colorListBox.Items.Count);
|
||||
float num = 1f / (float)(colorBlend.Positions.Length - 1);
|
||||
for (int i = 0; i < colorBlend.Positions.Length; i++)
|
||||
{
|
||||
colorBlend.Positions[i] = (float)i * num;
|
||||
colorBlend.Colors[i] = (Color)this.colorListBox.Items[i];
|
||||
}
|
||||
return colorBlend;
|
||||
}
|
||||
|
||||
private void SetColorBlend(ColorBlend colorBlend)
|
||||
{
|
||||
for (int i = 0; i < colorBlend.Positions.Length; i++)
|
||||
{
|
||||
this.colorListBox.Items.Add(colorBlend.Colors[i]);
|
||||
}
|
||||
}
|
||||
|
||||
private void colorListBox_DrawItem(object sender, DrawItemEventArgs e)
|
||||
{
|
||||
if (e.Index >= 0)
|
||||
{
|
||||
Color color = (Color)this.colorListBox.Items[e.Index];
|
||||
Rectangle bounds;
|
||||
if ((e.State & DrawItemState.Selected) == DrawItemState.None)
|
||||
{
|
||||
using (SolidBrush solidBrush = new SolidBrush(color))
|
||||
{
|
||||
Graphics graphics = e.Graphics;
|
||||
SolidBrush brush = solidBrush;
|
||||
bounds = e.Bounds;
|
||||
int x = bounds.Left + 1;
|
||||
bounds = e.Bounds;
|
||||
int y = bounds.Top + 1;
|
||||
bounds = e.Bounds;
|
||||
int width = bounds.Width - 2;
|
||||
bounds = e.Bounds;
|
||||
graphics.FillRectangle(brush, x, y, width, bounds.Height - 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using (HatchBrush hatchBrush = new HatchBrush(HatchStyle.Percent70, color, Color.Gray))
|
||||
{
|
||||
Graphics graphics2 = e.Graphics;
|
||||
HatchBrush brush2 = hatchBrush;
|
||||
bounds = e.Bounds;
|
||||
int x2 = bounds.Left + 1;
|
||||
bounds = e.Bounds;
|
||||
int y2 = bounds.Top + 1;
|
||||
bounds = e.Bounds;
|
||||
int width2 = bounds.Width - 2;
|
||||
bounds = e.Bounds;
|
||||
graphics2.FillRectangle(brush2, x2, y2, width2, bounds.Height - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void upButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
int selectedIndex = this.colorListBox.SelectedIndex;
|
||||
if (selectedIndex > 0)
|
||||
{
|
||||
object item = this.colorListBox.Items[selectedIndex];
|
||||
this.colorListBox.Items.RemoveAt(selectedIndex);
|
||||
this.colorListBox.Items.Insert(selectedIndex - 1, item);
|
||||
this.colorListBox.SelectedIndex = selectedIndex - 1;
|
||||
this.gradientPictureBox.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void downButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
int selectedIndex = this.colorListBox.SelectedIndex;
|
||||
if (selectedIndex >= 0 && selectedIndex < this.colorListBox.Items.Count - 1)
|
||||
{
|
||||
object item = this.colorListBox.Items[selectedIndex];
|
||||
this.colorListBox.Items.RemoveAt(selectedIndex);
|
||||
this.colorListBox.Items.Insert(selectedIndex + 1, item);
|
||||
this.colorListBox.SelectedIndex = selectedIndex + 1;
|
||||
this.gradientPictureBox.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void addButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (this.colorDialog.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
this.colorListBox.Items.Add(this.colorDialog.Color);
|
||||
this.gradientPictureBox.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
int selectedIndex = this.colorListBox.SelectedIndex;
|
||||
if (selectedIndex >= 0 && this.colorListBox.Items.Count > 2)
|
||||
{
|
||||
this.colorListBox.Items.RemoveAt(selectedIndex);
|
||||
this.gradientPictureBox.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void gradientPictureBox_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
ColorBlend colorBlend = this.GetColorBlend();
|
||||
using (LinearGradientBrush linearGradientBrush = new LinearGradientBrush(this.gradientPictureBox.ClientRectangle, Color.White, Color.Black, LinearGradientMode.Vertical))
|
||||
{
|
||||
linearGradientBrush.InterpolationColors = colorBlend;
|
||||
e.Graphics.FillRectangle(linearGradientBrush, e.ClipRectangle);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && this.components != null)
|
||||
{
|
||||
this.components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.colorListBox = new ListBox();
|
||||
this.upButton = new Button();
|
||||
this.downButton = new Button();
|
||||
this.gradientPictureBox = new PictureBox();
|
||||
this.addButton = new Button();
|
||||
this.deleteButton = new Button();
|
||||
this.cancelButton = new Button();
|
||||
this.okButton = new Button();
|
||||
this.colorDialog = new ColorDialog();
|
||||
((ISupportInitialize)this.gradientPictureBox).BeginInit();
|
||||
base.SuspendLayout();
|
||||
this.colorListBox.DrawMode = DrawMode.OwnerDrawVariable;
|
||||
this.colorListBox.FormattingEnabled = true;
|
||||
this.colorListBox.Location = new Point(12, 12);
|
||||
this.colorListBox.Name = "colorListBox";
|
||||
this.colorListBox.Size = new Size(107, 238);
|
||||
this.colorListBox.TabIndex = 0;
|
||||
this.colorListBox.DrawItem += this.colorListBox_DrawItem;
|
||||
this.upButton.Location = new Point(164, 12);
|
||||
this.upButton.Name = "upButton";
|
||||
this.upButton.Size = new Size(75, 23);
|
||||
this.upButton.TabIndex = 1;
|
||||
this.upButton.Text = "Up";
|
||||
this.upButton.UseVisualStyleBackColor = true;
|
||||
this.upButton.Click += this.upButton_Click;
|
||||
this.downButton.Location = new Point(164, 41);
|
||||
this.downButton.Name = "downButton";
|
||||
this.downButton.Size = new Size(75, 23);
|
||||
this.downButton.TabIndex = 2;
|
||||
this.downButton.Text = "Down";
|
||||
this.downButton.UseVisualStyleBackColor = true;
|
||||
this.downButton.Click += this.downButton_Click;
|
||||
this.gradientPictureBox.BorderStyle = BorderStyle.FixedSingle;
|
||||
this.gradientPictureBox.Location = new Point(125, 12);
|
||||
this.gradientPictureBox.Name = "gradientPictureBox";
|
||||
this.gradientPictureBox.Size = new Size(33, 238);
|
||||
this.gradientPictureBox.TabIndex = 3;
|
||||
this.gradientPictureBox.TabStop = false;
|
||||
this.gradientPictureBox.Paint += this.gradientPictureBox_Paint;
|
||||
this.addButton.Location = new Point(164, 70);
|
||||
this.addButton.Name = "addButton";
|
||||
this.addButton.Size = new Size(75, 23);
|
||||
this.addButton.TabIndex = 3;
|
||||
this.addButton.Text = "Add";
|
||||
this.addButton.UseVisualStyleBackColor = true;
|
||||
this.addButton.Click += this.addButton_Click;
|
||||
this.deleteButton.Location = new Point(164, 99);
|
||||
this.deleteButton.Name = "deleteButton";
|
||||
this.deleteButton.Size = new Size(75, 23);
|
||||
this.deleteButton.TabIndex = 4;
|
||||
this.deleteButton.Text = "Delete";
|
||||
this.deleteButton.UseVisualStyleBackColor = true;
|
||||
this.deleteButton.Click += this.deleteButton_Click;
|
||||
this.cancelButton.DialogResult = DialogResult.Cancel;
|
||||
this.cancelButton.Location = new Point(164, 227);
|
||||
this.cancelButton.Name = "cancelButton";
|
||||
this.cancelButton.Size = new Size(75, 23);
|
||||
this.cancelButton.TabIndex = 6;
|
||||
this.cancelButton.Text = "Cancel";
|
||||
this.cancelButton.UseVisualStyleBackColor = true;
|
||||
this.okButton.DialogResult = DialogResult.OK;
|
||||
this.okButton.Location = new Point(164, 198);
|
||||
this.okButton.Name = "okButton";
|
||||
this.okButton.Size = new Size(75, 23);
|
||||
this.okButton.TabIndex = 5;
|
||||
this.okButton.Text = "OK";
|
||||
this.okButton.UseVisualStyleBackColor = true;
|
||||
this.colorDialog.AnyColor = true;
|
||||
this.colorDialog.FullOpen = true;
|
||||
base.AcceptButton = this.okButton;
|
||||
base.AutoScaleDimensions = new SizeF(6f, 13f);
|
||||
base.AutoScaleMode = AutoScaleMode.Font;
|
||||
base.CancelButton = this.cancelButton;
|
||||
base.ClientSize = new Size(251, 262);
|
||||
base.Controls.Add(this.okButton);
|
||||
base.Controls.Add(this.cancelButton);
|
||||
base.Controls.Add(this.deleteButton);
|
||||
base.Controls.Add(this.addButton);
|
||||
base.Controls.Add(this.gradientPictureBox);
|
||||
base.Controls.Add(this.downButton);
|
||||
base.Controls.Add(this.upButton);
|
||||
base.Controls.Add(this.colorListBox);
|
||||
base.FormBorderStyle = FormBorderStyle.FixedDialog;
|
||||
base.MaximizeBox = false;
|
||||
base.MinimizeBox = false;
|
||||
base.Name = "GradientDialog";
|
||||
base.ShowInTaskbar = false;
|
||||
base.StartPosition = FormStartPosition.CenterParent;
|
||||
this.Text = "Gradient Editor";
|
||||
((ISupportInitialize)this.gradientPictureBox).EndInit();
|
||||
base.ResumeLayout(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
120
SDRSharp.PanView/SDRSharp.PanView/GradientDialog.resx
Normal file
120
SDRSharp.PanView/SDRSharp.PanView/GradientDialog.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
25
SDRSharp.PanView/SDRSharp.PanView/LineInsertEventArgs.cs
Normal file
25
SDRSharp.PanView/SDRSharp.PanView/LineInsertEventArgs.cs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
using System;
|
||||
|
||||
namespace SDRSharp.PanView
|
||||
{
|
||||
public class LineInsertEventArgs : EventArgs
|
||||
{
|
||||
public unsafe int* RgbBuffer
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public int Length
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public unsafe LineInsertEventArgs(int* rgbBuffer, int length)
|
||||
{
|
||||
rgbBuffer = this.RgbBuffer;
|
||||
this.Length = length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
namespace SDRSharp.PanView
|
||||
{
|
||||
public delegate void LineInsertEventHandler(object sender, LineInsertEventArgs e);
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
namespace SDRSharp.PanView
|
||||
{
|
||||
public delegate void ManualBandwidthChangeEventHandler(object sender, BandwidthEventArgs e);
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
namespace SDRSharp.PanView
|
||||
{
|
||||
public delegate void ManualFrequencyChangeEventHandler(object sender, FrequencyEventArgs e);
|
||||
}
|
||||
53
SDRSharp.PanView/SDRSharp.PanView/PeakDetector.cs
Normal file
53
SDRSharp.PanView/SDRSharp.PanView/PeakDetector.cs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SDRSharp.PanView
|
||||
{
|
||||
public sealed class PeakDetector
|
||||
{
|
||||
private const byte Threshold = 20;
|
||||
|
||||
public static void GetPeaks(byte[] buffer, List<int> peaks, int windowSize)
|
||||
{
|
||||
windowSize |= 1;
|
||||
int halfSize = windowSize / 2;
|
||||
float num = 1f / (float)windowSize;
|
||||
peaks.Clear();
|
||||
for (int i = 0; i < buffer.Length; i++)
|
||||
{
|
||||
int num2 = 0;
|
||||
int max_index = i;
|
||||
for (int j = 0; j < windowSize; j++)
|
||||
{
|
||||
int num3 = i + j - halfSize;
|
||||
if (num3 < 0)
|
||||
{
|
||||
num3 = 0;
|
||||
}
|
||||
if (num3 >= buffer.Length)
|
||||
{
|
||||
num3 = buffer.Length - 1;
|
||||
}
|
||||
if (buffer[num3] >= buffer[max_index])
|
||||
{
|
||||
max_index = num3;
|
||||
}
|
||||
num2 += buffer[num3];
|
||||
}
|
||||
float num4 = (float)num2 * num;
|
||||
if ((float)(int)buffer[max_index] - num4 > 20f && !peaks.Exists(delegate(int x)
|
||||
{
|
||||
if (Math.Abs(max_index - x) <= halfSize)
|
||||
{
|
||||
return buffer[x] > buffer[max_index];
|
||||
}
|
||||
return false;
|
||||
}))
|
||||
{
|
||||
peaks.RemoveAll((int x) => Math.Abs(max_index - x) <= halfSize);
|
||||
peaks.Add(max_index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1730
SDRSharp.PanView/SDRSharp.PanView/SpectrumAnalyzer.cs
Normal file
1730
SDRSharp.PanView/SDRSharp.PanView/SpectrumAnalyzer.cs
Normal file
File diff suppressed because it is too large
Load diff
12
SDRSharp.PanView/SDRSharp.PanView/SpectrumStyle.cs
Normal file
12
SDRSharp.PanView/SDRSharp.PanView/SpectrumStyle.cs
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
namespace SDRSharp.PanView
|
||||
{
|
||||
public enum SpectrumStyle
|
||||
{
|
||||
Dots,
|
||||
SimpleCurve,
|
||||
SolidFill,
|
||||
StaticGradient,
|
||||
DynamicGradient,
|
||||
MinMax
|
||||
}
|
||||
}
|
||||
1280
SDRSharp.PanView/SDRSharp.PanView/Waterfall.cs
Normal file
1280
SDRSharp.PanView/SDRSharp.PanView/Waterfall.cs
Normal file
File diff suppressed because it is too large
Load diff
0
SDRSharp.PanView/refs Radio.txt
Normal file
0
SDRSharp.PanView/refs Radio.txt
Normal file
8
SDRSharp.Radio/PortAudioSharp/PaDeviceIndex.cs
Normal file
8
SDRSharp.Radio/PortAudioSharp/PaDeviceIndex.cs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
namespace PortAudioSharp
|
||||
{
|
||||
internal enum PaDeviceIndex
|
||||
{
|
||||
PaNoDevice = -1,
|
||||
PaUseHostApiSpecificDeviceSpecification = -2
|
||||
}
|
||||
}
|
||||
33
SDRSharp.Radio/PortAudioSharp/PaDeviceInfo.cs
Normal file
33
SDRSharp.Radio/PortAudioSharp/PaDeviceInfo.cs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace PortAudioSharp
|
||||
{
|
||||
internal struct PaDeviceInfo
|
||||
{
|
||||
public int structVersion;
|
||||
|
||||
[MarshalAs(UnmanagedType.LPStr)]
|
||||
public string name;
|
||||
|
||||
public int hostApi;
|
||||
|
||||
public int maxInputChannels;
|
||||
|
||||
public int maxOutputChannels;
|
||||
|
||||
public double defaultLowInputLatency;
|
||||
|
||||
public double defaultLowOutputLatency;
|
||||
|
||||
public double defaultHighInputLatency;
|
||||
|
||||
public double defaultHighOutputLatency;
|
||||
|
||||
public double defaultSampleRate;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return "[" + ((object)this).GetType().Name + "]\nname: " + this.name + "\nhostApi: " + this.hostApi + "\nmaxInputChannels: " + this.maxInputChannels + "\nmaxOutputChannels: " + this.maxOutputChannels + "\ndefaultLowInputLatency: " + this.defaultLowInputLatency + "\ndefaultLowOutputLatency: " + this.defaultLowOutputLatency + "\ndefaultHighInputLatency: " + this.defaultHighInputLatency + "\ndefaultHighOutputLatency: " + this.defaultHighOutputLatency + "\ndefaultSampleRate: " + this.defaultSampleRate;
|
||||
}
|
||||
}
|
||||
}
|
||||
36
SDRSharp.Radio/PortAudioSharp/PaError.cs
Normal file
36
SDRSharp.Radio/PortAudioSharp/PaError.cs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
namespace PortAudioSharp
|
||||
{
|
||||
internal enum PaError
|
||||
{
|
||||
paNoError,
|
||||
paNotInitialized = -10000,
|
||||
paUnanticipatedHostError,
|
||||
paInvalidChannelCount,
|
||||
paInvalidSampleRate,
|
||||
paInvalidDevice,
|
||||
paInvalidFlag,
|
||||
paSampleFormatNotSupported,
|
||||
paBadIODeviceCombination,
|
||||
paInsufficientMemory,
|
||||
paBufferTooBig,
|
||||
paBufferTooSmall,
|
||||
paNullCallback,
|
||||
paBadStreamPtr,
|
||||
paTimedOut,
|
||||
paInternalError,
|
||||
paDeviceUnavailable,
|
||||
paIncompatibleHostApiSpecificStreamInfo,
|
||||
paStreamIsStopped,
|
||||
paStreamIsNotStopped,
|
||||
paInputOverflowed,
|
||||
paOutputUnderflowed,
|
||||
paHostApiNotFound,
|
||||
paInvalidHostApi,
|
||||
paCanNotReadFromACallbackStream,
|
||||
paCanNotWriteToACallbackStream,
|
||||
paCanNotReadFromAnOutputOnlyStream,
|
||||
paCanNotWriteToAnInputOnlyStream,
|
||||
paIncompatibleStreamHostApi,
|
||||
paBadBufferPtr
|
||||
}
|
||||
}
|
||||
25
SDRSharp.Radio/PortAudioSharp/PaHostApiInfo.cs
Normal file
25
SDRSharp.Radio/PortAudioSharp/PaHostApiInfo.cs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace PortAudioSharp
|
||||
{
|
||||
internal struct PaHostApiInfo
|
||||
{
|
||||
public int structVersion;
|
||||
|
||||
public PaHostApiTypeId type;
|
||||
|
||||
[MarshalAs(UnmanagedType.LPStr)]
|
||||
public string name;
|
||||
|
||||
public int deviceCount;
|
||||
|
||||
public int defaultInputDevice;
|
||||
|
||||
public int defaultOutputDevice;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return "[" + ((object)this).GetType().Name + "]\nstructVersion: " + this.structVersion + "\ntype: " + this.type + "\nname: " + this.name + "\ndeviceCount: " + this.deviceCount + "\ndefaultInputDevice: " + this.defaultInputDevice + "\ndefaultOutputDevice: " + this.defaultOutputDevice;
|
||||
}
|
||||
}
|
||||
}
|
||||
20
SDRSharp.Radio/PortAudioSharp/PaHostApiTypeId.cs
Normal file
20
SDRSharp.Radio/PortAudioSharp/PaHostApiTypeId.cs
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
namespace PortAudioSharp
|
||||
{
|
||||
internal enum PaHostApiTypeId : uint
|
||||
{
|
||||
paInDevelopment,
|
||||
paDirectSound,
|
||||
paMME,
|
||||
paASIO,
|
||||
paSoundManager,
|
||||
paCoreAudio,
|
||||
paOSS = 7u,
|
||||
paALSA,
|
||||
paAL,
|
||||
paBeOS,
|
||||
paWDMKS,
|
||||
paJACK,
|
||||
paWASAPI,
|
||||
paAudioScienceHPI
|
||||
}
|
||||
}
|
||||
19
SDRSharp.Radio/PortAudioSharp/PaHostErrorInfo.cs
Normal file
19
SDRSharp.Radio/PortAudioSharp/PaHostErrorInfo.cs
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace PortAudioSharp
|
||||
{
|
||||
internal struct PaHostErrorInfo
|
||||
{
|
||||
public PaHostApiTypeId hostApiType;
|
||||
|
||||
public int errorCode;
|
||||
|
||||
[MarshalAs(UnmanagedType.LPStr)]
|
||||
public string errorText;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return "[" + ((object)this).GetType().Name + "]\nhostApiType: " + this.hostApiType + "\nerrorCode: " + this.errorCode + "\nerrorText: " + this.errorText;
|
||||
}
|
||||
}
|
||||
}
|
||||
14
SDRSharp.Radio/PortAudioSharp/PaSampleFormat.cs
Normal file
14
SDRSharp.Radio/PortAudioSharp/PaSampleFormat.cs
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
namespace PortAudioSharp
|
||||
{
|
||||
internal enum PaSampleFormat : uint
|
||||
{
|
||||
PaFloat32 = 1u,
|
||||
PaInt32,
|
||||
PaInt24 = 4u,
|
||||
PaInt16 = 8u,
|
||||
PaInt8 = 0x10,
|
||||
PaUInt8 = 0x20,
|
||||
PaCustomFormat = 0x10000,
|
||||
PaNonInterleaved = 0x80000000
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace PortAudioSharp
|
||||
{
|
||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||
internal unsafe delegate PaStreamCallbackResult PaStreamCallbackDelegate(float* input, float* output, uint frameCount, ref PaStreamCallbackTimeInfo timeInfo, PaStreamCallbackFlags statusFlags, IntPtr userData);
|
||||
}
|
||||
11
SDRSharp.Radio/PortAudioSharp/PaStreamCallbackFlags.cs
Normal file
11
SDRSharp.Radio/PortAudioSharp/PaStreamCallbackFlags.cs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
namespace PortAudioSharp
|
||||
{
|
||||
internal enum PaStreamCallbackFlags : uint
|
||||
{
|
||||
PaInputUnderflow = 1u,
|
||||
PaInputOverflow,
|
||||
PaOutputUnderflow = 4u,
|
||||
PaOutputOverflow = 8u,
|
||||
PaPrimingOutput = 0x10
|
||||
}
|
||||
}
|
||||
9
SDRSharp.Radio/PortAudioSharp/PaStreamCallbackResult.cs
Normal file
9
SDRSharp.Radio/PortAudioSharp/PaStreamCallbackResult.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
namespace PortAudioSharp
|
||||
{
|
||||
internal enum PaStreamCallbackResult : uint
|
||||
{
|
||||
PaContinue,
|
||||
PaComplete,
|
||||
PaAbort
|
||||
}
|
||||
}
|
||||
16
SDRSharp.Radio/PortAudioSharp/PaStreamCallbackTimeInfo.cs
Normal file
16
SDRSharp.Radio/PortAudioSharp/PaStreamCallbackTimeInfo.cs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
namespace PortAudioSharp
|
||||
{
|
||||
internal struct PaStreamCallbackTimeInfo
|
||||
{
|
||||
public double inputBufferAdcTime;
|
||||
|
||||
public double currentTime;
|
||||
|
||||
public double outputBufferDacTime;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return "[" + ((object)this).GetType().Name + "]\ncurrentTime: " + this.currentTime + "\ninputBufferAdcTime: " + this.inputBufferAdcTime + "\noutputBufferDacTime: " + this.outputBufferDacTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue