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