├── EasyCPDLC ├── Artboard 1.ico ├── EasyCPDLC.zip ├── EZCPDLCIcon_64.ico ├── Resources │ ├── Oxygen-Bold.ttf │ ├── Stretchboard.png │ ├── notification.wav │ ├── B612Mono-Bold.ttf │ ├── Oxygen-Regular.ttf │ ├── B612Mono-Regular.ttf │ └── cog-wheel-gear-setting.png ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Settings.settings │ ├── Resources.Designer.cs │ ├── Settings.Designer.cs │ └── Resources.resx ├── CustomUI.cs ├── CPDLCMessage.cs ├── Contract.cs ├── App.config ├── FSUIPCData.cs ├── SimbriefJSON.cs ├── FlashWindow.cs ├── DataEntry.cs ├── UITextBox.cs ├── SettingsForm.resx ├── EasyCPDLC.csproj ├── VATSIMJSON.cs ├── SettingsForm.cs ├── SettingsForm.Designer.cs ├── DataEntry.resx ├── RequestForm.resx ├── TelexForm.cs ├── TelexForm.resx ├── MainForm.resx ├── DataEntry.Designer.cs ├── TelexForm.Designer.cs └── MainForm.Designer.cs ├── EasyCPDLC.sln ├── README.md ├── .gitattributes └── .gitignore /EasyCPDLC/Artboard 1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quassbutreally/EasyCPDLC/HEAD/EasyCPDLC/Artboard 1.ico -------------------------------------------------------------------------------- /EasyCPDLC/EasyCPDLC.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quassbutreally/EasyCPDLC/HEAD/EasyCPDLC/EasyCPDLC.zip -------------------------------------------------------------------------------- /EasyCPDLC/EZCPDLCIcon_64.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quassbutreally/EasyCPDLC/HEAD/EasyCPDLC/EZCPDLCIcon_64.ico -------------------------------------------------------------------------------- /EasyCPDLC/Resources/Oxygen-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quassbutreally/EasyCPDLC/HEAD/EasyCPDLC/Resources/Oxygen-Bold.ttf -------------------------------------------------------------------------------- /EasyCPDLC/Resources/Stretchboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quassbutreally/EasyCPDLC/HEAD/EasyCPDLC/Resources/Stretchboard.png -------------------------------------------------------------------------------- /EasyCPDLC/Resources/notification.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quassbutreally/EasyCPDLC/HEAD/EasyCPDLC/Resources/notification.wav -------------------------------------------------------------------------------- /EasyCPDLC/Resources/B612Mono-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quassbutreally/EasyCPDLC/HEAD/EasyCPDLC/Resources/B612Mono-Bold.ttf -------------------------------------------------------------------------------- /EasyCPDLC/Resources/Oxygen-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quassbutreally/EasyCPDLC/HEAD/EasyCPDLC/Resources/Oxygen-Regular.ttf -------------------------------------------------------------------------------- /EasyCPDLC/Resources/B612Mono-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quassbutreally/EasyCPDLC/HEAD/EasyCPDLC/Resources/B612Mono-Regular.ttf -------------------------------------------------------------------------------- /EasyCPDLC/Resources/cog-wheel-gear-setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quassbutreally/EasyCPDLC/HEAD/EasyCPDLC/Resources/cog-wheel-gear-setting.png -------------------------------------------------------------------------------- /EasyCPDLC.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30523.141 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCPDLC", "EasyCPDLC\EasyCPDLC.csproj", "{B9CA396A-4CB3-4D9A-B985-946443322AB9}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B0FC0D1C-127C-4DC1-B043-F51B8A699CA5}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {B9CA396A-4CB3-4D9A-B985-946443322AB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {B9CA396A-4CB3-4D9A-B985-946443322AB9}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {B9CA396A-4CB3-4D9A-B985-946443322AB9}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {B9CA396A-4CB3-4D9A-B985-946443322AB9}.Release|Any CPU.Build.0 = Release|Any CPU 20 | EndGlobalSection 21 | GlobalSection(SolutionProperties) = preSolution 22 | HideSolutionNode = FALSE 23 | EndGlobalSection 24 | GlobalSection(ExtensibilityGlobals) = postSolution 25 | SolutionGuid = {668915C8-639F-4DDB-BC56-901E602F30BE} 26 | EndGlobalSection 27 | EndGlobal 28 | -------------------------------------------------------------------------------- /EasyCPDLC/Program.cs: -------------------------------------------------------------------------------- 1 | /* EASYCPDLC: CPDLC Client for the VATSIM Network 2 | Copyright (C) 2021 Joshua Seagrave joshseagrave@googlemail.com 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | 18 | 19 | using System; 20 | using System.Windows.Forms; 21 | 22 | namespace EasyCPDLC 23 | { 24 | static class Program 25 | { 26 | /// 27 | /// The main entry point for the application. 28 | /// 29 | [STAThread] 30 | static void Main() 31 | { 32 | Application.EnableVisualStyles(); 33 | Application.SetHighDpiMode(HighDpiMode.SystemAware); 34 | Application.SetCompatibleTextRenderingDefault(false); 35 | Application.Run(new MainForm()); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EasyCPDLC 2 | Making CPDLC actually usable for pilots on VATSIM 3 | 4 | # What is EasyCPDLC? 5 | EasyCPDLC is a third-party CPDLC client designed for use with the Hoppie ACARS network and VATSIM. It allows users to communicate with ATC and other CPDLC-equipped aircraft even when not using an aircraft that natively supports CPDLC. 6 | 7 | # How does it work? 8 | The program requires only your VATSIM CID and Hoppie logon code. It uses this information to query the network and confirm your flight details, which it then stores and prefills into the relevant sections. From there, you can proceed to logon to a CPDLC unit, request a datalink clearance, or pursue any of the hundreds of other uses of CPDLC 9 | 10 | # Is there a tutorial? 11 | It's in development. The [wiki](https://github.com/josh-seagrave/EasyCPDLC/wiki) will contain full background information and user guides. 12 | 13 | # How do I get it? 14 | You can download the latest release [here.](https://github.com/josh-seagrave/EasyCPDLC/releases) 15 | 16 | # It's broken. What do I do? 17 | EasyCPDLC is still under active development. If you encounter crashes or a bug, please [submit an issue](https://github.com/josh-seagrave/EasyCPDLC/issues) with as much detail as possible so I can investigate. 18 | 19 | # Is it free? 20 | Yes, and it always will be. 21 | 22 | # I'd like to buy you a coffee, you seem like you need one. 23 | [that's very kind of you.](https://www.paypal.com/donate/?hosted_button_id=9MK7SMKEKGAZY) 24 | -------------------------------------------------------------------------------- /EasyCPDLC/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("EasyCPDLC")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("EasyCPDLC")] 12 | [assembly: AssemblyCopyright("Copyright © 2022")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | [assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("windows7.0")] 17 | 18 | // Setting ComVisible to false makes the types in this assembly not visible 19 | // to COM components. If you need to access a type in this assembly from 20 | // COM, set the ComVisible attribute to true on that type. 21 | [assembly: ComVisible(false)] 22 | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM 24 | [assembly: Guid("b9ca396a-4cb3-4d9a-b985-946443322ab9")] 25 | 26 | // Version information for an assembly consists of the following four values: 27 | // 28 | // Major Version 29 | // Minor Version 30 | // Build Number 31 | // Revision 32 | // 33 | // You can specify all the values or you can default the Build and Revision Numbers 34 | // by using the '*' as shown below: 35 | // [assembly: AssemblyVersion("1.0.*")] 36 | [assembly: AssemblyVersion("0.2.0")] 37 | [assembly: AssemblyFileVersion("0.2.0.0")] 38 | -------------------------------------------------------------------------------- /EasyCPDLC/CustomUI.cs: -------------------------------------------------------------------------------- 1 | using System.Drawing; 2 | using System.Windows.Forms; 3 | 4 | namespace EasyCPDLC 5 | { 6 | public class CustomUI 7 | { 8 | public static UITextBox CreateTextBox(string _text, int _maxLength, Color _controlFrontColor, Color _controlBackColor, Font _font) 9 | { 10 | UITextBox _temp = new(_controlFrontColor) 11 | { 12 | BackColor = _controlBackColor, 13 | ForeColor = _controlFrontColor, 14 | Font = _font, 15 | MaxLength = _maxLength, 16 | BorderStyle = BorderStyle.None, 17 | Text = _text, 18 | CharacterCasing = CharacterCasing.Upper, 19 | Top = 10, 20 | Padding = new Padding(3, 0, 3, -10), 21 | Margin = new Padding(3, 5, 3, -10), 22 | Height = 20, 23 | TextAlign = HorizontalAlignment.Center 24 | }; 25 | 26 | using (Graphics G = _temp.CreateGraphics()) 27 | { 28 | _temp.Width = (int)(_temp.MaxLength * 29 | G.MeasureString("x", _temp.Font).Width); 30 | } 31 | 32 | return _temp; 33 | } 34 | 35 | public static Label CreateTemplate(string _text, Color _controlFrontColor, Color _controlBackColor, Font _font) 36 | { 37 | Label _temp = new() 38 | { 39 | BackColor = _controlBackColor, 40 | ForeColor = _controlFrontColor, 41 | Font = _font, 42 | AutoSize = true, 43 | Text = _text, 44 | Top = 10, 45 | Height = 20, 46 | TextAlign = ContentAlignment.MiddleLeft, 47 | Padding = new Padding(0, 10, 0, 0), 48 | Margin = new Padding(0, 0, 0, 0) 49 | }; 50 | 51 | return _temp; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /EasyCPDLC/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | False 7 | 8 | 9 | True 10 | 11 | 12 | 13 | 14 | 15 | False 16 | 17 | 18 | 0, 0 19 | 20 | 21 | 0, 0 22 | 23 | 24 | 0, 0 25 | 26 | 27 | 0, 0 28 | 29 | 30 | 0, 0 31 | 32 | 33 | 0, 0 34 | 35 | 36 | 0 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /EasyCPDLC/CPDLCMessage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using System.Windows.Forms; 4 | 5 | namespace EasyCPDLC 6 | { 7 | public class CPDLCMessage : Label 8 | { 9 | 10 | public string type; 11 | public bool acknowledged = false; 12 | public string recipient; 13 | public string message; 14 | public bool outbound; 15 | private string storedText; 16 | 17 | public CPDLCResponse header; 18 | 19 | public CPDLCMessage() 20 | { 21 | 22 | } 23 | public CPDLCMessage(string _type, string _recipient, string _message, bool _outbound = false, CPDLCResponse _header = null) 24 | { 25 | type = _type; 26 | recipient = _recipient; 27 | message = _message; 28 | outbound = _outbound; 29 | header = _header; 30 | SetStyle(ControlStyles.Selectable, true); 31 | } 32 | 33 | public void OverrideText(string newText) 34 | { 35 | storedText = Text; 36 | Console.WriteLine(storedText); 37 | Invoke(new Action(() => Text = newText)); 38 | } 39 | 40 | public void RestoreText() 41 | { 42 | Invoke(new Action(() => Text = storedText)); 43 | } 44 | 45 | protected override void OnEnter(EventArgs e) 46 | { 47 | ForeColor = Color.Orange; 48 | } 49 | 50 | protected override void OnLeave(EventArgs e) 51 | { 52 | ForeColor = SystemColors.ControlDark; 53 | } 54 | } 55 | 56 | public class CPDLCResponse 57 | { 58 | public string DataType { get; set; } 59 | public int MessageID { get; set; } 60 | public int ResponseID { get; set; } 61 | public string Responses { get; set; } 62 | 63 | } 64 | 65 | public class AccessibleLabel : Label 66 | { 67 | private readonly Color foreColor; 68 | public AccessibleLabel(Color _foreColor) 69 | { 70 | SetStyle(ControlStyles.Selectable, true); 71 | foreColor = _foreColor; 72 | } 73 | 74 | protected override void OnEnter(EventArgs e) 75 | { 76 | ForeColor = Color.Orange; 77 | } 78 | 79 | protected override void OnLeave(EventArgs e) 80 | { 81 | ForeColor = foreColor; 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /EasyCPDLC/Contract.cs: -------------------------------------------------------------------------------- 1 | /* EASYCPDLC: CPDLC Client for the VATSIM Network 2 | Copyright (C) 2021 Joshua Seagrave joshseagrave@googlemail.com 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | 18 | using System; 19 | using System.Timers; 20 | 21 | namespace EasyCPDLC 22 | { 23 | class Contract 24 | { 25 | public string sender; 26 | public string contractLength; 27 | private Timer timer; 28 | readonly private MainForm parent; 29 | 30 | public Contract(MainForm _parent, string _sender, string _timeSpan) 31 | { 32 | parent = _parent; 33 | sender = _sender; 34 | contractLength = _timeSpan; 35 | } 36 | 37 | public void StartContract() 38 | { 39 | timer = new Timer(Convert.ToInt32(contractLength) * 1000) 40 | { 41 | AutoReset = true 42 | }; 43 | timer.Elapsed += new ElapsedEventHandler(SendReply); 44 | timer.Start(); 45 | } 46 | 47 | private async void SendReply(Object source, ElapsedEventArgs e) 48 | { 49 | try 50 | { 51 | if (MainForm.UseFSUIPC) 52 | { 53 | string message = String.Format("REPORT {0} {1} {2} {3} {4}", 54 | parent.callsign, 55 | DateTime.UtcNow.ToString("ddHHmm"), 56 | Math.Round(parent.fsuipc.position.Latitude.DecimalDegrees, 5), 57 | Math.Round(parent.fsuipc.position.Longitude.DecimalDegrees, 5), 58 | Math.Round(parent.fsuipc.altitude.Feet / 100)); 59 | await parent.SendCPDLCMessage(sender, "ADS-C", message, false); 60 | } 61 | } 62 | catch { } 63 | } 64 | 65 | public void StopContract() 66 | { 67 | timer.Stop(); 68 | timer.Dispose(); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /EasyCPDLC/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | False 24 | 25 | 26 | True 27 | 28 | 29 | 30 | 31 | 32 | False 33 | 34 | 35 | 0, 0 36 | 37 | 38 | 0, 0 39 | 40 | 41 | 0, 0 42 | 43 | 44 | 0, 0 45 | 46 | 47 | 0, 0 48 | 49 | 50 | 0, 0 51 | 52 | 53 | 0 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /EasyCPDLC/FSUIPCData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using FSUIPC; 7 | 8 | namespace EasyCPDLC 9 | { 10 | public class FSUIPCData 11 | { 12 | public FsAltitude altitude; 13 | public int groundspeed; 14 | public FsLatLonPoint position; 15 | FsLatitude latitude; 16 | FsLongitude longitude; 17 | int pDelta; 18 | 19 | readonly Offset altOffset = new(0x3324); 20 | readonly Offset pOffset = new(0x0330); 21 | readonly Offset gsOffset = new(0x02B4); 22 | readonly Offset feetOrMeters = new(0x0C18); 23 | readonly Offset latOffset = new(0x0560); 24 | readonly Offset lonOffset = new(0x0568); 25 | 26 | public static bool OpenConnection() 27 | { 28 | try 29 | { 30 | FSUIPCConnection.Open(); 31 | if (FSUIPCConnection.IsOpen) 32 | { 33 | return true; 34 | } 35 | return false; 36 | } 37 | catch 38 | { 39 | return false; 40 | } 41 | 42 | } 43 | 44 | public static bool CloseConnection() 45 | { 46 | { 47 | try 48 | { 49 | FSUIPCConnection.Close(); 50 | return false; 51 | } 52 | catch 53 | { 54 | return false; 55 | } 56 | 57 | } 58 | } 59 | 60 | public Task RefreshData() 61 | { 62 | if (FSUIPCConnection.IsOpen) 63 | { 64 | FSUIPCConnection.Process(); 65 | latitude = new FsLatitude(latOffset.Value); 66 | longitude = new FsLongitude(lonOffset.Value); 67 | position = new FsLatLonPoint(latitude, longitude); 68 | pDelta = pOffset.Value / 16 - 1013; 69 | altitude = feetOrMeters.Value > 1 ? FsAltitude.FromMetres(altOffset.Value - (10 * pDelta)) : FsAltitude.FromFeet(altOffset.Value - (30 * pDelta)); 70 | groundspeed = (int)Math.Round(gsOffset.Value / 65536 * 1.94384); 71 | 72 | } 73 | else 74 | { 75 | throw new FSUIPCException(FSUIPCError.FSUIPC_ERR_NOTOPEN, "Can't Refresh, Connection isn't open"); 76 | } 77 | 78 | return Task.CompletedTask; 79 | } 80 | 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /EasyCPDLC/SimbriefJSON.cs: -------------------------------------------------------------------------------- 1 | #pragma warning disable IDE1006 // Naming Styles 2 | 3 | /* EASYCPDLC: CPDLC Client for the VATSIM Network 4 | Copyright (C) 2021 Joshua Seagrave joshseagrave@googlemail.com 5 | 6 | This program is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with this program. If not, see . 18 | */ 19 | 20 | namespace EasyCPDLC 21 | { 22 | 23 | public class Navlog 24 | { 25 | public Fix[] fix { get; set; } 26 | } 27 | 28 | public class Fix 29 | { 30 | public string ident { get; set; } 31 | public string name { get; set; } 32 | public string type { get; set; } 33 | public object frequency { get; set; } 34 | public string pos_lat { get; set; } 35 | public string pos_long { get; set; } 36 | public string stage { get; set; } 37 | public string via_airway { get; set; } 38 | public string is_sid_star { get; set; } 39 | public string distance { get; set; } 40 | public string track_true { get; set; } 41 | public string track_mag { get; set; } 42 | public string heading_true { get; set; } 43 | public string heading_mag { get; set; } 44 | public string altitude_feet { get; set; } 45 | public string ind_airspeed { get; set; } 46 | public string true_airspeed { get; set; } 47 | public string mach { get; set; } 48 | public string mach_thousandths { get; set; } 49 | public string wind_component { get; set; } 50 | public string groundspeed { get; set; } 51 | public string time_leg { get; set; } 52 | public string time_total { get; set; } 53 | public string fuel_flow { get; set; } 54 | public string fuel_leg { get; set; } 55 | public string fuel_totalused { get; set; } 56 | public string fuel_min_onboard { get; set; } 57 | public string fuel_plan_onboard { get; set; } 58 | public string oat { get; set; } 59 | public string oat_isa_dev { get; set; } 60 | public string wind_dir { get; set; } 61 | public string wind_spd { get; set; } 62 | public string shear { get; set; } 63 | public string tropopause_feet { get; set; } 64 | public string ground_height { get; set; } 65 | public string mora { get; set; } 66 | public string fir { get; set; } 67 | public string fir_units { get; set; } 68 | public string fir_valid_levels { get; set; } 69 | public object wind_data { get; set; } 70 | public object fir_crossing { get; set; } 71 | } 72 | } -------------------------------------------------------------------------------- /EasyCPDLC/FlashWindow.cs: -------------------------------------------------------------------------------- 1 | /* EASYCPDLC: CPDLC Client for the VATSIM Network 2 | Copyright (C) 2021 Joshua Seagrave joshseagrave@googlemail.com 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | using System; 18 | using System.Runtime.InteropServices; 19 | 20 | namespace EasyCPDLC 21 | { 22 | public static class FlashWindow 23 | { 24 | [DllImport("user32.dll")] 25 | [return: MarshalAs(UnmanagedType.Bool)] 26 | private static extern bool FlashWindowEx(ref FLASHWINFO pwfi); 27 | 28 | [StructLayout(LayoutKind.Sequential)] 29 | private struct FLASHWINFO 30 | { 31 | public uint cbSize; 32 | public IntPtr hwnd; 33 | public uint dwFlags; 34 | public uint uCount; 35 | public uint dwTimeout; 36 | } 37 | public const uint FLASHW_STOP = 0; 38 | public const uint FLASHW_CAPTION = 1; 39 | public const uint FLASHW_TRAY = 2; 40 | public const uint FLASHW_ALL = 3; 41 | public const uint FLASHW_TIMER = 4; 42 | public const uint FLASHW_TIMERNOFG = 12; 43 | 44 | public static bool Flash(System.Windows.Forms.Form form) 45 | { 46 | // Make sure we're running under Windows 2000 or later 47 | if (Win2000OrLater) 48 | { 49 | FLASHWINFO fi = Create_FLASHWINFO(form.Handle, FLASHW_ALL | FLASHW_TIMERNOFG, uint.MaxValue, 0); 50 | return FlashWindowEx(ref fi); 51 | } 52 | return false; 53 | } 54 | 55 | private static FLASHWINFO Create_FLASHWINFO(IntPtr handle, uint flags, uint count, uint timeout) 56 | { 57 | FLASHWINFO fi = new(); 58 | fi.cbSize = Convert.ToUInt32(Marshal.SizeOf(fi)); 59 | fi.hwnd = handle; 60 | fi.dwFlags = flags; 61 | fi.uCount = count; 62 | fi.dwTimeout = timeout; 63 | return fi; 64 | } 65 | public static bool Flash(System.Windows.Forms.Form form, uint count) 66 | { 67 | if (Win2000OrLater) 68 | { 69 | FLASHWINFO fi = Create_FLASHWINFO(form.Handle, FLASHW_ALL, count, 0); 70 | return FlashWindowEx(ref fi); 71 | } 72 | return false; 73 | } 74 | 75 | public static bool Start(System.Windows.Forms.Form form) 76 | { 77 | if (Win2000OrLater) 78 | { 79 | FLASHWINFO fi = Create_FLASHWINFO(form.Handle, FLASHW_ALL, uint.MaxValue, 0); 80 | return FlashWindowEx(ref fi); 81 | } 82 | return false; 83 | } 84 | public static bool Stop(System.Windows.Forms.Form form) 85 | { 86 | if (Win2000OrLater) 87 | { 88 | FLASHWINFO fi = Create_FLASHWINFO(form.Handle, FLASHW_STOP, uint.MaxValue, 0); 89 | return FlashWindowEx(ref fi); 90 | } 91 | return false; 92 | } 93 | private static bool Win2000OrLater 94 | { 95 | get { return System.Environment.OSVersion.Version.Major >= 5; } 96 | } 97 | } 98 | 99 | } 100 | -------------------------------------------------------------------------------- /EasyCPDLC/DataEntry.cs: -------------------------------------------------------------------------------- 1 | /* EASYCPDLC: CPDLC Client for the VATSIM Network 2 | Copyright (C) 2021 Joshua Seagrave joshseagrave@googlemail.com 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | 18 | 19 | 20 | using System; 21 | using System.Windows.Forms; 22 | 23 | namespace EasyCPDLC 24 | { 25 | public partial class DataEntry : Form 26 | { 27 | public const int WM_NCLBUTTONDOWN = 0xA1; 28 | public const int HT_CAPTION = 0x2; 29 | 30 | [System.Runtime.InteropServices.DllImport("user32.dll")] 31 | private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); 32 | [System.Runtime.InteropServices.DllImport("user32.dll")] 33 | private static extern bool ReleaseCapture(); 34 | public string HoppieLogonCode { get; set; } 35 | public int VatsimCID { get; set; } 36 | public bool Remember { get; set; } 37 | public DataEntry(object _hoppieLogonCode = null, object _vatsimCID = null) 38 | { 39 | InitializeComponent(); 40 | 41 | try 42 | { 43 | 44 | if (_hoppieLogonCode is not null) 45 | { 46 | hoppieCodeTextBox.Text = _hoppieLogonCode.ToString(); 47 | } 48 | else 49 | { 50 | throw new Exception(); 51 | } 52 | if (_vatsimCID is not null) 53 | { 54 | vatsimCIDTextBox.Text = _vatsimCID.ToString(); 55 | } 56 | else 57 | { 58 | throw new Exception(); 59 | } 60 | rememberCheckBox.Checked = true; 61 | } 62 | 63 | catch (Exception) 64 | { 65 | hoppieCodeTextBox.Text = ""; 66 | vatsimCIDTextBox.Text = ""; 67 | rememberCheckBox.Checked = false; 68 | } 69 | } 70 | 71 | private void ExitButton_Click(object sender, EventArgs e) 72 | { 73 | this.Close(); 74 | } 75 | 76 | private void ConnectButton_Click(object sender, EventArgs e) 77 | { 78 | try 79 | { 80 | HoppieLogonCode = hoppieCodeTextBox.Text; 81 | VatsimCID = Convert.ToInt32(vatsimCIDTextBox.Text); 82 | Remember = rememberCheckBox.Checked; 83 | 84 | this.DialogResult = DialogResult.OK; 85 | } 86 | catch (FormatException) 87 | { 88 | MessageBox.Show("Invalid CID/Code, please check and try again.", "Error!", MessageBoxButtons.OK); 89 | } 90 | 91 | } 92 | 93 | private void HoppieCodeTextBox_TextChanged(object sender, EventArgs e) 94 | { 95 | try 96 | { 97 | if (vatsimCIDTextBox.Text.Length < 1 || hoppieCodeTextBox.Text.Length < 1) 98 | { 99 | throw new FormatException(); 100 | } 101 | 102 | Convert.ToInt32(vatsimCIDTextBox.Text); 103 | connectButton.Enabled = true; 104 | 105 | } 106 | catch (FormatException) 107 | { 108 | connectButton.Enabled = false; 109 | } 110 | } 111 | 112 | private void VatsimCIDTextBox_TextChanged(object sender, EventArgs e) 113 | { 114 | try 115 | { 116 | if (vatsimCIDTextBox.Text.Length < 1 || hoppieCodeTextBox.Text.Length < 1) 117 | { 118 | throw new FormatException(); 119 | } 120 | 121 | Convert.ToInt32(vatsimCIDTextBox.Text); 122 | connectButton.Enabled = true; 123 | 124 | } 125 | catch (FormatException) 126 | { 127 | connectButton.Enabled = false; 128 | } 129 | } 130 | 131 | private void DataEntry_MouseDown(object sender, MouseEventArgs e) 132 | { 133 | if (e.Button == MouseButtons.Left) 134 | { 135 | ReleaseCapture(); 136 | _ = SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); 137 | } 138 | } 139 | 140 | private void NumsOnly(object sender, KeyPressEventArgs e) 141 | { 142 | if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) 143 | { 144 | e.Handled = true; 145 | } 146 | } 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /EasyCPDLC/UITextBox.cs: -------------------------------------------------------------------------------- 1 | /* EASYCPDLC: CPDLC Client for the VATSIM Network 2 | Copyright (C) 2021 Joshua Seagrave joshseagrave@googlemail.com 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | 18 | 19 | 20 | using System; 21 | using System.Drawing; 22 | using System.Windows.Forms; 23 | 24 | namespace EasyCPDLC 25 | { 26 | public class UITextBox : TextBox 27 | { 28 | 29 | public UITextBox(Color _color) 30 | { 31 | BorderStyle = BorderStyle.None; 32 | AutoSize = false; 33 | Margin = new Padding(0, 5, 0, -5); 34 | //Controls.Add(new Label() 35 | //{ Height = 1, Dock = DockStyle.Bottom, BackColor = _color, Margin = new Padding(0, -10, 0, 0) }); 36 | } 37 | } 38 | 39 | public partial class TabControlWithoutHeader : TabControl 40 | { 41 | public TabControlWithoutHeader() 42 | { 43 | if (!this.DesignMode) this.Multiline = true; 44 | } 45 | 46 | protected override void WndProc(ref Message m) 47 | { 48 | if (m.Msg == 0x1328 && !this.DesignMode) 49 | m.Result = new IntPtr(1); 50 | else 51 | base.WndProc(ref m); 52 | } 53 | } 54 | 55 | public class TimerLabel : Label 56 | { 57 | readonly Timer blinkTimer = new(); 58 | private bool _canFlash = false; 59 | public bool CanFlash 60 | { 61 | get 62 | { 63 | return _canFlash; 64 | } 65 | set 66 | { 67 | _canFlash = value; 68 | if(_canFlash) 69 | { 70 | blinkTimer.Start(); 71 | } 72 | else 73 | { 74 | blinkTimer.Stop(); 75 | ForeColor = SystemColors.ControlLight; 76 | } 77 | } 78 | } 79 | public TimerLabel() 80 | { 81 | blinkTimer.Interval = 500; 82 | blinkTimer.Tick += new EventHandler(FlashElement); 83 | SetStyle(ControlStyles.Selectable, true); 84 | } 85 | 86 | public void FlashElement(object sender, EventArgs e) 87 | { 88 | this.ForeColor = this.ForeColor == Color.Orange ? SystemColors.ControlLight : Color.Orange; 89 | } 90 | } 91 | 92 | public class RoundPanel : Panel 93 | { 94 | [System.Runtime.InteropServices.DllImport("gdi32.dll", EntryPoint = "CreateRoundRectRgn")] 95 | private static extern IntPtr CreateRoundRectRgn 96 | ( 97 | int nLeftRect, // X-coordinate of upper-left corner or padding at start 98 | int nTopRect,// Y-coordinate of upper-left corner or padding at the top of the textbox 99 | int nRightRect, // X-coordinate of lower-right corner or Width of the object 100 | int nBottomRect,// Y-coordinate of lower-right corner or Height of the object 101 | //RADIUS, how round do you want it to be? 102 | int nheightRect, //height of ellipse 103 | int nweightRect //width of ellipse 104 | ); 105 | protected override void OnResize(EventArgs e) 106 | { 107 | base.OnCreateControl(); 108 | this.Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(2, 3, this.Width, this.Height, 15, 15)); 109 | this.BorderStyle = BorderStyle.FixedSingle; 110 | } 111 | } 112 | 113 | public class UICheckBox : CheckBox 114 | { 115 | public string group; 116 | public UICheckBox(string _group) 117 | { 118 | group = _group; 119 | FlatStyle = FlatStyle.Flat; 120 | TextAlign = ContentAlignment.MiddleRight; 121 | FlatAppearance.BorderSize = 0; 122 | AutoSize = false; 123 | Margin = new Padding(0, 5, 0, -10); 124 | } 125 | 126 | protected override void OnPaint(PaintEventArgs pevent) 127 | { 128 | pevent.Graphics.Clear(BackColor); 129 | 130 | using (SolidBrush brush = new(ForeColor)) 131 | pevent.Graphics.DrawString(Text, Font, brush, 27, 4); 132 | 133 | Point pt = new(4, 4); 134 | Rectangle rect = new(pt, new Size(16, 16)); 135 | 136 | pevent.Graphics.FillRectangle(new SolidBrush(BackColor), rect); 137 | 138 | if (Checked) 139 | { 140 | using SolidBrush brush = new(ForeColor); 141 | pevent.Graphics.FillEllipse(brush, pt.X + 4, pt.Y + 4, 8, 8); 142 | } 143 | pevent.Graphics.DrawRectangle(SystemPens.ControlLight, rect); 144 | } 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /EasyCPDLC/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace EasyCPDLC.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EasyCPDLC.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized resource of type System.Byte[]. 65 | /// 66 | internal static byte[] B612Mono_Bold { 67 | get { 68 | object obj = ResourceManager.GetObject("B612Mono_Bold", resourceCulture); 69 | return ((byte[])(obj)); 70 | } 71 | } 72 | 73 | /// 74 | /// Looks up a localized resource of type System.Byte[]. 75 | /// 76 | internal static byte[] B612Mono_Regular { 77 | get { 78 | object obj = ResourceManager.GetObject("B612Mono_Regular", resourceCulture); 79 | return ((byte[])(obj)); 80 | } 81 | } 82 | 83 | /// 84 | /// Looks up a localized resource of type System.Drawing.Bitmap. 85 | /// 86 | internal static System.Drawing.Bitmap cog_wheel_gear_setting { 87 | get { 88 | object obj = ResourceManager.GetObject("cog_wheel_gear_setting", resourceCulture); 89 | return ((System.Drawing.Bitmap)(obj)); 90 | } 91 | } 92 | 93 | /// 94 | /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. 95 | /// 96 | internal static System.IO.UnmanagedMemoryStream notification { 97 | get { 98 | return ResourceManager.GetStream("notification", resourceCulture); 99 | } 100 | } 101 | 102 | /// 103 | /// Looks up a localized resource of type System.Byte[]. 104 | /// 105 | internal static byte[] Oxygen_Bold { 106 | get { 107 | object obj = ResourceManager.GetObject("Oxygen_Bold", resourceCulture); 108 | return ((byte[])(obj)); 109 | } 110 | } 111 | 112 | /// 113 | /// Looks up a localized resource of type System.Byte[]. 114 | /// 115 | internal static byte[] Oxygen_Regular { 116 | get { 117 | object obj = ResourceManager.GetObject("Oxygen_Regular", resourceCulture); 118 | return ((byte[])(obj)); 119 | } 120 | } 121 | 122 | /// 123 | /// Looks up a localized resource of type System.Drawing.Bitmap. 124 | /// 125 | internal static System.Drawing.Bitmap Stretchboard { 126 | get { 127 | object obj = ResourceManager.GetObject("Stretchboard", resourceCulture); 128 | return ((System.Drawing.Bitmap)(obj)); 129 | } 130 | } 131 | } 132 | } 133 | -------------------------------------------------------------------------------- /EasyCPDLC/SettingsForm.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /EasyCPDLC/EasyCPDLC.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net6.0-windows 4 | win-x64 5 | WinExe 6 | false 7 | false 8 | Publish\ 9 | true 10 | Disk 11 | false 12 | Foreground 13 | 7 14 | Days 15 | false 16 | false 17 | true 18 | 4 19 | 0.2.0.0 20 | false 21 | true 22 | true 23 | false 24 | true 25 | true 26 | true 27 | 28 | 29 | 30 | 31 | 32 | 33 | none 34 | 35 | 36 | 37 | 38 | EZCPDLCIcon_64.ico 39 | 40 | 41 | EasyCPDLC.Program 42 | 43 | 44 | F339CE3C5CA372BD21B7D46BC9C1A2CD4DDD37C0 45 | 46 | 47 | EasyCPDLC_TemporaryKey.pfx 48 | 49 | 50 | true 51 | 52 | 53 | false 54 | 55 | 56 | 57 | 58 | 59 | 60 | true 61 | False 62 | 63 | 64 | 65 | 66 | 67 | 68 | Component 69 | 70 | 71 | True 72 | True 73 | Resources.resx 74 | 75 | 76 | True 77 | True 78 | Settings.settings 79 | 80 | 81 | Component 82 | 83 | 84 | 85 | PreserveNewest 86 | 87 | 88 | Never 89 | 90 | 91 | Never 92 | 93 | 94 | Never 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | False 105 | Microsoft .NET Framework 4.7.2 %28x86 and x64%29 106 | true 107 | 108 | 109 | False 110 | .NET Framework 3.5 SP1 111 | false 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | all 125 | 126 | 127 | 128 | 129 | 130 | ResXFileCodeGenerator 131 | Resources.Designer.cs 132 | 133 | 134 | 135 | 136 | SettingsSingleFileGenerator 137 | Settings.Designer.cs 138 | 139 | 140 | Never 141 | 142 | 143 | -------------------------------------------------------------------------------- /EasyCPDLC/VATSIMJSON.cs: -------------------------------------------------------------------------------- 1 | #pragma warning disable IDE1006 // Naming Styles 2 | 3 | /* EASYCPDLC: CPDLC Client for the VATSIM Network 4 | Copyright (C) 2022 Joshua Seagrave joshseagrave@googlemail.com 5 | 6 | This program is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with this program. If not, see . 18 | */ 19 | 20 | using System; 21 | 22 | namespace EasyCPDLC 23 | { 24 | 25 | public class VATSIMRootobject 26 | { 27 | public VATSIMGeneral general { get; set; } 28 | public Pilot[] pilots { get; set; } 29 | public Controller[] controllers { get; set; } 30 | public Atis[] atis { get; set; } 31 | public Server[] servers { get; set; } 32 | public Prefile[] prefiles { get; set; } 33 | public Facility[] facilities { get; set; } 34 | public Rating[] ratings { get; set; } 35 | public Pilot_Ratings[] pilot_ratings { get; set; } 36 | } 37 | 38 | public class VATSIMGeneral 39 | { 40 | 41 | public int version { get; set; } 42 | public int reload { get; set; } 43 | public string update { get; set; } 44 | public DateTime update_timestamp { get; set; } 45 | public int connected_clients { get; set; } 46 | public int unique_users { get; set; } 47 | } 48 | 49 | public class Pilot 50 | { 51 | public int cid { get; set; } 52 | public string name { get; set; } 53 | public string callsign { get; set; } 54 | public string server { get; set; } 55 | public int pilot_rating { get; set; } 56 | public float latitude { get; set; } 57 | public float longitude { get; set; } 58 | public int altitude { get; set; } 59 | public int groundspeed { get; set; } 60 | public string transponder { get; set; } 61 | public int heading { get; set; } 62 | public float qnh_i_hg { get; set; } 63 | public int qnh_mb { get; set; } 64 | public Flight_Plan flight_plan { get; set; } 65 | public DateTime logon_time { get; set; } 66 | public DateTime last_updated { get; set; } 67 | } 68 | 69 | public class Flight_Plan 70 | { 71 | public string flight_rules { get; set; } 72 | public string aircraft { get; set; } 73 | public string aircraft_faa { get; set; } 74 | public string aircraft_short { get; set; } 75 | public string departure { get; set; } 76 | public string arrival { get; set; } 77 | public string alternate { get; set; } 78 | public string cruise_tas { get; set; } 79 | public string altitude { get; set; } 80 | public string deptime { get; set; } 81 | public string enroute_time { get; set; } 82 | public string fuel_time { get; set; } 83 | public string remarks { get; set; } 84 | public string route { get; set; } 85 | public int revision_id { get; set; } 86 | public string assigned_transponder { get; set; } 87 | } 88 | 89 | public class Controller 90 | { 91 | public int cid { get; set; } 92 | public string name { get; set; } 93 | public string callsign { get; set; } 94 | public string frequency { get; set; } 95 | public int facility { get; set; } 96 | public int rating { get; set; } 97 | public string server { get; set; } 98 | public int visual_range { get; set; } 99 | public string[] text_atis { get; set; } 100 | public DateTime last_updated { get; set; } 101 | public DateTime logon_time { get; set; } 102 | } 103 | 104 | public class Atis 105 | { 106 | public int cid { get; set; } 107 | public string name { get; set; } 108 | public string callsign { get; set; } 109 | public string frequency { get; set; } 110 | public int facility { get; set; } 111 | public int rating { get; set; } 112 | public string server { get; set; } 113 | public int visual_range { get; set; } 114 | public string atis_code { get; set; } 115 | public string[] text_atis { get; set; } 116 | public DateTime last_updated { get; set; } 117 | public DateTime logon_time { get; set; } 118 | } 119 | 120 | public class Server 121 | { 122 | public string ident { get; set; } 123 | public string hostname_or_ip { get; set; } 124 | public string location { get; set; } 125 | public string name { get; set; } 126 | public int clients_connection_allowed { get; set; } 127 | public bool client_connections_allowed { get; set; } 128 | public bool is_sweatbox { get; set; } 129 | } 130 | 131 | public class Prefile 132 | { 133 | public int cid { get; set; } 134 | public string name { get; set; } 135 | public string callsign { get; set; } 136 | public VATSIMFlight_Plan flight_plan { get; set; } 137 | public DateTime last_updated { get; set; } 138 | } 139 | 140 | public class VATSIMFlight_Plan 141 | { 142 | public string flight_rules { get; set; } 143 | public string aircraft { get; set; } 144 | public string aircraft_faa { get; set; } 145 | public string aircraft_short { get; set; } 146 | public string departure { get; set; } 147 | public string arrival { get; set; } 148 | public string alternate { get; set; } 149 | public string cruise_tas { get; set; } 150 | public string altitude { get; set; } 151 | public string deptime { get; set; } 152 | public string enroute_time { get; set; } 153 | public string fuel_time { get; set; } 154 | public string remarks { get; set; } 155 | public string route { get; set; } 156 | public int revision_id { get; set; } 157 | public string assigned_transponder { get; set; } 158 | } 159 | 160 | public class Facility 161 | { 162 | public int id { get; set; } 163 | public string _short { get; set; } 164 | public string _long { get; set; } 165 | } 166 | 167 | public class Rating 168 | { 169 | public int id { get; set; } 170 | public string _short { get; set; } 171 | public string _long { get; set; } 172 | } 173 | 174 | public class Pilot_Ratings 175 | { 176 | public int id { get; set; } 177 | public string short_name { get; set; } 178 | public string long_name { get; set; } 179 | } 180 | 181 | } -------------------------------------------------------------------------------- /EasyCPDLC/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace EasyCPDLC.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.2.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("False")] 29 | public bool StayOnTop { 30 | get { 31 | return ((bool)(this["StayOnTop"])); 32 | } 33 | set { 34 | this["StayOnTop"] = value; 35 | } 36 | } 37 | 38 | [global::System.Configuration.UserScopedSettingAttribute()] 39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 40 | [global::System.Configuration.DefaultSettingValueAttribute("True")] 41 | public bool PlayAudibleAlert { 42 | get { 43 | return ((bool)(this["PlayAudibleAlert"])); 44 | } 45 | set { 46 | this["PlayAudibleAlert"] = value; 47 | } 48 | } 49 | 50 | [global::System.Configuration.UserScopedSettingAttribute()] 51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 52 | [global::System.Configuration.DefaultSettingValueAttribute("")] 53 | public string SimbriefUsername { 54 | get { 55 | return ((string)(this["SimbriefUsername"])); 56 | } 57 | set { 58 | this["SimbriefUsername"] = value; 59 | } 60 | } 61 | 62 | [global::System.Configuration.UserScopedSettingAttribute()] 63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 64 | [global::System.Configuration.DefaultSettingValueAttribute("False")] 65 | public bool UseFSUIPC { 66 | get { 67 | return ((bool)(this["UseFSUIPC"])); 68 | } 69 | set { 70 | this["UseFSUIPC"] = value; 71 | } 72 | } 73 | 74 | [global::System.Configuration.UserScopedSettingAttribute()] 75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 76 | [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] 77 | public global::System.Drawing.Point MainWindowLocation { 78 | get { 79 | return ((global::System.Drawing.Point)(this["MainWindowLocation"])); 80 | } 81 | set { 82 | this["MainWindowLocation"] = value; 83 | } 84 | } 85 | 86 | [global::System.Configuration.UserScopedSettingAttribute()] 87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 88 | [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] 89 | public global::System.Drawing.Size MainWindowSize { 90 | get { 91 | return ((global::System.Drawing.Size)(this["MainWindowSize"])); 92 | } 93 | set { 94 | this["MainWindowSize"] = value; 95 | } 96 | } 97 | 98 | [global::System.Configuration.UserScopedSettingAttribute()] 99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 100 | [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] 101 | public global::System.Drawing.Point TelexWindowLocation { 102 | get { 103 | return ((global::System.Drawing.Point)(this["TelexWindowLocation"])); 104 | } 105 | set { 106 | this["TelexWindowLocation"] = value; 107 | } 108 | } 109 | 110 | [global::System.Configuration.UserScopedSettingAttribute()] 111 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 112 | [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] 113 | public global::System.Drawing.Size TelexWindowSize { 114 | get { 115 | return ((global::System.Drawing.Size)(this["TelexWindowSize"])); 116 | } 117 | set { 118 | this["TelexWindowSize"] = value; 119 | } 120 | } 121 | 122 | [global::System.Configuration.UserScopedSettingAttribute()] 123 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 124 | [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] 125 | public global::System.Drawing.Point CPDLCWindowLocation { 126 | get { 127 | return ((global::System.Drawing.Point)(this["CPDLCWindowLocation"])); 128 | } 129 | set { 130 | this["CPDLCWindowLocation"] = value; 131 | } 132 | } 133 | 134 | [global::System.Configuration.UserScopedSettingAttribute()] 135 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 136 | [global::System.Configuration.DefaultSettingValueAttribute("0, 0")] 137 | public global::System.Drawing.Size CPDLCWindowSize { 138 | get { 139 | return ((global::System.Drawing.Size)(this["CPDLCWindowSize"])); 140 | } 141 | set { 142 | this["CPDLCWindowSize"] = value; 143 | } 144 | } 145 | 146 | [global::System.Configuration.UserScopedSettingAttribute()] 147 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 148 | [global::System.Configuration.DefaultSettingValueAttribute("0")] 149 | public int CID { 150 | get { 151 | return ((int)(this["CID"])); 152 | } 153 | set { 154 | this["CID"] = value; 155 | } 156 | } 157 | 158 | [global::System.Configuration.UserScopedSettingAttribute()] 159 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 160 | [global::System.Configuration.DefaultSettingValueAttribute("")] 161 | public string HoppieCode { 162 | get { 163 | return ((string)(this["HoppieCode"])); 164 | } 165 | set { 166 | this["HoppieCode"] = value; 167 | } 168 | } 169 | } 170 | } 171 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Dd]ebugPublic/ 19 | [Rr]elease/ 20 | [Rr]eleases/ 21 | x64/ 22 | x86/ 23 | [Aa][Rr][Mm]/ 24 | [Aa][Rr][Mm]64/ 25 | bld/ 26 | [Bb]in/ 27 | [Oo]bj/ 28 | [Ll]og/ 29 | 30 | # Visual Studio 2015/2017 cache/options directory 31 | .vs/ 32 | # Uncomment if you have tasks that create the project's static files in wwwroot 33 | #wwwroot/ 34 | 35 | # Visual Studio 2017 auto generated files 36 | Generated\ Files/ 37 | 38 | # MSTest test Results 39 | [Tt]est[Rr]esult*/ 40 | [Bb]uild[Ll]og.* 41 | 42 | # NUNIT 43 | *.VisualState.xml 44 | TestResult.xml 45 | 46 | # Build Results of an ATL Project 47 | [Dd]ebugPS/ 48 | [Rr]eleasePS/ 49 | dlldata.c 50 | 51 | # Benchmark Results 52 | BenchmarkDotNet.Artifacts/ 53 | 54 | # .NET Core 55 | project.lock.json 56 | project.fragment.lock.json 57 | artifacts/ 58 | 59 | # StyleCop 60 | StyleCopReport.xml 61 | 62 | # Files built by Visual Studio 63 | *_i.c 64 | *_p.c 65 | *_h.h 66 | *.ilk 67 | *.meta 68 | *.obj 69 | *.iobj 70 | *.pch 71 | *.pdb 72 | *.ipdb 73 | *.pgc 74 | *.pgd 75 | *.rsp 76 | *.sbr 77 | *.tlb 78 | *.tli 79 | *.tlh 80 | *.tmp 81 | *.tmp_proj 82 | *_wpftmp.csproj 83 | *.log 84 | *.vspscc 85 | *.vssscc 86 | .builds 87 | *.pidb 88 | *.svclog 89 | *.scc 90 | 91 | # Chutzpah Test files 92 | _Chutzpah* 93 | 94 | # Visual C++ cache files 95 | ipch/ 96 | *.aps 97 | *.ncb 98 | *.opendb 99 | *.opensdf 100 | *.sdf 101 | *.cachefile 102 | *.VC.db 103 | *.VC.VC.opendb 104 | 105 | # Visual Studio profiler 106 | *.psess 107 | *.vsp 108 | *.vspx 109 | *.sap 110 | 111 | # Visual Studio Trace Files 112 | *.e2e 113 | 114 | # TFS 2012 Local Workspace 115 | $tf/ 116 | 117 | # Guidance Automation Toolkit 118 | *.gpState 119 | 120 | # ReSharper is a .NET coding add-in 121 | _ReSharper*/ 122 | *.[Rr]e[Ss]harper 123 | *.DotSettings.user 124 | 125 | # JustCode is a .NET coding add-in 126 | .JustCode 127 | 128 | # TeamCity is a build add-in 129 | _TeamCity* 130 | 131 | # DotCover is a Code Coverage Tool 132 | *.dotCover 133 | 134 | # AxoCover is a Code Coverage Tool 135 | .axoCover/* 136 | !.axoCover/settings.json 137 | 138 | # Visual Studio code coverage results 139 | *.coverage 140 | *.coveragexml 141 | 142 | # NCrunch 143 | _NCrunch_* 144 | .*crunch*.local.xml 145 | nCrunchTemp_* 146 | 147 | # MightyMoose 148 | *.mm.* 149 | AutoTest.Net/ 150 | 151 | # Web workbench (sass) 152 | .sass-cache/ 153 | 154 | # Installshield output folder 155 | [Ee]xpress/ 156 | 157 | # DocProject is a documentation generator add-in 158 | DocProject/buildhelp/ 159 | DocProject/Help/*.HxT 160 | DocProject/Help/*.HxC 161 | DocProject/Help/*.hhc 162 | DocProject/Help/*.hhk 163 | DocProject/Help/*.hhp 164 | DocProject/Help/Html2 165 | DocProject/Help/html 166 | 167 | # Click-Once directory 168 | publish/ 169 | 170 | # Publish Web Output 171 | *.[Pp]ublish.xml 172 | *.azurePubxml 173 | # Note: Comment the next line if you want to checkin your web deploy settings, 174 | # but database connection strings (with potential passwords) will be unencrypted 175 | *.pubxml 176 | *.publishproj 177 | 178 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 179 | # checkin your Azure Web App publish settings, but sensitive information contained 180 | # in these scripts will be unencrypted 181 | PublishScripts/ 182 | 183 | # NuGet Packages 184 | *.nupkg 185 | # The packages folder can be ignored because of Package Restore 186 | **/[Pp]ackages/* 187 | # except build/, which is used as an MSBuild target. 188 | !**/[Pp]ackages/build/ 189 | # Uncomment if necessary however generally it will be regenerated when needed 190 | #!**/[Pp]ackages/repositories.config 191 | # NuGet v3's project.json files produces more ignorable files 192 | *.nuget.props 193 | *.nuget.targets 194 | 195 | # Microsoft Azure Build Output 196 | csx/ 197 | *.build.csdef 198 | 199 | # Microsoft Azure Emulator 200 | ecf/ 201 | rcf/ 202 | 203 | # Windows Store app package directories and files 204 | AppPackages/ 205 | BundleArtifacts/ 206 | Package.StoreAssociation.xml 207 | _pkginfo.txt 208 | *.appx 209 | 210 | # Visual Studio cache files 211 | # files ending in .cache can be ignored 212 | *.[Cc]ache 213 | # but keep track of directories ending in .cache 214 | !?*.[Cc]ache/ 215 | 216 | # Others 217 | ClientBin/ 218 | ~$* 219 | *~ 220 | *.dbmdl 221 | *.dbproj.schemaview 222 | *.jfm 223 | *.pfx 224 | *.publishsettings 225 | orleans.codegen.cs 226 | 227 | # Including strong name files can present a security risk 228 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 229 | #*.snk 230 | 231 | # Since there are multiple workflows, uncomment next line to ignore bower_components 232 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 233 | #bower_components/ 234 | 235 | # RIA/Silverlight projects 236 | Generated_Code/ 237 | 238 | # Backup & report files from converting an old project file 239 | # to a newer Visual Studio version. Backup files are not needed, 240 | # because we have git ;-) 241 | _UpgradeReport_Files/ 242 | Backup*/ 243 | UpgradeLog*.XML 244 | UpgradeLog*.htm 245 | ServiceFabricBackup/ 246 | *.rptproj.bak 247 | 248 | # SQL Server files 249 | *.mdf 250 | *.ldf 251 | *.ndf 252 | 253 | # Business Intelligence projects 254 | *.rdl.data 255 | *.bim.layout 256 | *.bim_*.settings 257 | *.rptproj.rsuser 258 | *- Backup*.rdl 259 | 260 | # Microsoft Fakes 261 | FakesAssemblies/ 262 | 263 | # GhostDoc plugin setting file 264 | *.GhostDoc.xml 265 | 266 | # Node.js Tools for Visual Studio 267 | .ntvs_analysis.dat 268 | node_modules/ 269 | 270 | # Visual Studio 6 build log 271 | *.plg 272 | 273 | # Visual Studio 6 workspace options file 274 | *.opt 275 | 276 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 277 | *.vbw 278 | 279 | # Visual Studio LightSwitch build output 280 | **/*.HTMLClient/GeneratedArtifacts 281 | **/*.DesktopClient/GeneratedArtifacts 282 | **/*.DesktopClient/ModelManifest.xml 283 | **/*.Server/GeneratedArtifacts 284 | **/*.Server/ModelManifest.xml 285 | _Pvt_Extensions 286 | 287 | # Paket dependency manager 288 | .paket/paket.exe 289 | paket-files/ 290 | 291 | # FAKE - F# Make 292 | .fake/ 293 | 294 | # JetBrains Rider 295 | .idea/ 296 | *.sln.iml 297 | 298 | # CodeRush personal settings 299 | .cr/personal 300 | 301 | # Python Tools for Visual Studio (PTVS) 302 | __pycache__/ 303 | *.pyc 304 | 305 | # Cake - Uncomment if you are using it 306 | # tools/** 307 | # !tools/packages.config 308 | 309 | # Tabs Studio 310 | *.tss 311 | 312 | # Telerik's JustMock configuration file 313 | *.jmconfig 314 | 315 | # BizTalk build output 316 | *.btp.cs 317 | *.btm.cs 318 | *.odx.cs 319 | *.xsd.cs 320 | 321 | # OpenCover UI analysis results 322 | OpenCover/ 323 | 324 | # Azure Stream Analytics local run output 325 | ASALocalRun/ 326 | 327 | # MSBuild Binary and Structured Log 328 | *.binlog 329 | 330 | # NVidia Nsight GPU debugger configuration file 331 | *.nvuser 332 | 333 | # MFractors (Xamarin productivity tool) working folder 334 | .mfractor/ 335 | 336 | # Local History for Visual Studio 337 | .localhistory/ 338 | 339 | # BeatPulse healthcheck temp database 340 | healthchecksdb -------------------------------------------------------------------------------- /EasyCPDLC/SettingsForm.cs: -------------------------------------------------------------------------------- 1 | /* EASYCPDLC: CPDLC Client for the VATSIM Network 2 | Copyright (C) 2021 Joshua Seagrave joshseagrave@googlemail.com 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | 18 | using System; 19 | using System.Drawing; 20 | using System.Windows.Forms; 21 | 22 | namespace EasyCPDLC 23 | { 24 | 25 | public partial class SettingsForm : Form 26 | { 27 | 28 | UICheckBox stayOnTopBox; 29 | UICheckBox audiblePingBox; 30 | UICheckBox useFSUIPCBox; 31 | UITextBox simbriefTextBox; 32 | 33 | private readonly MainForm parent; 34 | 35 | public const int WM_NCLBUTTONDOWN = 0xA1; 36 | public const int HT_CAPTION = 0x2; 37 | private const int cGrip = 16; 38 | private const int cCaption = 32; 39 | [System.Runtime.InteropServices.DllImport("user32.dll")] 40 | private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); 41 | [System.Runtime.InteropServices.DllImport("user32.dll")] 42 | private static extern bool ReleaseCapture(); 43 | 44 | public SettingsForm(MainForm _parent) 45 | { 46 | parent = _parent; 47 | InitializeComponent(); 48 | InitialiseSettings(); 49 | } 50 | 51 | private void InitialiseSettings() 52 | { 53 | settingsFormatPanel.Controls.Clear(); 54 | stayOnTopBox = CreateCheckBox("Keep Window On Top", "0"); 55 | stayOnTopBox.Checked = parent.StayOnTop; 56 | audiblePingBox = CreateCheckBox("Play Sound on Message Receive", "1"); 57 | audiblePingBox.Checked = MainForm.PlaySound; 58 | useFSUIPCBox = CreateCheckBox("Use Simulator Connection (req. FSUIPC/XPUIPC)", "2"); 59 | useFSUIPCBox.Checked = MainForm.UseFSUIPC; 60 | simbriefTextBox = CreateTextBox(MainForm.SimbriefID, 7, false, true); 61 | 62 | settingsFormatPanel.Controls.Add(stayOnTopBox); 63 | settingsFormatPanel.SetFlowBreak(stayOnTopBox, true); 64 | settingsFormatPanel.Controls.Add(audiblePingBox); 65 | settingsFormatPanel.SetFlowBreak(audiblePingBox, true); 66 | settingsFormatPanel.Controls.Add(useFSUIPCBox); 67 | settingsFormatPanel.SetFlowBreak(useFSUIPCBox, true); 68 | settingsFormatPanel.Controls.Add(CreateTemplate("SIMBRIEF PILOT ID: ")); 69 | settingsFormatPanel.Controls.Add(simbriefTextBox); 70 | } 71 | 72 | private UICheckBox CreateCheckBox(string _text, string _group) 73 | { 74 | UICheckBox _temp = new(_group) 75 | { 76 | BackColor = parent.controlBackColor, 77 | ForeColor = parent.controlFrontColor, 78 | Font = parent.textFont, 79 | Text = _text, 80 | Padding = new Padding(3, 10, 3, -30), 81 | AutoSize = true 82 | }; 83 | return _temp; 84 | } 85 | 86 | private Label CreateTemplate(string _text) 87 | { 88 | Label _temp = new() 89 | { 90 | BackColor = parent.controlBackColor, 91 | ForeColor = parent.controlFrontColor, 92 | Font = parent.textFont, 93 | AutoSize = true, 94 | Text = _text, 95 | Top = 10, 96 | Height = 20, 97 | TextAlign = ContentAlignment.MiddleLeft, 98 | Padding = new Padding(0, 10, 0, 0), 99 | Margin = new Padding(0, 0, 0, 0) 100 | }; 101 | 102 | return _temp; 103 | } 104 | 105 | private UITextBox CreateTextBox(string _text, int _maxLength, bool _readOnly = false, bool _numsOnly = false) 106 | { 107 | UITextBox _temp = new(parent.controlFrontColor) 108 | { 109 | BackColor = parent.controlBackColor, 110 | ForeColor = parent.controlFrontColor, 111 | Font = parent.textFontBold, 112 | MaxLength = _maxLength, 113 | BorderStyle = BorderStyle.None, 114 | Text = _text, 115 | CharacterCasing = CharacterCasing.Upper, 116 | Top = 10, 117 | Padding = new Padding(3, 0, 3, -10), 118 | Height = 20, 119 | ReadOnly = _readOnly, 120 | TextAlign = HorizontalAlignment.Center 121 | }; 122 | 123 | if (_numsOnly) 124 | { 125 | _temp.KeyPress += NumsOnly; 126 | } 127 | 128 | using (Graphics G = _temp.CreateGraphics()) 129 | { 130 | _temp.Width = (int)(_temp.MaxLength * 131 | G.MeasureString("x", _temp.Font).Width); 132 | } 133 | 134 | return _temp; 135 | } 136 | 137 | private void NumsOnly(object sender, KeyPressEventArgs e) 138 | { 139 | if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) 140 | { 141 | e.Handled = true; 142 | } 143 | } 144 | 145 | private void CancelButton_Click(object sender, EventArgs e) 146 | { 147 | this.Close(); 148 | } 149 | 150 | private void OkButton_Click(object sender, EventArgs e) 151 | { 152 | parent.StayOnTop = stayOnTopBox.Checked; 153 | MainForm.PlaySound = audiblePingBox.Checked; 154 | MainForm.UseFSUIPC = useFSUIPCBox.Checked; 155 | MainForm.SimbriefID = simbriefTextBox.Text; 156 | 157 | Properties.Settings.Default.Save(); 158 | this.Close(); 159 | } 160 | 161 | private void ExitButton_Click(object sender, EventArgs e) 162 | { 163 | this.Close(); 164 | } 165 | 166 | private void WindowDrag(object sender, MouseEventArgs e) 167 | { 168 | if (e.Button == MouseButtons.Left) 169 | { 170 | ReleaseCapture(); 171 | _ = SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); 172 | } 173 | } 174 | 175 | protected override void WndProc(ref Message m) 176 | { 177 | if (m.Msg == 0x84) 178 | { // Trap WM_NCHITTEST 179 | Point pos = new(m.LParam.ToInt32()); 180 | pos = this.PointToClient(pos); 181 | if (pos.Y < cCaption) 182 | { 183 | m.Result = (IntPtr)2; // HTCAPTION 184 | return; 185 | } 186 | if (pos.X >= this.ClientSize.Width - cGrip && pos.Y >= this.ClientSize.Height - cGrip) 187 | { 188 | m.Result = (IntPtr)17; // HTBOTTOMRIGHT 189 | return; 190 | } 191 | } 192 | base.WndProc(ref m); 193 | } 194 | } 195 | } 196 | -------------------------------------------------------------------------------- /EasyCPDLC/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\resources\b612mono-regular.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 123 | 124 | 125 | ..\Resources\Stretchboard.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 126 | 127 | 128 | ..\resources\oxygen-regular.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 129 | 130 | 131 | ..\Resources\cog-wheel-gear-setting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 132 | 133 | 134 | ..\Resources\Notification.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 135 | 136 | 137 | ..\Resources\Oxygen-Bold.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 138 | 139 | 140 | ..\Resources\B612Mono-Bold.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 141 | 142 | -------------------------------------------------------------------------------- /EasyCPDLC/SettingsForm.Designer.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace EasyCPDLC 3 | { 4 | partial class SettingsForm 5 | { 6 | /// 7 | /// Required designer variable. 8 | /// 9 | private System.ComponentModel.IContainer components = null; 10 | 11 | /// 12 | /// Clean up any resources being used. 13 | /// 14 | /// true if managed resources should be disposed; otherwise, false. 15 | protected override void Dispose(bool disposing) 16 | { 17 | if (disposing && (components != null)) 18 | { 19 | components.Dispose(); 20 | } 21 | base.Dispose(disposing); 22 | } 23 | 24 | #region Windows Form Designer generated code 25 | 26 | /// 27 | /// Required method for Designer support - do not modify 28 | /// the contents of this method with the code editor. 29 | /// 30 | private void InitializeComponent() 31 | { 32 | this.exitButton = new System.Windows.Forms.Button(); 33 | this.titleLabel = new System.Windows.Forms.Label(); 34 | this.settingsFormatPanel = new System.Windows.Forms.FlowLayoutPanel(); 35 | this.cancelButton = new System.Windows.Forms.Button(); 36 | this.okButton = new System.Windows.Forms.Button(); 37 | this.SuspendLayout(); 38 | // 39 | // exitButton 40 | // 41 | this.exitButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 42 | this.exitButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; 43 | this.exitButton.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); 44 | this.exitButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 45 | this.exitButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 46 | this.exitButton.ForeColor = System.Drawing.SystemColors.ControlLight; 47 | this.exitButton.Location = new System.Drawing.Point(514, -1); 48 | this.exitButton.Name = "exitButton"; 49 | this.exitButton.Size = new System.Drawing.Size(24, 24); 50 | this.exitButton.TabIndex = 10; 51 | this.exitButton.Text = "X"; 52 | this.exitButton.UseVisualStyleBackColor = true; 53 | this.exitButton.Click += new System.EventHandler(this.ExitButton_Click); 54 | // 55 | // titleLabel 56 | // 57 | this.titleLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 58 | this.titleLabel.AutoSize = true; 59 | this.titleLabel.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 60 | this.titleLabel.ForeColor = System.Drawing.SystemColors.ControlLight; 61 | this.titleLabel.Location = new System.Drawing.Point(335, -1); 62 | this.titleLabel.Name = "titleLabel"; 63 | this.titleLabel.Size = new System.Drawing.Size(186, 41); 64 | this.titleLabel.TabIndex = 9; 65 | this.titleLabel.Text = "EasyCPDLC"; 66 | this.titleLabel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.WindowDrag); 67 | // 68 | // settingsFormatPanel 69 | // 70 | this.settingsFormatPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 71 | | System.Windows.Forms.AnchorStyles.Left) 72 | | System.Windows.Forms.AnchorStyles.Right))); 73 | this.settingsFormatPanel.AutoScroll = true; 74 | this.settingsFormatPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); 75 | this.settingsFormatPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 76 | this.settingsFormatPanel.Location = new System.Drawing.Point(11, 43); 77 | this.settingsFormatPanel.Name = "settingsFormatPanel"; 78 | this.settingsFormatPanel.Padding = new System.Windows.Forms.Padding(10, 0, 0, 30); 79 | this.settingsFormatPanel.Size = new System.Drawing.Size(510, 176); 80 | this.settingsFormatPanel.TabIndex = 13; 81 | // 82 | // cancelButton 83 | // 84 | this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 85 | this.cancelButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 86 | this.cancelButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 12F, System.Drawing.FontStyle.Bold); 87 | this.cancelButton.ForeColor = System.Drawing.SystemColors.ControlLight; 88 | this.cancelButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; 89 | this.cancelButton.Location = new System.Drawing.Point(307, 225); 90 | this.cancelButton.Name = "cancelButton"; 91 | this.cancelButton.Size = new System.Drawing.Size(104, 37); 92 | this.cancelButton.TabIndex = 15; 93 | this.cancelButton.Text = "CANCEL"; 94 | this.cancelButton.UseVisualStyleBackColor = true; 95 | this.cancelButton.Click += new System.EventHandler(this.CancelButton_Click); 96 | // 97 | // okButton 98 | // 99 | this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 100 | this.okButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 101 | this.okButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 12F, System.Drawing.FontStyle.Bold); 102 | this.okButton.ForeColor = System.Drawing.SystemColors.ControlLight; 103 | this.okButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; 104 | this.okButton.Location = new System.Drawing.Point(417, 225); 105 | this.okButton.Name = "okButton"; 106 | this.okButton.Size = new System.Drawing.Size(104, 37); 107 | this.okButton.TabIndex = 14; 108 | this.okButton.Text = "OK"; 109 | this.okButton.UseVisualStyleBackColor = true; 110 | this.okButton.Click += new System.EventHandler(this.OkButton_Click); 111 | // 112 | // SettingsForm 113 | // 114 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 115 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 116 | this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); 117 | this.ClientSize = new System.Drawing.Size(537, 274); 118 | this.Controls.Add(this.cancelButton); 119 | this.Controls.Add(this.okButton); 120 | this.Controls.Add(this.settingsFormatPanel); 121 | this.Controls.Add(this.exitButton); 122 | this.Controls.Add(this.titleLabel); 123 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 124 | this.MinimumSize = new System.Drawing.Size(537, 274); 125 | this.Name = "SettingsForm"; 126 | this.Text = "Settings"; 127 | this.ResumeLayout(false); 128 | this.PerformLayout(); 129 | 130 | } 131 | 132 | #endregion 133 | private System.Windows.Forms.Button exitButton; 134 | private System.Windows.Forms.Label titleLabel; 135 | private System.Windows.Forms.FlowLayoutPanel settingsFormatPanel; 136 | private System.Windows.Forms.Button cancelButton; 137 | private System.Windows.Forms.Button okButton; 138 | } 139 | } -------------------------------------------------------------------------------- /EasyCPDLC/DataEntry.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | text/microsoft-resx 50 | 51 | 52 | 2.0 53 | 54 | 55 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 56 | 57 | 58 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 59 | 60 | 61 | 62 | 63 | AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAIkFAACJBQAAAAAAAAAA 64 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 65 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 66 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 67 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 68 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 69 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 70 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 71 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 72 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 73 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MG4+PjHePj40Hj4+Nf4+PjauPj42fj4+NO4+PjKuPj 74 | 4wzj4+MA4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 75 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MM4+PjTOPj45/j4+PU4+Pj3OPj49Pj4+PH4+PjzuPj 76 | 49rj4+Pb4+Pjt+Pj42vj4+Md4+PjAOPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 77 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MB4+PjNOPj46zj4+Ph4+PjsOPj42bj4+My4+PjGOPj 78 | 4xHj4+MT4+PjJePj41Pj4+OY4+Pj3OPj48rj4+NZ4+PjCePj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 79 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MA4+PjAOPj407j4+PZ4+PjwOPj40jj4+MI4+PjAuPj 80 | 4xXj4+Mx4+PjRePj4znj4+Mf4+PjB+Pj4wPj4+Ms4+PjluPj4+Xj4+OH4+PjC+Pj4wAAAAAAAAAAAAAA 81 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+ME4+PjeOPj45Lj4+MZ4+PjA+Pj 82 | 4zjj4+OU4+Pjz+Pj49vj4+PZ4+Pj2ePj49fj4+Ou4+PjWuPj4wzj4+MH4+PjaOPj46rj4+Ma4+PjAAAA 83 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MI4+PjCOPj 84 | 4wvj4+N54+Pj4OPj47/j4+Nu4+PjPuPj4ybj4+My4+PjXOPj46Tj4+Ph4+Pjp+Pj4yXj4+MC4+PjDePj 85 | 4wHj4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 86 | AADj4+MA4+PjI+Pj47nj4+N34+PjEuPj4wXj4+Mh4+PjNOPj4yvj4+MM4+PjBuPj40nj4+O+4+PjWePj 87 | 4wDj4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 88 | AAAAAAAAAAAAAOPj4wDj4+MD4+PjGePj4wPj4+Me4+PjmOPj49rj4+PZ4+Pj2+Pj47rj4+ND4+PjAePj 89 | 4xTj4+MJ4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 90 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj4z3j4+O04+PjY+Pj4zLj4+NH4+PjpePj 91 | 43bj4+MD4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 92 | AAAAAAAA4+PjAOPj4wLj4+MK4+PjDOPj4wzj4+MM4+PjDOPj4wzj4+ML4+PjBePj4wzj4+MY4+PjWePj 93 | 4yzj4+MJ4+PjCePj4wLj4+MD4+PjA+Pj4wPj4+ME4+PjA+Pj4wPj4+MB4+PjAAAAAAAAAAAAAAAAAAAA 94 | AADj4+MA4+PjAePj4xDj4+NG4+PjjOPj47Lj4+O24+PjtuPj47bj4+O24+Pjt+Pj46jj4+Mm4+PjAOPj 95 | 43fj4+P/4+PjtePj4w7j4+MB4+PjXuPj46Dj4+Od4+PjnePj45/j4+Oe4+PjnePj44bj4+Mz4+PjAePj 96 | 4wDj4+MA4+PjB+Pj4yvj4+Nz4+PjwOPj49/j4+O+4+PjjuPj44Lj4+OD4+Pjg+Pj44Pj4+OE4+PjeePj 97 | 4xvj4+MA4+PjWePj4+Hj4+Oa4+PjCuPj4wHj4+Ne4+PjoOPj453j4+Od4+Pjn+Pj453j4+Oe4+PjyuPj 98 | 49Pj4+M54+PjAOPj4wHj4+Nr4+Pj3OPj49Lj4+OQ4+PjQePj4w/j4+MB4+PjAAAAAAAAAAAAAAAAAAAA 99 | AAAAAAAAAAAAAOPj4wDj4+MG4+PjIePj4xDj4+MA4+PjAOPj4wHj4+MD4+PjA+Pj4wPj4+ME4+PjA+Pj 100 | 4wLj4+Md4+PjuuPj46Pj4+MI4+PjBOPj45vj4+O24+PjIuPj4wPj4+MAAAAAAAAAAAAAAAAAAAAAAAAA 101 | AADj4+MA4+PjA+Pj4yDj4+MQ4+PjAAAAAAAAAAAAAAAAAOPj4wDj4+Mo4+PjROPj4wTj4+MAAAAAAAAA 102 | AAAAAAAA4+PjAOPj4wDj4+Nw4+Pjx+Pj4xbj4+ME4+PjnOPj45zj4+MD4+PjAAAAAAAAAAAAAAAAAAAA 103 | AAAAAAAAAAAAAOPj4wDj4+MS4+PjtuPj42fj4+MAAAAAAAAAAADj4+MA4+PjCePj46Hj4+O14+PjDePj 104 | 4wAAAAAAAAAAAAAAAADj4+MA4+PjAOPj44bj4+PB4+PjE+Pj4wTj4+Oc4+PjnePj4wPj4+MA4+PjAOPj 105 | 4wDj4+M74+PjauPj42nj4+Nk4+PjHuPj4ynj4+Pb4+PjTuPj4wAAAAAA4+PjAOPj4wDj4+NR4+Pj5OPj 106 | 41Xj4+MP4+PjHePj4x3j4+Md4+PjHePj4yLj4+Nj4+Pj4OPj433j4+MB4+PjBOPj45zj4+Oc4+PjA+Pj 107 | 4wDj4+MA4+PjFOPj47/j4+Pd4+Pjx+Pj477j4+M54+PjUePj49vj4+Mn4+PjAAAAAADj4+MA4+PjF+Pj 108 | 48Hj4+Oh4+PjDOPj44Dj4+Pb4+Pj2OPj49jj4+PY4+Pj2ePj493j4+OS4+PjFePj4wDj4+MA4+PjkePj 109 | 46nj4+MH4+PjAOPj4wDj4+NY4+Pj3uPj40Lj4+MS4+PjE+Pj4wPj4+N/4+PjwePj4xDj4+MA4+PjAOPj 110 | 4wDj4+Nz4+Pj3OPj4zTj4+MA4+PjMOPj41Hj4+NQ4+PjUOPj41Dj4+NO4+PjLePj4wnj4+MAAAAAAOPj 111 | 4wDj4+OC4+Pjt+Pj4wzj4+MA4+PjC+Pj47Hj4+Ol4+PjB+Pj4wDj4+MA4+PjB+Pj46nj4+OY4+PjAuPj 112 | 4wDj4+MA4+PjLOPj49Xj4+OA4+PjAuPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 113 | AAAAAAAA4+PjAOPj44Lj4+O24+PjDOPj4wDj4+NE4+Pj3+Pj40rj4+MA4+PjAOPj4wDj4+MX4+PjzuPj 114 | 423j4+MA4+PjAOPj4wbj4+OY4+PjyOPj4x3j4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 115 | AAAAAAAAAAAAAAAAAADj4+MA4+PjguPj47bj4+ML4+PjB+Pj45/j4+O54+PjD+Pj4wAAAAAA4+PjAOPj 116 | 4zTj4+Pb4+PjQuPj4wDj4+MA4+PjR+Pj4+Pj4+Nd4+PjAOPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 117 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+OB4+PjxOPj41Lj4+OQ4+Pj6ePj413j4+MA4+PjAAAA 118 | AADj4+MA4+PjYOPj49Tj4+Me4+PjAOPj4xLj4+O44+PjrOPj4wzj4+MAAAAAAAAAAAAAAAAAAAAAAAAA 119 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj43/j4+P44+Pj3OPj48Xj4+Ny4+PjC+Pj 120 | 4wAAAAAA4+PjAOPj4wDj4+OM4+Pjt+Pj4wzj4+MA4+Pja+Pj4+Dj4+M74+PjAAAAAAAAAAAAAAAAAAAA 121 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MA4+PjPuPj42Pj4+Mw4+PjEuPj 122 | 4wLj4+MAAAAAAAAAAADj4+MA4+PjDOPj47Xj4+PF4+PjaePj44Pj4+Pg4+PjhePj4wTj4+MAAAAAAAAA 123 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 124 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MT4+PjquPj48rj4+PH4+PjwuPj43vj4+MT4+PjAAAA 125 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 126 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj4wLj4+MS4+PjFOPj4xTj4+MR4+PjA+Pj 127 | 4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 128 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 131 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 132 | AAAAAAAAAAAAAAAAAAAAAAAA///////////////////////4A///4AD//4AAP/+AAB//AAAf/4AAH//g 133 | AP//4AD///wD//wAAAfgAQABgAEAAQD/GAAH8fH4D/Hh+A4B4AAMAcABjAHEA4hhh/+I4w//gOMf/4Hi 134 | H/+B4j//g8A////Af///wP////////////8= 135 | 136 | 137 | -------------------------------------------------------------------------------- /EasyCPDLC/RequestForm.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | text/microsoft-resx 50 | 51 | 52 | 2.0 53 | 54 | 55 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 56 | 57 | 58 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 59 | 60 | 61 | 62 | 63 | AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAIkFAACJBQAAAAAAAAAA 64 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 65 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 66 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 67 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 68 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 69 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 70 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 71 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 72 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 73 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MG4+PjHePj40Hj4+Nf4+PjauPj42fj4+NO4+PjKuPj 74 | 4wzj4+MA4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 75 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MM4+PjTOPj45/j4+PU4+Pj3OPj49Pj4+PH4+PjzuPj 76 | 49rj4+Pb4+Pjt+Pj42vj4+Md4+PjAOPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 77 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MB4+PjNOPj46zj4+Ph4+PjsOPj42bj4+My4+PjGOPj 78 | 4xHj4+MT4+PjJePj41Pj4+OY4+Pj3OPj48rj4+NZ4+PjCePj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 79 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MA4+PjAOPj407j4+PZ4+PjwOPj40jj4+MI4+PjAuPj 80 | 4xXj4+Mx4+PjRePj4znj4+Mf4+PjB+Pj4wPj4+Ms4+PjluPj4+Xj4+OH4+PjC+Pj4wAAAAAAAAAAAAAA 81 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+ME4+PjeOPj45Lj4+MZ4+PjA+Pj 82 | 4zjj4+OU4+Pjz+Pj49vj4+PZ4+Pj2ePj49fj4+Ou4+PjWuPj4wzj4+MH4+PjaOPj46rj4+Ma4+PjAAAA 83 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MI4+PjCOPj 84 | 4wvj4+N54+Pj4OPj47/j4+Nu4+PjPuPj4ybj4+My4+PjXOPj46Tj4+Ph4+Pjp+Pj4yXj4+MC4+PjDePj 85 | 4wHj4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 86 | AADj4+MA4+PjI+Pj47nj4+N34+PjEuPj4wXj4+Mh4+PjNOPj4yvj4+MM4+PjBuPj40nj4+O+4+PjWePj 87 | 4wDj4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 88 | AAAAAAAAAAAAAOPj4wDj4+MD4+PjGePj4wPj4+Me4+PjmOPj49rj4+PZ4+Pj2+Pj47rj4+ND4+PjAePj 89 | 4xTj4+MJ4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 90 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj4z3j4+O04+PjY+Pj4zLj4+NH4+PjpePj 91 | 43bj4+MD4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 92 | AAAAAAAA4+PjAOPj4wLj4+MK4+PjDOPj4wzj4+MM4+PjDOPj4wzj4+ML4+PjBePj4wzj4+MY4+PjWePj 93 | 4yzj4+MJ4+PjCePj4wLj4+MD4+PjA+Pj4wPj4+ME4+PjA+Pj4wPj4+MB4+PjAAAAAAAAAAAAAAAAAAAA 94 | AADj4+MA4+PjAePj4xDj4+NG4+PjjOPj47Lj4+O24+PjtuPj47bj4+O24+Pjt+Pj46jj4+Mm4+PjAOPj 95 | 43fj4+P/4+PjtePj4w7j4+MB4+PjXuPj46Dj4+Od4+PjnePj45/j4+Oe4+PjnePj44bj4+Mz4+PjAePj 96 | 4wDj4+MA4+PjB+Pj4yvj4+Nz4+PjwOPj49/j4+O+4+PjjuPj44Lj4+OD4+Pjg+Pj44Pj4+OE4+PjeePj 97 | 4xvj4+MA4+PjWePj4+Hj4+Oa4+PjCuPj4wHj4+Ne4+PjoOPj453j4+Od4+Pjn+Pj453j4+Oe4+PjyuPj 98 | 49Pj4+M54+PjAOPj4wHj4+Nr4+Pj3OPj49Lj4+OQ4+PjQePj4w/j4+MB4+PjAAAAAAAAAAAAAAAAAAAA 99 | AAAAAAAAAAAAAOPj4wDj4+MG4+PjIePj4xDj4+MA4+PjAOPj4wHj4+MD4+PjA+Pj4wPj4+ME4+PjA+Pj 100 | 4wLj4+Md4+PjuuPj46Pj4+MI4+PjBOPj45vj4+O24+PjIuPj4wPj4+MAAAAAAAAAAAAAAAAAAAAAAAAA 101 | AADj4+MA4+PjA+Pj4yDj4+MQ4+PjAAAAAAAAAAAAAAAAAOPj4wDj4+Mo4+PjROPj4wTj4+MAAAAAAAAA 102 | AAAAAAAA4+PjAOPj4wDj4+Nw4+Pjx+Pj4xbj4+ME4+PjnOPj45zj4+MD4+PjAAAAAAAAAAAAAAAAAAAA 103 | AAAAAAAAAAAAAOPj4wDj4+MS4+PjtuPj42fj4+MAAAAAAAAAAADj4+MA4+PjCePj46Hj4+O14+PjDePj 104 | 4wAAAAAAAAAAAAAAAADj4+MA4+PjAOPj44bj4+PB4+PjE+Pj4wTj4+Oc4+PjnePj4wPj4+MA4+PjAOPj 105 | 4wDj4+M74+PjauPj42nj4+Nk4+PjHuPj4ynj4+Pb4+PjTuPj4wAAAAAA4+PjAOPj4wDj4+NR4+Pj5OPj 106 | 41Xj4+MP4+PjHePj4x3j4+Md4+PjHePj4yLj4+Nj4+Pj4OPj433j4+MB4+PjBOPj45zj4+Oc4+PjA+Pj 107 | 4wDj4+MA4+PjFOPj47/j4+Pd4+Pjx+Pj477j4+M54+PjUePj49vj4+Mn4+PjAAAAAADj4+MA4+PjF+Pj 108 | 48Hj4+Oh4+PjDOPj44Dj4+Pb4+Pj2OPj49jj4+PY4+Pj2ePj493j4+OS4+PjFePj4wDj4+MA4+PjkePj 109 | 46nj4+MH4+PjAOPj4wDj4+NY4+Pj3uPj40Lj4+MS4+PjE+Pj4wPj4+N/4+PjwePj4xDj4+MA4+PjAOPj 110 | 4wDj4+Nz4+Pj3OPj4zTj4+MA4+PjMOPj41Hj4+NQ4+PjUOPj41Dj4+NO4+PjLePj4wnj4+MAAAAAAOPj 111 | 4wDj4+OC4+Pjt+Pj4wzj4+MA4+PjC+Pj47Hj4+Ol4+PjB+Pj4wDj4+MA4+PjB+Pj46nj4+OY4+PjAuPj 112 | 4wDj4+MA4+PjLOPj49Xj4+OA4+PjAuPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 113 | AAAAAAAA4+PjAOPj44Lj4+O24+PjDOPj4wDj4+NE4+Pj3+Pj40rj4+MA4+PjAOPj4wDj4+MX4+PjzuPj 114 | 423j4+MA4+PjAOPj4wbj4+OY4+PjyOPj4x3j4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 115 | AAAAAAAAAAAAAAAAAADj4+MA4+PjguPj47bj4+ML4+PjB+Pj45/j4+O54+PjD+Pj4wAAAAAA4+PjAOPj 116 | 4zTj4+Pb4+PjQuPj4wDj4+MA4+PjR+Pj4+Pj4+Nd4+PjAOPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 117 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+OB4+PjxOPj41Lj4+OQ4+Pj6ePj413j4+MA4+PjAAAA 118 | AADj4+MA4+PjYOPj49Tj4+Me4+PjAOPj4xLj4+O44+PjrOPj4wzj4+MAAAAAAAAAAAAAAAAAAAAAAAAA 119 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj43/j4+P44+Pj3OPj48Xj4+Ny4+PjC+Pj 120 | 4wAAAAAA4+PjAOPj4wDj4+OM4+Pjt+Pj4wzj4+MA4+Pja+Pj4+Dj4+M74+PjAAAAAAAAAAAAAAAAAAAA 121 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MA4+PjPuPj42Pj4+Mw4+PjEuPj 122 | 4wLj4+MAAAAAAAAAAADj4+MA4+PjDOPj47Xj4+PF4+PjaePj44Pj4+Pg4+PjhePj4wTj4+MAAAAAAAAA 123 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 124 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MT4+PjquPj48rj4+PH4+PjwuPj43vj4+MT4+PjAAAA 125 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 126 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj4wLj4+MS4+PjFOPj4xTj4+MR4+PjA+Pj 127 | 4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 128 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 131 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 132 | AAAAAAAAAAAAAAAAAAAAAAAA///////////////////////4A///4AD//4AAP/+AAB//AAAf/4AAH//g 133 | AP//4AD///wD//wAAAfgAQABgAEAAQD/GAAH8fH4D/Hh+A4B4AAMAcABjAHEA4hhh/+I4w//gOMf/4Hi 134 | H/+B4j//g8A////Af///wP////////////8= 135 | 136 | 137 | -------------------------------------------------------------------------------- /EasyCPDLC/TelexForm.cs: -------------------------------------------------------------------------------- 1 | /* EASYCPDLC: CPDLC Client for the VATSIM Network 2 | Copyright (C) 2021 Joshua Seagrave joshseagrave@googlemail.com 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | 18 | 19 | 20 | using System; 21 | using System.Drawing; 22 | using System.Linq; 23 | using System.Threading.Tasks; 24 | using System.Windows.Forms; 25 | using FSUIPC; 26 | 27 | namespace EasyCPDLC 28 | { 29 | 30 | public partial class TelexForm : Form 31 | { 32 | 33 | public const int WM_NCLBUTTONDOWN = 0xA1; 34 | public const int HT_CAPTION = 0x2; 35 | private const int cGrip = 16; 36 | private const int cCaption = 32; 37 | 38 | [System.Runtime.InteropServices.DllImport("user32.dll")] 39 | private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); 40 | [System.Runtime.InteropServices.DllImport("user32.dll")] 41 | private static extern bool ReleaseCapture(); 42 | 43 | private bool isReply = false; 44 | 45 | private readonly MainForm parent; 46 | private readonly Color controlBackColor; 47 | private readonly Color controlFrontColor; 48 | private readonly Font textFont; 49 | private readonly Font textFontBold; 50 | private readonly string recipient; 51 | public TelexForm(MainForm _parent, string _recipient = null) 52 | { 53 | InitializeComponent(); 54 | parent = _parent; 55 | controlBackColor = parent.controlBackColor; 56 | controlFrontColor = parent.controlFrontColor; 57 | textFont = parent.textFont; 58 | textFontBold = parent.textFontBold; 59 | recipient = _recipient is null ? null : _recipient; 60 | isReply = _recipient is not null; 61 | 62 | this.TopMost = parent.TopMost; 63 | } 64 | 65 | private AccessibleLabel CreateTemplate(string _text) 66 | { 67 | AccessibleLabel _temp = new(controlFrontColor) 68 | { 69 | BackColor = controlBackColor, 70 | ForeColor = controlFrontColor, 71 | Font = textFont, 72 | AutoSize = true, 73 | Text = _text, 74 | Top = 10, 75 | Height = 20, 76 | TextAlign = ContentAlignment.MiddleLeft, 77 | Padding = new Padding(0, 10, 0, 0), 78 | Margin = new Padding(0, 0, 0, 0), 79 | TabStop = true, 80 | TabIndex = 0 81 | }; 82 | 83 | return _temp; 84 | } 85 | 86 | private UITextBox CreateTextBox(string _text, int _maxLength) 87 | { 88 | UITextBox _temp = new(controlFrontColor) 89 | { 90 | BackColor = controlBackColor, 91 | ForeColor = controlFrontColor, 92 | Font = textFontBold, 93 | MaxLength = _maxLength, 94 | BorderStyle = BorderStyle.None, 95 | Text = _text, 96 | CharacterCasing = CharacterCasing.Upper, 97 | Top = 10, 98 | PlaceholderText = new string('▯', _maxLength), 99 | Height = 30, 100 | TextAlign = HorizontalAlignment.Left, 101 | TabIndex = 0, 102 | Anchor = AnchorStyles.Left 103 | }; 104 | 105 | using (Graphics G = _temp.CreateGraphics()) 106 | { 107 | _temp.Width = (int)(_temp.MaxLength * 108 | G.MeasureString("▯", _temp.Font).Width * 1.5); 109 | } 110 | 111 | return _temp; 112 | } 113 | 114 | 115 | private UITextBox CreateMultiLineBox(string _text) 116 | { 117 | UITextBox _temp = new(controlFrontColor) 118 | { 119 | BackColor = controlBackColor, 120 | ForeColor = controlFrontColor, 121 | Font = textFontBold, 122 | BorderStyle = BorderStyle.None, 123 | Width = messageFormatPanel.Width - 50, 124 | Multiline = true, 125 | WordWrap = true, 126 | PlaceholderText = "Your message here...", 127 | Text = _text, 128 | MaxLength = 255, 129 | Height = 20, 130 | TabIndex = 0 131 | }; 132 | _temp.TextChanged += ExpandMultiLineBox; 133 | 134 | _temp.CharacterCasing = CharacterCasing.Upper; 135 | _temp.Padding = new Padding(3, 0, 3, -10); 136 | _temp.Margin = new Padding(3, 5, 3, -10); 137 | _temp.TextAlign = HorizontalAlignment.Left; 138 | 139 | return _temp; 140 | } 141 | 142 | private void ExitButton_Click(object sender, EventArgs e) 143 | { 144 | this.Close(); 145 | } 146 | 147 | private void WindowDrag(object sender, MouseEventArgs e) 148 | { 149 | if (e.Button == MouseButtons.Left) 150 | { 151 | ReleaseCapture(); 152 | _ = SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); 153 | } 154 | } 155 | private void ReloadPanel(object sender, EventArgs e) 156 | { 157 | if (Properties.Settings.Default.TelexWindowLocation != new Point(0, 0)) 158 | { 159 | Location = Properties.Settings.Default.TelexWindowLocation; 160 | Size = Properties.Settings.Default.TelexWindowSize; 161 | } 162 | freeTextButton.PerformClick(); 163 | } 164 | 165 | private void ResetPanel(object sender, EventArgs e) 166 | { 167 | freeTextButton.PerformClick(); 168 | } 169 | 170 | private void ExpandMultiLineBox(object sender, EventArgs e) 171 | { 172 | TextBox _sender = (TextBox)sender; 173 | // amount of padding to add 174 | const int padding = 3; 175 | // get number of lines (first line is 0, so add 1) 176 | int numLines = _sender.GetLineFromCharIndex(_sender.TextLength) + 1; 177 | // get border thickness 178 | int border = _sender.Height - _sender.ClientSize.Height; 179 | // set height (height of one line * number of lines + spacing) 180 | _sender.Height = _sender.Font.Height * numLines + padding + border; 181 | ScrollToBottom(messageFormatPanel); 182 | } 183 | 184 | private static void ScrollToBottom(FlowLayoutPanel p) 185 | { 186 | using Control c = new() { Parent = p, Dock = DockStyle.Bottom }; 187 | p.ScrollControlIntoView(c); 188 | c.Parent = null; 189 | } 190 | 191 | private void SendButton_Click(object sender, EventArgs e) 192 | { 193 | RadioButton radioBtn = radioContainer.Controls.OfType() 194 | .Where(x => x.Checked).FirstOrDefault(); 195 | 196 | if (radioBtn != null || messageFormatPanel.Controls[1].Text.Length < 4) 197 | { 198 | 199 | string _recipient = messageFormatPanel.Controls[1].Text; 200 | 201 | switch (radioBtn.Name) 202 | { 203 | case "freeTextRadioButton": 204 | string _formatMessage = messageFormatPanel.Controls[3].Text; 205 | _ = Task.Run(() => this.parent.SendCPDLCMessage(_recipient, "TELEX", _formatMessage.Trim())); 206 | break; 207 | 208 | case "metarRadioButton": 209 | this.parent.WriteMessage("METAR REQUEST", "METAR", _recipient, true); 210 | this.parent.ArtificialDelay("METAR " + _recipient, "INFOREQ", "REQUEST"); 211 | 212 | break; 213 | 214 | case "atisRadioButton": 215 | 216 | this.parent.WriteMessage("ATIS REQUEST", "ATIS", _recipient, true); 217 | this.parent.ArtificialDelay("VATATIS " + _recipient, "INFOREQ", "REQUEST"); 218 | 219 | break; 220 | 221 | default: 222 | break; 223 | } 224 | if(isReply) 225 | { 226 | parent.ClearPreview(); 227 | } 228 | this.Close(); 229 | 230 | 231 | } 232 | else 233 | { 234 | 235 | } 236 | 237 | 238 | } 239 | 240 | protected override void WndProc(ref Message m) 241 | { 242 | if (m.Msg == 0x84) 243 | { // Trap WM_NCHITTEST 244 | Point pos = new(m.LParam.ToInt32()); 245 | pos = this.PointToClient(pos); 246 | if (pos.Y < cCaption) 247 | { 248 | m.Result = (IntPtr)2; // HTCAPTION 249 | return; 250 | } 251 | if (pos.X >= this.ClientSize.Width - cGrip && pos.Y >= this.ClientSize.Height - cGrip) 252 | { 253 | m.Result = (IntPtr)17; // HTBOTTOMRIGHT 254 | return; 255 | } 256 | } 257 | base.WndProc(ref m); 258 | } 259 | 260 | private void FreeTextButton_Click(object sender, EventArgs e) 261 | { 262 | messageFormatPanel.Controls.Clear(); 263 | messageFormatPanel.Controls.Add(CreateTemplate("RECIPIENT:")); 264 | messageFormatPanel.Controls.Add(CreateTextBox(recipient is null ? "" : recipient, 7)); 265 | messageFormatPanel.SetFlowBreak(messageFormatPanel.Controls[messageFormatPanel.Controls.Count - 1], true); 266 | messageFormatPanel.Controls.Add(CreateTemplate("MSG:")); 267 | messageFormatPanel.SetFlowBreak(messageFormatPanel.Controls[messageFormatPanel.Controls.Count - 1], true); 268 | messageFormatPanel.Controls.Add(CreateMultiLineBox("")); 269 | 270 | freeTextRadioButton.Checked = true; 271 | } 272 | 273 | private void MetarButton_Click(object sender, EventArgs e) 274 | { 275 | messageFormatPanel.Controls.Clear(); 276 | messageFormatPanel.Controls.Add(CreateTemplate("STATION:")); 277 | try 278 | { 279 | if (parent.fsuipc.groundspeed < 100) 280 | { 281 | messageFormatPanel.Controls.Add(CreateTextBox(parent.userVATSIMData.flight_plan.departure, 4)); 282 | } 283 | else 284 | { 285 | messageFormatPanel.Controls.Add(CreateTextBox(parent.userVATSIMData.flight_plan.arrival, 4)); 286 | } 287 | } 288 | catch 289 | { 290 | messageFormatPanel.Controls.Add(CreateTextBox("", 4)); 291 | } 292 | 293 | 294 | metarRadioButton.Checked = true; 295 | } 296 | 297 | private void AtisButton_Click(object sender, EventArgs e) 298 | { 299 | messageFormatPanel.Controls.Clear(); 300 | messageFormatPanel.Controls.Add(CreateTemplate("STATION:")); 301 | try 302 | { 303 | if (parent.fsuipc.groundspeed < 100) 304 | { 305 | messageFormatPanel.Controls.Add(CreateTextBox(parent.userVATSIMData.flight_plan.departure, 4)); 306 | } 307 | else 308 | { 309 | messageFormatPanel.Controls.Add(CreateTextBox(parent.userVATSIMData.flight_plan.arrival, 4)); 310 | } 311 | } 312 | catch 313 | { 314 | messageFormatPanel.Controls.Add(CreateTextBox("", 4)); 315 | } 316 | 317 | 318 | atisRadioButton.Checked = true; 319 | } 320 | 321 | private void TelexForm_FormClosing(object sender, FormClosingEventArgs e) 322 | { 323 | Properties.Settings.Default.TelexWindowLocation = Location; 324 | Properties.Settings.Default.TelexWindowSize = Size; 325 | Properties.Settings.Default.Save(); 326 | } 327 | } 328 | } 329 | -------------------------------------------------------------------------------- /EasyCPDLC/TelexForm.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAIkFAACJBQAAAAAAAAAA 124 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 125 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 126 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 128 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 131 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 132 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 133 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MG4+PjHePj40Hj4+Nf4+PjauPj42fj4+NO4+PjKuPj 134 | 4wzj4+MA4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 135 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MM4+PjTOPj45/j4+PU4+Pj3OPj49Pj4+PH4+PjzuPj 136 | 49rj4+Pb4+Pjt+Pj42vj4+Md4+PjAOPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 137 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MB4+PjNOPj46zj4+Ph4+PjsOPj42bj4+My4+PjGOPj 138 | 4xHj4+MT4+PjJePj41Pj4+OY4+Pj3OPj48rj4+NZ4+PjCePj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 139 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MA4+PjAOPj407j4+PZ4+PjwOPj40jj4+MI4+PjAuPj 140 | 4xXj4+Mx4+PjRePj4znj4+Mf4+PjB+Pj4wPj4+Ms4+PjluPj4+Xj4+OH4+PjC+Pj4wAAAAAAAAAAAAAA 141 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+ME4+PjeOPj45Lj4+MZ4+PjA+Pj 142 | 4zjj4+OU4+Pjz+Pj49vj4+PZ4+Pj2ePj49fj4+Ou4+PjWuPj4wzj4+MH4+PjaOPj46rj4+Ma4+PjAAAA 143 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MI4+PjCOPj 144 | 4wvj4+N54+Pj4OPj47/j4+Nu4+PjPuPj4ybj4+My4+PjXOPj46Tj4+Ph4+Pjp+Pj4yXj4+MC4+PjDePj 145 | 4wHj4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 146 | AADj4+MA4+PjI+Pj47nj4+N34+PjEuPj4wXj4+Mh4+PjNOPj4yvj4+MM4+PjBuPj40nj4+O+4+PjWePj 147 | 4wDj4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 148 | AAAAAAAAAAAAAOPj4wDj4+MD4+PjGePj4wPj4+Me4+PjmOPj49rj4+PZ4+Pj2+Pj47rj4+ND4+PjAePj 149 | 4xTj4+MJ4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 150 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj4z3j4+O04+PjY+Pj4zLj4+NH4+PjpePj 151 | 43bj4+MD4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 152 | AAAAAAAA4+PjAOPj4wLj4+MK4+PjDOPj4wzj4+MM4+PjDOPj4wzj4+ML4+PjBePj4wzj4+MY4+PjWePj 153 | 4yzj4+MJ4+PjCePj4wLj4+MD4+PjA+Pj4wPj4+ME4+PjA+Pj4wPj4+MB4+PjAAAAAAAAAAAAAAAAAAAA 154 | AADj4+MA4+PjAePj4xDj4+NG4+PjjOPj47Lj4+O24+PjtuPj47bj4+O24+Pjt+Pj46jj4+Mm4+PjAOPj 155 | 43fj4+P/4+PjtePj4w7j4+MB4+PjXuPj46Dj4+Od4+PjnePj45/j4+Oe4+PjnePj44bj4+Mz4+PjAePj 156 | 4wDj4+MA4+PjB+Pj4yvj4+Nz4+PjwOPj49/j4+O+4+PjjuPj44Lj4+OD4+Pjg+Pj44Pj4+OE4+PjeePj 157 | 4xvj4+MA4+PjWePj4+Hj4+Oa4+PjCuPj4wHj4+Ne4+PjoOPj453j4+Od4+Pjn+Pj453j4+Oe4+PjyuPj 158 | 49Pj4+M54+PjAOPj4wHj4+Nr4+Pj3OPj49Lj4+OQ4+PjQePj4w/j4+MB4+PjAAAAAAAAAAAAAAAAAAAA 159 | AAAAAAAAAAAAAOPj4wDj4+MG4+PjIePj4xDj4+MA4+PjAOPj4wHj4+MD4+PjA+Pj4wPj4+ME4+PjA+Pj 160 | 4wLj4+Md4+PjuuPj46Pj4+MI4+PjBOPj45vj4+O24+PjIuPj4wPj4+MAAAAAAAAAAAAAAAAAAAAAAAAA 161 | AADj4+MA4+PjA+Pj4yDj4+MQ4+PjAAAAAAAAAAAAAAAAAOPj4wDj4+Mo4+PjROPj4wTj4+MAAAAAAAAA 162 | AAAAAAAA4+PjAOPj4wDj4+Nw4+Pjx+Pj4xbj4+ME4+PjnOPj45zj4+MD4+PjAAAAAAAAAAAAAAAAAAAA 163 | AAAAAAAAAAAAAOPj4wDj4+MS4+PjtuPj42fj4+MAAAAAAAAAAADj4+MA4+PjCePj46Hj4+O14+PjDePj 164 | 4wAAAAAAAAAAAAAAAADj4+MA4+PjAOPj44bj4+PB4+PjE+Pj4wTj4+Oc4+PjnePj4wPj4+MA4+PjAOPj 165 | 4wDj4+M74+PjauPj42nj4+Nk4+PjHuPj4ynj4+Pb4+PjTuPj4wAAAAAA4+PjAOPj4wDj4+NR4+Pj5OPj 166 | 41Xj4+MP4+PjHePj4x3j4+Md4+PjHePj4yLj4+Nj4+Pj4OPj433j4+MB4+PjBOPj45zj4+Oc4+PjA+Pj 167 | 4wDj4+MA4+PjFOPj47/j4+Pd4+Pjx+Pj477j4+M54+PjUePj49vj4+Mn4+PjAAAAAADj4+MA4+PjF+Pj 168 | 48Hj4+Oh4+PjDOPj44Dj4+Pb4+Pj2OPj49jj4+PY4+Pj2ePj493j4+OS4+PjFePj4wDj4+MA4+PjkePj 169 | 46nj4+MH4+PjAOPj4wDj4+NY4+Pj3uPj40Lj4+MS4+PjE+Pj4wPj4+N/4+PjwePj4xDj4+MA4+PjAOPj 170 | 4wDj4+Nz4+Pj3OPj4zTj4+MA4+PjMOPj41Hj4+NQ4+PjUOPj41Dj4+NO4+PjLePj4wnj4+MAAAAAAOPj 171 | 4wDj4+OC4+Pjt+Pj4wzj4+MA4+PjC+Pj47Hj4+Ol4+PjB+Pj4wDj4+MA4+PjB+Pj46nj4+OY4+PjAuPj 172 | 4wDj4+MA4+PjLOPj49Xj4+OA4+PjAuPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 173 | AAAAAAAA4+PjAOPj44Lj4+O24+PjDOPj4wDj4+NE4+Pj3+Pj40rj4+MA4+PjAOPj4wDj4+MX4+PjzuPj 174 | 423j4+MA4+PjAOPj4wbj4+OY4+PjyOPj4x3j4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 175 | AAAAAAAAAAAAAAAAAADj4+MA4+PjguPj47bj4+ML4+PjB+Pj45/j4+O54+PjD+Pj4wAAAAAA4+PjAOPj 176 | 4zTj4+Pb4+PjQuPj4wDj4+MA4+PjR+Pj4+Pj4+Nd4+PjAOPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 177 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+OB4+PjxOPj41Lj4+OQ4+Pj6ePj413j4+MA4+PjAAAA 178 | AADj4+MA4+PjYOPj49Tj4+Me4+PjAOPj4xLj4+O44+PjrOPj4wzj4+MAAAAAAAAAAAAAAAAAAAAAAAAA 179 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj43/j4+P44+Pj3OPj48Xj4+Ny4+PjC+Pj 180 | 4wAAAAAA4+PjAOPj4wDj4+OM4+Pjt+Pj4wzj4+MA4+Pja+Pj4+Dj4+M74+PjAAAAAAAAAAAAAAAAAAAA 181 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MA4+PjPuPj42Pj4+Mw4+PjEuPj 182 | 4wLj4+MAAAAAAAAAAADj4+MA4+PjDOPj47Xj4+PF4+PjaePj44Pj4+Pg4+PjhePj4wTj4+MAAAAAAAAA 183 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 184 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MT4+PjquPj48rj4+PH4+PjwuPj43vj4+MT4+PjAAAA 185 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 186 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj4wLj4+MS4+PjFOPj4xTj4+MR4+PjA+Pj 187 | 4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 188 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 189 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 190 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 191 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 192 | AAAAAAAAAAAAAAAAAAAAAAAA///////////////////////4A///4AD//4AAP/+AAB//AAAf/4AAH//g 193 | AP//4AD///wD//wAAAfgAQABgAEAAQD/GAAH8fH4D/Hh+A4B4AAMAcABjAHEA4hhh/+I4w//gOMf/4Hi 194 | H/+B4j//g8A////Af///wP////////////8= 195 | 196 | 197 | -------------------------------------------------------------------------------- /EasyCPDLC/MainForm.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | text/microsoft-resx 50 | 51 | 52 | 2.0 53 | 54 | 55 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 56 | 57 | 58 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 59 | 60 | 61 | 17, 17 62 | 63 | 64 | 65 | AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs 66 | LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu 67 | SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA4AcAAAJNU0Z0AUkBTAMBAQAB 68 | UAEAAVABAAESAQABEgEABP8BCQEACP8BQgFNATYBBAYAATYBBAIAASgDAAFIAwABEgMAAQEBAAEIBQAB 69 | EAEFGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEAAfABygGmAQABMwUAATMB 70 | AAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEAAYABfAH/AQACUAH/AQAB 71 | kwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFmAwABmQMAAcwCAAEzAwAC 72 | MwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZAgABZgHMAgABZgH/AgAB 73 | mQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFmAgABzAGZAgACzAIAAcwB 74 | /wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEzAQABmQEAATMBAAHMAQAB 75 | MwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFmAgABMwFmATMBAAEzAmYB 76 | AAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFmAQABMwKZAQABMwGZAcwB 77 | AAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEAATMBzAH/AQABMwH/ATMB 78 | AAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFmAQABZgEAAWYBAAGZAQAB 79 | ZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFmATMBzAEAAWYBMwH/AQAC 80 | ZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFmAQABZgKZAQABZgGZAcwB 81 | AAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEAAWYB/wIAAWYB/wEzAQAB 82 | ZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZAQABmQEAAZkBAAHMAQAB 83 | mQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEzAQABmQEzAWYBAAGZAWYB 84 | mQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/AQABmQHMAgABmQHMATMB 85 | AAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEAAZkBzAFmAQABmQH/AZkB 86 | AAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHMAQABzAEAAZkBMwIAAcwC 87 | MwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFmATMBAAGZAmYBAAHMAWYB 88 | mQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZAQABzAGZAcwBAAHMAZkB 89 | /wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/ATMBAAGZAf8BZgEAAcwB 90 | /wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHMATMCAAH/AjMBAAH/ATMB 91 | ZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJmAQAB/wFmAZkBAAH/AWYB 92 | zAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHMAQAB/wGZAf8BAAH/AcwC 93 | AAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEAAcwB/wFmAQAC/wGZAQAC 94 | /wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEAASEBAAGlAQADXwEAA3cB 95 | AAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7Af8BAAGkAqABAAOAAwAB 96 | /wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/9RAAPyQQAB/wHyAgAD8gIAAfIB/zwAAf8L8gH/OwAN 97 | 8jwAC/I9AATyAwAE8jsABfIFAAXyOQAF8gUABfI5AAXyBQAF8jsABPIDAATyPQAL8jwADPIB8zsAAfML 98 | 8gH/PAAB8wHyAgAD8gIAAfIB/0EAA/LNAAFCAU0BPgcAAT4DAAEoAwABSAMAARIDAAEBAQABAQUAAdgX 99 | AAP/AQAC/wHACQAB/wEfAcAJAAHzARkBwAkAAeABAAHACQAB4AEAAcAJAAHwAQEBwAkAAfAB4QHACQAB 100 | wQHwAUAJAAHBAfABQAkAAcEB8AFACQAB8AHhAcAJAAHwAQEBwAkAAeABAAHACQAB4AEAAcAJAAHzARkB 101 | wAkAAf8BHwHACQAC/wHACQAC/wHACQAL 102 | 103 | 104 | 105 | 106 | 107 | AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAIkFAACJBQAAAAAAAAAA 108 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 109 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 110 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 111 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 112 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 113 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 114 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 115 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 116 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 117 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MG4+PjHePj40Hj4+Nf4+PjauPj42fj4+NO4+PjKuPj 118 | 4wzj4+MA4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 119 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MM4+PjTOPj45/j4+PU4+Pj3OPj49Pj4+PH4+PjzuPj 120 | 49rj4+Pb4+Pjt+Pj42vj4+Md4+PjAOPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 121 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MB4+PjNOPj46zj4+Ph4+PjsOPj42bj4+My4+PjGOPj 122 | 4xHj4+MT4+PjJePj41Pj4+OY4+Pj3OPj48rj4+NZ4+PjCePj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 123 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MA4+PjAOPj407j4+PZ4+PjwOPj40jj4+MI4+PjAuPj 124 | 4xXj4+Mx4+PjRePj4znj4+Mf4+PjB+Pj4wPj4+Ms4+PjluPj4+Xj4+OH4+PjC+Pj4wAAAAAAAAAAAAAA 125 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+ME4+PjeOPj45Lj4+MZ4+PjA+Pj 126 | 4zjj4+OU4+Pjz+Pj49vj4+PZ4+Pj2ePj49fj4+Ou4+PjWuPj4wzj4+MH4+PjaOPj46rj4+Ma4+PjAAAA 127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MI4+PjCOPj 128 | 4wvj4+N54+Pj4OPj47/j4+Nu4+PjPuPj4ybj4+My4+PjXOPj46Tj4+Ph4+Pjp+Pj4yXj4+MC4+PjDePj 129 | 4wHj4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 130 | AADj4+MA4+PjI+Pj47nj4+N34+PjEuPj4wXj4+Mh4+PjNOPj4yvj4+MM4+PjBuPj40nj4+O+4+PjWePj 131 | 4wDj4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 132 | AAAAAAAAAAAAAOPj4wDj4+MD4+PjGePj4wPj4+Me4+PjmOPj49rj4+PZ4+Pj2+Pj47rj4+ND4+PjAePj 133 | 4xTj4+MJ4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 134 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj4z3j4+O04+PjY+Pj4zLj4+NH4+PjpePj 135 | 43bj4+MD4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 136 | AAAAAAAA4+PjAOPj4wLj4+MK4+PjDOPj4wzj4+MM4+PjDOPj4wzj4+ML4+PjBePj4wzj4+MY4+PjWePj 137 | 4yzj4+MJ4+PjCePj4wLj4+MD4+PjA+Pj4wPj4+ME4+PjA+Pj4wPj4+MB4+PjAAAAAAAAAAAAAAAAAAAA 138 | AADj4+MA4+PjAePj4xDj4+NG4+PjjOPj47Lj4+O24+PjtuPj47bj4+O24+Pjt+Pj46jj4+Mm4+PjAOPj 139 | 43fj4+P/4+PjtePj4w7j4+MB4+PjXuPj46Dj4+Od4+PjnePj45/j4+Oe4+PjnePj44bj4+Mz4+PjAePj 140 | 4wDj4+MA4+PjB+Pj4yvj4+Nz4+PjwOPj49/j4+O+4+PjjuPj44Lj4+OD4+Pjg+Pj44Pj4+OE4+PjeePj 141 | 4xvj4+MA4+PjWePj4+Hj4+Oa4+PjCuPj4wHj4+Ne4+PjoOPj453j4+Od4+Pjn+Pj453j4+Oe4+PjyuPj 142 | 49Pj4+M54+PjAOPj4wHj4+Nr4+Pj3OPj49Lj4+OQ4+PjQePj4w/j4+MB4+PjAAAAAAAAAAAAAAAAAAAA 143 | AAAAAAAAAAAAAOPj4wDj4+MG4+PjIePj4xDj4+MA4+PjAOPj4wHj4+MD4+PjA+Pj4wPj4+ME4+PjA+Pj 144 | 4wLj4+Md4+PjuuPj46Pj4+MI4+PjBOPj45vj4+O24+PjIuPj4wPj4+MAAAAAAAAAAAAAAAAAAAAAAAAA 145 | AADj4+MA4+PjA+Pj4yDj4+MQ4+PjAAAAAAAAAAAAAAAAAOPj4wDj4+Mo4+PjROPj4wTj4+MAAAAAAAAA 146 | AAAAAAAA4+PjAOPj4wDj4+Nw4+Pjx+Pj4xbj4+ME4+PjnOPj45zj4+MD4+PjAAAAAAAAAAAAAAAAAAAA 147 | AAAAAAAAAAAAAOPj4wDj4+MS4+PjtuPj42fj4+MAAAAAAAAAAADj4+MA4+PjCePj46Hj4+O14+PjDePj 148 | 4wAAAAAAAAAAAAAAAADj4+MA4+PjAOPj44bj4+PB4+PjE+Pj4wTj4+Oc4+PjnePj4wPj4+MA4+PjAOPj 149 | 4wDj4+M74+PjauPj42nj4+Nk4+PjHuPj4ynj4+Pb4+PjTuPj4wAAAAAA4+PjAOPj4wDj4+NR4+Pj5OPj 150 | 41Xj4+MP4+PjHePj4x3j4+Md4+PjHePj4yLj4+Nj4+Pj4OPj433j4+MB4+PjBOPj45zj4+Oc4+PjA+Pj 151 | 4wDj4+MA4+PjFOPj47/j4+Pd4+Pjx+Pj477j4+M54+PjUePj49vj4+Mn4+PjAAAAAADj4+MA4+PjF+Pj 152 | 48Hj4+Oh4+PjDOPj44Dj4+Pb4+Pj2OPj49jj4+PY4+Pj2ePj493j4+OS4+PjFePj4wDj4+MA4+PjkePj 153 | 46nj4+MH4+PjAOPj4wDj4+NY4+Pj3uPj40Lj4+MS4+PjE+Pj4wPj4+N/4+PjwePj4xDj4+MA4+PjAOPj 154 | 4wDj4+Nz4+Pj3OPj4zTj4+MA4+PjMOPj41Hj4+NQ4+PjUOPj41Dj4+NO4+PjLePj4wnj4+MAAAAAAOPj 155 | 4wDj4+OC4+Pjt+Pj4wzj4+MA4+PjC+Pj47Hj4+Ol4+PjB+Pj4wDj4+MA4+PjB+Pj46nj4+OY4+PjAuPj 156 | 4wDj4+MA4+PjLOPj49Xj4+OA4+PjAuPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 157 | AAAAAAAA4+PjAOPj44Lj4+O24+PjDOPj4wDj4+NE4+Pj3+Pj40rj4+MA4+PjAOPj4wDj4+MX4+PjzuPj 158 | 423j4+MA4+PjAOPj4wbj4+OY4+PjyOPj4x3j4+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 159 | AAAAAAAAAAAAAAAAAADj4+MA4+PjguPj47bj4+ML4+PjB+Pj45/j4+O54+PjD+Pj4wAAAAAA4+PjAOPj 160 | 4zTj4+Pb4+PjQuPj4wDj4+MA4+PjR+Pj4+Pj4+Nd4+PjAOPj4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 161 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+OB4+PjxOPj41Lj4+OQ4+Pj6ePj413j4+MA4+PjAAAA 162 | AADj4+MA4+PjYOPj49Tj4+Me4+PjAOPj4xLj4+O44+PjrOPj4wzj4+MAAAAAAAAAAAAAAAAAAAAAAAAA 163 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj43/j4+P44+Pj3OPj48Xj4+Ny4+PjC+Pj 164 | 4wAAAAAA4+PjAOPj4wDj4+OM4+Pjt+Pj4wzj4+MA4+Pja+Pj4+Dj4+M74+PjAAAAAAAAAAAAAAAAAAAA 165 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MA4+PjPuPj42Pj4+Mw4+PjEuPj 166 | 4wLj4+MAAAAAAAAAAADj4+MA4+PjDOPj47Xj4+PF4+PjaePj44Pj4+Pg4+PjhePj4wTj4+MAAAAAAAAA 167 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 168 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDj4+MT4+PjquPj48rj4+PH4+PjwuPj43vj4+MT4+PjAAAA 169 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 170 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+PjAOPj4wLj4+MS4+PjFOPj4xTj4+MR4+PjA+Pj 171 | 4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 172 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 173 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 174 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 175 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 176 | AAAAAAAAAAAAAAAAAAAAAAAA///////////////////////4A///4AD//4AAP/+AAB//AAAf/4AAH//g 177 | AP//4AD///wD//wAAAfgAQABgAEAAQD/GAAH8fH4D/Hh+A4B4AAMAcABjAHEA4hhh/+I4w//gOMf/4Hi 178 | H/+B4j//g8A////Af///wP////////////8= 179 | 180 | 181 | -------------------------------------------------------------------------------- /EasyCPDLC/DataEntry.Designer.cs: -------------------------------------------------------------------------------- 1 | /* EASYCPDLC: CPDLC Client for the VATSIM Network 2 | Copyright (C) 2021 Joshua Seagrave joshseagrave@googlemail.com 3 | 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program. If not, see . 16 | */ 17 | 18 | 19 | 20 | namespace EasyCPDLC 21 | { 22 | partial class DataEntry 23 | { 24 | /// 25 | /// Required designer variable. 26 | /// 27 | private System.ComponentModel.IContainer components = null; 28 | 29 | /// 30 | /// Clean up any resources being used. 31 | /// 32 | /// true if managed resources should be disposed; otherwise, false. 33 | protected override void Dispose(bool disposing) 34 | { 35 | if (disposing && (components != null)) 36 | { 37 | components.Dispose(); 38 | } 39 | base.Dispose(disposing); 40 | } 41 | 42 | #region Windows Form Designer generated code 43 | 44 | /// 45 | /// Required method for Designer support - do not modify 46 | /// the contents of this method with the code editor. 47 | /// 48 | private void InitializeComponent() 49 | { 50 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DataEntry)); 51 | this.titleLabel = new System.Windows.Forms.Label(); 52 | this.exitButton = new System.Windows.Forms.Button(); 53 | this.hoppieLogonLabel = new System.Windows.Forms.Label(); 54 | this.vatsimCIDLabel = new System.Windows.Forms.Label(); 55 | this.rememberCheckBox = new System.Windows.Forms.CheckBox(); 56 | this.connectButton = new System.Windows.Forms.Button(); 57 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 58 | this.roundPanel2 = new EasyCPDLC.RoundPanel(); 59 | this.vatsimCIDTextBox = new System.Windows.Forms.TextBox(); 60 | this.roundPanel1 = new EasyCPDLC.RoundPanel(); 61 | this.hoppieCodeTextBox = new System.Windows.Forms.TextBox(); 62 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 63 | this.roundPanel2.SuspendLayout(); 64 | this.roundPanel1.SuspendLayout(); 65 | this.SuspendLayout(); 66 | // 67 | // titleLabel 68 | // 69 | this.titleLabel.AutoSize = true; 70 | this.titleLabel.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 71 | this.titleLabel.ForeColor = System.Drawing.SystemColors.ControlLight; 72 | this.titleLabel.Location = new System.Drawing.Point(28, 158); 73 | this.titleLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 74 | this.titleLabel.Name = "titleLabel"; 75 | this.titleLabel.Size = new System.Drawing.Size(186, 41); 76 | this.titleLabel.TabIndex = 1; 77 | this.titleLabel.Text = "EasyCPDLC"; 78 | // 79 | // exitButton 80 | // 81 | this.exitButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; 82 | this.exitButton.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); 83 | this.exitButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 84 | this.exitButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 85 | this.exitButton.ForeColor = System.Drawing.SystemColors.ControlLight; 86 | this.exitButton.Location = new System.Drawing.Point(217, 0); 87 | this.exitButton.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 88 | this.exitButton.Name = "exitButton"; 89 | this.exitButton.Size = new System.Drawing.Size(28, 28); 90 | this.exitButton.TabIndex = 2; 91 | this.exitButton.Text = "X"; 92 | this.exitButton.UseVisualStyleBackColor = true; 93 | this.exitButton.Click += new System.EventHandler(this.ExitButton_Click); 94 | // 95 | // hoppieLogonLabel 96 | // 97 | this.hoppieLogonLabel.AutoSize = true; 98 | this.hoppieLogonLabel.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 99 | this.hoppieLogonLabel.ForeColor = System.Drawing.SystemColors.ControlLight; 100 | this.hoppieLogonLabel.Location = new System.Drawing.Point(48, 217); 101 | this.hoppieLogonLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 102 | this.hoppieLogonLabel.Name = "hoppieLogonLabel"; 103 | this.hoppieLogonLabel.Size = new System.Drawing.Size(147, 19); 104 | this.hoppieLogonLabel.TabIndex = 3; 105 | this.hoppieLogonLabel.Text = "Hoppie Logon Code"; 106 | // 107 | // vatsimCIDLabel 108 | // 109 | this.vatsimCIDLabel.AutoSize = true; 110 | this.vatsimCIDLabel.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 111 | this.vatsimCIDLabel.ForeColor = System.Drawing.SystemColors.ControlLight; 112 | this.vatsimCIDLabel.Location = new System.Drawing.Point(76, 280); 113 | this.vatsimCIDLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 114 | this.vatsimCIDLabel.Name = "vatsimCIDLabel"; 115 | this.vatsimCIDLabel.Size = new System.Drawing.Size(90, 19); 116 | this.vatsimCIDLabel.TabIndex = 4; 117 | this.vatsimCIDLabel.Text = "VATSIM CID"; 118 | // 119 | // rememberCheckBox 120 | // 121 | this.rememberCheckBox.AutoSize = true; 122 | this.rememberCheckBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 123 | this.rememberCheckBox.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); 124 | this.rememberCheckBox.ForeColor = System.Drawing.SystemColors.ControlLight; 125 | this.rememberCheckBox.Location = new System.Drawing.Point(56, 342); 126 | this.rememberCheckBox.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 127 | this.rememberCheckBox.Name = "rememberCheckBox"; 128 | this.rememberCheckBox.Size = new System.Drawing.Size(130, 23); 129 | this.rememberCheckBox.TabIndex = 7; 130 | this.rememberCheckBox.Text = "Remember Me?"; 131 | this.rememberCheckBox.UseVisualStyleBackColor = true; 132 | // 133 | // connectButton 134 | // 135 | this.connectButton.Enabled = false; 136 | this.connectButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 137 | this.connectButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 138 | this.connectButton.ForeColor = System.Drawing.SystemColors.ControlLight; 139 | this.connectButton.Location = new System.Drawing.Point(40, 380); 140 | this.connectButton.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 141 | this.connectButton.Name = "connectButton"; 142 | this.connectButton.Size = new System.Drawing.Size(163, 33); 143 | this.connectButton.TabIndex = 8; 144 | this.connectButton.Text = "Connect"; 145 | this.connectButton.UseVisualStyleBackColor = true; 146 | this.connectButton.Click += new System.EventHandler(this.ConnectButton_Click); 147 | // 148 | // pictureBox1 149 | // 150 | this.pictureBox1.Image = global::EasyCPDLC.Properties.Resources.Stretchboard; 151 | this.pictureBox1.Location = new System.Drawing.Point(28, -18); 152 | this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 153 | this.pictureBox1.Name = "pictureBox1"; 154 | this.pictureBox1.Size = new System.Drawing.Size(230, 173); 155 | this.pictureBox1.TabIndex = 9; 156 | this.pictureBox1.TabStop = false; 157 | this.pictureBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DataEntry_MouseDown); 158 | // 159 | // roundPanel2 160 | // 161 | this.roundPanel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); 162 | this.roundPanel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 163 | this.roundPanel2.Controls.Add(this.vatsimCIDTextBox); 164 | this.roundPanel2.Location = new System.Drawing.Point(17, 302); 165 | this.roundPanel2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 166 | this.roundPanel2.Name = "roundPanel2"; 167 | this.roundPanel2.Size = new System.Drawing.Size(208, 34); 168 | this.roundPanel2.TabIndex = 11; 169 | // 170 | // vatsimCIDTextBox 171 | // 172 | this.vatsimCIDTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); 173 | this.vatsimCIDTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; 174 | this.vatsimCIDTextBox.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); 175 | this.vatsimCIDTextBox.ForeColor = System.Drawing.SystemColors.ControlLight; 176 | this.vatsimCIDTextBox.Location = new System.Drawing.Point(7, 8); 177 | this.vatsimCIDTextBox.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 178 | this.vatsimCIDTextBox.MaxLength = 7; 179 | this.vatsimCIDTextBox.Name = "vatsimCIDTextBox"; 180 | this.vatsimCIDTextBox.Size = new System.Drawing.Size(192, 19); 181 | this.vatsimCIDTextBox.TabIndex = 1; 182 | this.vatsimCIDTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 183 | this.vatsimCIDTextBox.TextChanged += new System.EventHandler(this.VatsimCIDTextBox_TextChanged); 184 | this.vatsimCIDTextBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.NumsOnly); 185 | // 186 | // roundPanel1 187 | // 188 | this.roundPanel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); 189 | this.roundPanel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 190 | this.roundPanel1.Controls.Add(this.hoppieCodeTextBox); 191 | this.roundPanel1.Location = new System.Drawing.Point(17, 239); 192 | this.roundPanel1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 193 | this.roundPanel1.Name = "roundPanel1"; 194 | this.roundPanel1.Size = new System.Drawing.Size(208, 34); 195 | this.roundPanel1.TabIndex = 10; 196 | // 197 | // hoppieCodeTextBox 198 | // 199 | this.hoppieCodeTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); 200 | this.hoppieCodeTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; 201 | this.hoppieCodeTextBox.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); 202 | this.hoppieCodeTextBox.ForeColor = System.Drawing.SystemColors.ControlLight; 203 | this.hoppieCodeTextBox.Location = new System.Drawing.Point(7, 7); 204 | this.hoppieCodeTextBox.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 205 | this.hoppieCodeTextBox.MaxLength = 18; 206 | this.hoppieCodeTextBox.Name = "hoppieCodeTextBox"; 207 | this.hoppieCodeTextBox.Size = new System.Drawing.Size(192, 19); 208 | this.hoppieCodeTextBox.TabIndex = 0; 209 | this.hoppieCodeTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 210 | this.hoppieCodeTextBox.TextChanged += new System.EventHandler(this.HoppieCodeTextBox_TextChanged); 211 | // 212 | // DataEntry 213 | // 214 | this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); 215 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 216 | this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); 217 | this.ClientSize = new System.Drawing.Size(244, 433); 218 | this.Controls.Add(this.roundPanel2); 219 | this.Controls.Add(this.roundPanel1); 220 | this.Controls.Add(this.connectButton); 221 | this.Controls.Add(this.rememberCheckBox); 222 | this.Controls.Add(this.vatsimCIDLabel); 223 | this.Controls.Add(this.hoppieLogonLabel); 224 | this.Controls.Add(this.exitButton); 225 | this.Controls.Add(this.titleLabel); 226 | this.Controls.Add(this.pictureBox1); 227 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 228 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 229 | this.KeyPreview = true; 230 | this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 231 | this.Name = "DataEntry"; 232 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 233 | this.Text = "DataEntry"; 234 | this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DataEntry_MouseDown); 235 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 236 | this.roundPanel2.ResumeLayout(false); 237 | this.roundPanel2.PerformLayout(); 238 | this.roundPanel1.ResumeLayout(false); 239 | this.roundPanel1.PerformLayout(); 240 | this.ResumeLayout(false); 241 | this.PerformLayout(); 242 | 243 | } 244 | 245 | #endregion 246 | 247 | private System.Windows.Forms.Label titleLabel; 248 | private System.Windows.Forms.Button exitButton; 249 | private System.Windows.Forms.Label hoppieLogonLabel; 250 | private System.Windows.Forms.Label vatsimCIDLabel; 251 | private System.Windows.Forms.CheckBox rememberCheckBox; 252 | private System.Windows.Forms.Button connectButton; 253 | private System.Windows.Forms.PictureBox pictureBox1; 254 | private RoundPanel roundPanel1; 255 | private System.Windows.Forms.TextBox hoppieCodeTextBox; 256 | private RoundPanel roundPanel2; 257 | private System.Windows.Forms.TextBox vatsimCIDTextBox; 258 | } 259 | } -------------------------------------------------------------------------------- /EasyCPDLC/TelexForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace EasyCPDLC 2 | { 3 | partial class TelexForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TelexForm)); 32 | this.messageFormatPanel = new System.Windows.Forms.FlowLayoutPanel(); 33 | this.clearButton = new System.Windows.Forms.Button(); 34 | this.sendButton = new System.Windows.Forms.Button(); 35 | this.exitButton = new System.Windows.Forms.Button(); 36 | this.titleLabel = new System.Windows.Forms.Label(); 37 | this.freeTextButton = new System.Windows.Forms.Button(); 38 | this.metarButton = new System.Windows.Forms.Button(); 39 | this.atisButton = new System.Windows.Forms.Button(); 40 | this.radioContainer = new System.Windows.Forms.Panel(); 41 | this.atisRadioButton = new System.Windows.Forms.RadioButton(); 42 | this.metarRadioButton = new System.Windows.Forms.RadioButton(); 43 | this.freeTextRadioButton = new System.Windows.Forms.RadioButton(); 44 | this.radioContainer.SuspendLayout(); 45 | this.SuspendLayout(); 46 | // 47 | // messageFormatPanel 48 | // 49 | this.messageFormatPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 50 | | System.Windows.Forms.AnchorStyles.Left) 51 | | System.Windows.Forms.AnchorStyles.Right))); 52 | this.messageFormatPanel.AutoScroll = true; 53 | this.messageFormatPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); 54 | this.messageFormatPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 55 | this.messageFormatPanel.Location = new System.Drawing.Point(14, 55); 56 | this.messageFormatPanel.Margin = new System.Windows.Forms.Padding(5); 57 | this.messageFormatPanel.Name = "messageFormatPanel"; 58 | this.messageFormatPanel.Padding = new System.Windows.Forms.Padding(10, 0, 0, 30); 59 | this.messageFormatPanel.Size = new System.Drawing.Size(504, 127); 60 | this.messageFormatPanel.TabIndex = 3; 61 | // 62 | // clearButton 63 | // 64 | this.clearButton.AccessibleDescription = "Clear Telex"; 65 | this.clearButton.AccessibleName = "Clear"; 66 | this.clearButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 67 | this.clearButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 68 | this.clearButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 12F, System.Drawing.FontStyle.Bold); 69 | this.clearButton.ForeColor = System.Drawing.SystemColors.ControlLight; 70 | this.clearButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; 71 | this.clearButton.Location = new System.Drawing.Point(304, 190); 72 | this.clearButton.Name = "clearButton"; 73 | this.clearButton.Size = new System.Drawing.Size(104, 37); 74 | this.clearButton.TabIndex = 4; 75 | this.clearButton.Text = "CLEAR"; 76 | this.clearButton.UseVisualStyleBackColor = true; 77 | this.clearButton.Click += new System.EventHandler(this.ResetPanel); 78 | // 79 | // sendButton 80 | // 81 | this.sendButton.AccessibleDescription = "Send Telex Message"; 82 | this.sendButton.AccessibleName = "Send"; 83 | this.sendButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 84 | this.sendButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 85 | this.sendButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 12F, System.Drawing.FontStyle.Bold); 86 | this.sendButton.ForeColor = System.Drawing.SystemColors.ControlLight; 87 | this.sendButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; 88 | this.sendButton.Location = new System.Drawing.Point(414, 190); 89 | this.sendButton.Name = "sendButton"; 90 | this.sendButton.Size = new System.Drawing.Size(104, 37); 91 | this.sendButton.TabIndex = 5; 92 | this.sendButton.Text = "SEND"; 93 | this.sendButton.UseVisualStyleBackColor = true; 94 | this.sendButton.Click += new System.EventHandler(this.SendButton_Click); 95 | // 96 | // exitButton 97 | // 98 | this.exitButton.AccessibleDescription = "Exit Telex Form"; 99 | this.exitButton.AccessibleName = "Exit"; 100 | this.exitButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 101 | this.exitButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; 102 | this.exitButton.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); 103 | this.exitButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 104 | this.exitButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 105 | this.exitButton.ForeColor = System.Drawing.SystemColors.ControlLight; 106 | this.exitButton.Location = new System.Drawing.Point(509, 0); 107 | this.exitButton.Name = "exitButton"; 108 | this.exitButton.Size = new System.Drawing.Size(24, 24); 109 | this.exitButton.TabIndex = 6; 110 | this.exitButton.Text = "X"; 111 | this.exitButton.UseVisualStyleBackColor = true; 112 | this.exitButton.Click += new System.EventHandler(this.ExitButton_Click); 113 | // 114 | // titleLabel 115 | // 116 | this.titleLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 117 | this.titleLabel.AutoSize = true; 118 | this.titleLabel.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 119 | this.titleLabel.ForeColor = System.Drawing.SystemColors.ControlLight; 120 | this.titleLabel.Location = new System.Drawing.Point(329, 9); 121 | this.titleLabel.Name = "titleLabel"; 122 | this.titleLabel.Size = new System.Drawing.Size(186, 41); 123 | this.titleLabel.TabIndex = 0; 124 | this.titleLabel.Text = "EasyCPDLC"; 125 | this.titleLabel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.WindowDrag); 126 | // 127 | // freeTextButton 128 | // 129 | this.freeTextButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 130 | this.freeTextButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 12F, System.Drawing.FontStyle.Bold); 131 | this.freeTextButton.ForeColor = System.Drawing.SystemColors.ControlLight; 132 | this.freeTextButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; 133 | this.freeTextButton.Location = new System.Drawing.Point(14, 10); 134 | this.freeTextButton.Name = "freeTextButton"; 135 | this.freeTextButton.Size = new System.Drawing.Size(100, 37); 136 | this.freeTextButton.TabIndex = 0; 137 | this.freeTextButton.Text = "FREE TEXT"; 138 | this.freeTextButton.UseVisualStyleBackColor = true; 139 | this.freeTextButton.Click += new System.EventHandler(this.FreeTextButton_Click); 140 | // 141 | // metarButton 142 | // 143 | this.metarButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 144 | this.metarButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 12F, System.Drawing.FontStyle.Bold); 145 | this.metarButton.ForeColor = System.Drawing.SystemColors.ControlLight; 146 | this.metarButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; 147 | this.metarButton.Location = new System.Drawing.Point(120, 10); 148 | this.metarButton.Name = "metarButton"; 149 | this.metarButton.Size = new System.Drawing.Size(100, 37); 150 | this.metarButton.TabIndex = 1; 151 | this.metarButton.Text = "METAR"; 152 | this.metarButton.UseVisualStyleBackColor = true; 153 | this.metarButton.Click += new System.EventHandler(this.MetarButton_Click); 154 | // 155 | // atisButton 156 | // 157 | this.atisButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 158 | this.atisButton.Font = new System.Drawing.Font(MainForm.fonts.Families[1], 12F, System.Drawing.FontStyle.Bold); 159 | this.atisButton.ForeColor = System.Drawing.SystemColors.ControlLight; 160 | this.atisButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; 161 | this.atisButton.Location = new System.Drawing.Point(226, 10); 162 | this.atisButton.Name = "atisButton"; 163 | this.atisButton.Size = new System.Drawing.Size(100, 37); 164 | this.atisButton.TabIndex = 2; 165 | this.atisButton.Text = "ATIS"; 166 | this.atisButton.UseVisualStyleBackColor = true; 167 | this.atisButton.Click += new System.EventHandler(this.AtisButton_Click); 168 | // 169 | // radioContainer 170 | // 171 | this.radioContainer.Controls.Add(this.atisRadioButton); 172 | this.radioContainer.Controls.Add(this.metarRadioButton); 173 | this.radioContainer.Controls.Add(this.freeTextRadioButton); 174 | this.radioContainer.Location = new System.Drawing.Point(198, 190); 175 | this.radioContainer.Name = "radioContainer"; 176 | this.radioContainer.Size = new System.Drawing.Size(62, 26); 177 | this.radioContainer.TabIndex = 15; 178 | this.radioContainer.Visible = false; 179 | // 180 | // atisRadioButton 181 | // 182 | this.atisRadioButton.AutoSize = true; 183 | this.atisRadioButton.Location = new System.Drawing.Point(44, 7); 184 | this.atisRadioButton.Name = "atisRadioButton"; 185 | this.atisRadioButton.Size = new System.Drawing.Size(14, 13); 186 | this.atisRadioButton.TabIndex = 2; 187 | this.atisRadioButton.TabStop = true; 188 | this.atisRadioButton.UseVisualStyleBackColor = true; 189 | this.atisRadioButton.Visible = false; 190 | // 191 | // metarRadioButton 192 | // 193 | this.metarRadioButton.AutoSize = true; 194 | this.metarRadioButton.Location = new System.Drawing.Point(24, 7); 195 | this.metarRadioButton.Name = "metarRadioButton"; 196 | this.metarRadioButton.Size = new System.Drawing.Size(14, 13); 197 | this.metarRadioButton.TabIndex = 1; 198 | this.metarRadioButton.TabStop = true; 199 | this.metarRadioButton.UseVisualStyleBackColor = true; 200 | this.metarRadioButton.Visible = false; 201 | // 202 | // freeTextRadioButton 203 | // 204 | this.freeTextRadioButton.AutoSize = true; 205 | this.freeTextRadioButton.Location = new System.Drawing.Point(4, 7); 206 | this.freeTextRadioButton.Name = "freeTextRadioButton"; 207 | this.freeTextRadioButton.Size = new System.Drawing.Size(14, 13); 208 | this.freeTextRadioButton.TabIndex = 0; 209 | this.freeTextRadioButton.TabStop = true; 210 | this.freeTextRadioButton.UseVisualStyleBackColor = true; 211 | this.freeTextRadioButton.Visible = false; 212 | // 213 | // TelexForm 214 | // 215 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 216 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 217 | this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 218 | this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); 219 | this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; 220 | this.ClientSize = new System.Drawing.Size(532, 241); 221 | this.Controls.Add(this.radioContainer); 222 | this.Controls.Add(this.atisButton); 223 | this.Controls.Add(this.metarButton); 224 | this.Controls.Add(this.freeTextButton); 225 | this.Controls.Add(this.exitButton); 226 | this.Controls.Add(this.titleLabel); 227 | this.Controls.Add(this.sendButton); 228 | this.Controls.Add(this.clearButton); 229 | this.Controls.Add(this.messageFormatPanel); 230 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 231 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 232 | this.MinimumSize = new System.Drawing.Size(532, 241); 233 | this.Name = "TelexForm"; 234 | this.Text = "TelexForm"; 235 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.TelexForm_FormClosing); 236 | this.Load += new System.EventHandler(this.ReloadPanel); 237 | this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.WindowDrag); 238 | this.radioContainer.ResumeLayout(false); 239 | this.radioContainer.PerformLayout(); 240 | this.ResumeLayout(false); 241 | this.PerformLayout(); 242 | 243 | } 244 | 245 | #endregion 246 | private System.Windows.Forms.FlowLayoutPanel messageFormatPanel; 247 | private System.Windows.Forms.Button clearButton; 248 | private System.Windows.Forms.Button sendButton; 249 | private System.Windows.Forms.Button exitButton; 250 | private System.Windows.Forms.Label titleLabel; 251 | private System.Windows.Forms.Button freeTextButton; 252 | private System.Windows.Forms.Button metarButton; 253 | private System.Windows.Forms.Button atisButton; 254 | private System.Windows.Forms.Panel radioContainer; 255 | private System.Windows.Forms.RadioButton atisRadioButton; 256 | private System.Windows.Forms.RadioButton metarRadioButton; 257 | private System.Windows.Forms.RadioButton freeTextRadioButton; 258 | } 259 | } -------------------------------------------------------------------------------- /EasyCPDLC/MainForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace EasyCPDLC 2 | { 3 | partial class MainForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); 33 | this.titleLabel = new System.Windows.Forms.Label(); 34 | this.exitButton = new System.Windows.Forms.Button(); 35 | this.outputTable = new System.Windows.Forms.TableLayoutPanel(); 36 | this.atcButton = new System.Windows.Forms.Button(); 37 | this.telexButton = new System.Windows.Forms.Button(); 38 | this.retrieveButton = new System.Windows.Forms.Button(); 39 | this.atcUnitLabel = new System.Windows.Forms.Label(); 40 | this.atcUnitDisplay = new System.Windows.Forms.Label(); 41 | this.helpButton = new System.Windows.Forms.Button(); 42 | this.messageFormatPanel = new System.Windows.Forms.FlowLayoutPanel(); 43 | this.settingsButton = new System.Windows.Forms.Button(); 44 | this.iconList = new System.Windows.Forms.ImageList(this.components); 45 | this.SendingProgress = new System.Windows.Forms.ProgressBar(); 46 | this.SuspendLayout(); 47 | // 48 | // titleLabel 49 | // 50 | this.titleLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 51 | this.titleLabel.AutoSize = true; 52 | this.titleLabel.Font = new System.Drawing.Font(fonts.Families[1], 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 53 | this.titleLabel.ForeColor = System.Drawing.SystemColors.ControlLight; 54 | this.titleLabel.Location = new System.Drawing.Point(397, 6); 55 | this.titleLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 56 | this.titleLabel.Name = "titleLabel"; 57 | this.titleLabel.Size = new System.Drawing.Size(186, 41); 58 | this.titleLabel.TabIndex = 0; 59 | this.titleLabel.Text = "EasyCPDLC"; 60 | this.titleLabel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MoveWindow); 61 | // 62 | // exitButton 63 | // 64 | this.exitButton.AccessibleName = "Exit"; 65 | this.exitButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 66 | this.exitButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; 67 | this.exitButton.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); 68 | this.exitButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 69 | this.exitButton.Font = new System.Drawing.Font(fonts.Families[1], 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 70 | this.exitButton.ForeColor = System.Drawing.SystemColors.ControlLight; 71 | this.exitButton.Location = new System.Drawing.Point(617, 4); 72 | this.exitButton.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 73 | this.exitButton.Name = "exitButton"; 74 | this.exitButton.Size = new System.Drawing.Size(28, 28); 75 | this.exitButton.TabIndex = 7; 76 | this.exitButton.Text = "X"; 77 | this.exitButton.UseVisualStyleBackColor = true; 78 | this.exitButton.Click += new System.EventHandler(this.ExitButton_Click); 79 | // 80 | // outputTable 81 | // 82 | this.outputTable.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 83 | | System.Windows.Forms.AnchorStyles.Left) 84 | | System.Windows.Forms.AnchorStyles.Right))); 85 | this.outputTable.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); 86 | this.outputTable.ColumnCount = 3; 87 | this.outputTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); 88 | this.outputTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 77.5F)); 89 | this.outputTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); 90 | this.outputTable.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); 91 | this.outputTable.Location = new System.Drawing.Point(14, 76); 92 | this.outputTable.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 93 | this.outputTable.Name = "outputTable"; 94 | this.outputTable.Padding = new System.Windows.Forms.Padding(0, 0, 12, 0); 95 | this.outputTable.RowCount = 1; 96 | this.outputTable.RowStyles.Add(new System.Windows.Forms.RowStyle()); 97 | this.outputTable.Size = new System.Drawing.Size(616, 147); 98 | this.outputTable.TabIndex = 3; 99 | this.outputTable.TabStop = true; 100 | this.outputTable.Click += new System.EventHandler(this.OutputTable_Click); 101 | // 102 | // atcButton 103 | // 104 | this.atcButton.Enabled = false; 105 | this.atcButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 106 | this.atcButton.Font = new System.Drawing.Font(fonts.Families[1], 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 107 | this.atcButton.ForeColor = System.Drawing.SystemColors.ControlLight; 108 | this.atcButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; 109 | this.atcButton.Location = new System.Drawing.Point(284, 14); 110 | this.atcButton.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 111 | this.atcButton.Name = "atcButton"; 112 | this.atcButton.Size = new System.Drawing.Size(105, 55); 113 | this.atcButton.TabIndex = 2; 114 | this.atcButton.Text = "ATC"; 115 | this.atcButton.UseVisualStyleBackColor = true; 116 | this.atcButton.Click += new System.EventHandler(this.RequestButton_Click); 117 | // 118 | // telexButton 119 | // 120 | this.telexButton.Enabled = false; 121 | this.telexButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 122 | this.telexButton.Font = new System.Drawing.Font(fonts.Families[1], 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 123 | this.telexButton.ForeColor = System.Drawing.SystemColors.ControlLight; 124 | this.telexButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; 125 | this.telexButton.Location = new System.Drawing.Point(172, 14); 126 | this.telexButton.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 127 | this.telexButton.Name = "telexButton"; 128 | this.telexButton.Size = new System.Drawing.Size(105, 55); 129 | this.telexButton.TabIndex = 1; 130 | this.telexButton.Text = "TELEX"; 131 | this.telexButton.UseVisualStyleBackColor = true; 132 | this.telexButton.Click += new System.EventHandler(this.TelexButton_Click); 133 | // 134 | // retrieveButton 135 | // 136 | this.retrieveButton.Enabled = false; 137 | this.retrieveButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 138 | this.retrieveButton.Font = new System.Drawing.Font(fonts.Families[1], 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 139 | this.retrieveButton.ForeColor = System.Drawing.SystemColors.ControlLight; 140 | this.retrieveButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; 141 | this.retrieveButton.Location = new System.Drawing.Point(14, 14); 142 | this.retrieveButton.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 143 | this.retrieveButton.Name = "retrieveButton"; 144 | this.retrieveButton.Size = new System.Drawing.Size(150, 55); 145 | this.retrieveButton.TabIndex = 0; 146 | this.retrieveButton.Text = "CONNECT"; 147 | this.retrieveButton.UseVisualStyleBackColor = true; 148 | this.retrieveButton.Click += new System.EventHandler(this.RetrieveButton_Click); 149 | // 150 | // atcUnitLabel 151 | // 152 | this.atcUnitLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 153 | this.atcUnitLabel.AutoSize = true; 154 | this.atcUnitLabel.Font = new System.Drawing.Font(fonts.Families[1], 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 155 | this.atcUnitLabel.ForeColor = System.Drawing.SystemColors.ControlLight; 156 | this.atcUnitLabel.Location = new System.Drawing.Point(403, 49); 157 | this.atcUnitLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 158 | this.atcUnitLabel.Name = "atcUnitLabel"; 159 | this.atcUnitLabel.Size = new System.Drawing.Size(134, 19); 160 | this.atcUnitLabel.TabIndex = 0; 161 | this.atcUnitLabel.Text = "Current ATS Unit: "; 162 | // 163 | // atcUnitDisplay 164 | // 165 | this.atcUnitDisplay.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 166 | this.atcUnitDisplay.AutoSize = true; 167 | this.atcUnitDisplay.Font = new System.Drawing.Font(fonts.Families[1], 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 168 | this.atcUnitDisplay.ForeColor = System.Drawing.SystemColors.ControlLight; 169 | this.atcUnitDisplay.Location = new System.Drawing.Point(551, 49); 170 | this.atcUnitDisplay.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); 171 | this.atcUnitDisplay.Name = "atcUnitDisplay"; 172 | this.atcUnitDisplay.Size = new System.Drawing.Size(29, 19); 173 | this.atcUnitDisplay.TabIndex = 0; 174 | this.atcUnitDisplay.Text = "----"; 175 | // 176 | // helpButton 177 | // 178 | this.helpButton.AccessibleName = "About"; 179 | this.helpButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 180 | this.helpButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; 181 | this.helpButton.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); 182 | this.helpButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 183 | this.helpButton.Font = new System.Drawing.Font(fonts.Families[1], 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); 184 | this.helpButton.ForeColor = System.Drawing.SystemColors.ControlLight; 185 | this.helpButton.Location = new System.Drawing.Point(598, 1); 186 | this.helpButton.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 187 | this.helpButton.Name = "helpButton"; 188 | this.helpButton.Size = new System.Drawing.Size(27, 31); 189 | this.helpButton.TabIndex = 6; 190 | this.helpButton.Text = "?"; 191 | this.helpButton.UseVisualStyleBackColor = true; 192 | this.helpButton.Click += new System.EventHandler(this.HelpButton_Click); 193 | // 194 | // messageFormatPanel 195 | // 196 | this.messageFormatPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 197 | | System.Windows.Forms.AnchorStyles.Left) 198 | | System.Windows.Forms.AnchorStyles.Right))); 199 | this.messageFormatPanel.AutoScroll = true; 200 | this.messageFormatPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); 201 | this.messageFormatPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 202 | this.messageFormatPanel.Location = new System.Drawing.Point(14, 76); 203 | this.messageFormatPanel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 204 | this.messageFormatPanel.Name = "messageFormatPanel"; 205 | this.messageFormatPanel.Padding = new System.Windows.Forms.Padding(12, 0, 0, 35); 206 | this.messageFormatPanel.Size = new System.Drawing.Size(614, 146); 207 | this.messageFormatPanel.TabIndex = 4; 208 | this.messageFormatPanel.TabStop = true; 209 | this.messageFormatPanel.Visible = false; 210 | // 211 | // settingsButton 212 | // 213 | this.settingsButton.AccessibleName = "Settings"; 214 | this.settingsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 215 | this.settingsButton.BackgroundImage = global::EasyCPDLC.Properties.Resources.cog_wheel_gear_setting; 216 | this.settingsButton.FlatAppearance.BorderSize = 0; 217 | this.settingsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 218 | this.settingsButton.ImageIndex = 0; 219 | this.settingsButton.ImageList = this.iconList; 220 | this.settingsButton.Location = new System.Drawing.Point(576, 5); 221 | this.settingsButton.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 222 | this.settingsButton.Name = "settingsButton"; 223 | this.settingsButton.Size = new System.Drawing.Size(23, 23); 224 | this.settingsButton.TabIndex = 5; 225 | this.settingsButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; 226 | this.settingsButton.UseVisualStyleBackColor = true; 227 | this.settingsButton.Click += new System.EventHandler(this.SettingsButton_Click); 228 | // 229 | // iconList 230 | // 231 | this.iconList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; 232 | this.iconList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("iconList.ImageStream"))); 233 | this.iconList.TransparentColor = System.Drawing.Color.Transparent; 234 | this.iconList.Images.SetKeyName(0, "cog-wheel-gear-setting.png"); 235 | // 236 | // SendingProgress 237 | // 238 | this.SendingProgress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 239 | | System.Windows.Forms.AnchorStyles.Right))); 240 | this.SendingProgress.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); 241 | this.SendingProgress.Location = new System.Drawing.Point(14, 223); 242 | this.SendingProgress.MarqueeAnimationSpeed = 10; 243 | this.SendingProgress.Maximum = 30; 244 | this.SendingProgress.Name = "SendingProgress"; 245 | this.SendingProgress.Size = new System.Drawing.Size(614, 2); 246 | this.SendingProgress.Style = System.Windows.Forms.ProgressBarStyle.Continuous; 247 | this.SendingProgress.TabIndex = 8; 248 | this.SendingProgress.Visible = false; 249 | // 250 | // MainForm 251 | // 252 | this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); 253 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 254 | this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 255 | this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); 256 | this.ClientSize = new System.Drawing.Size(644, 233); 257 | this.Controls.Add(this.SendingProgress); 258 | this.Controls.Add(this.settingsButton); 259 | this.Controls.Add(this.atcUnitDisplay); 260 | this.Controls.Add(this.atcUnitLabel); 261 | this.Controls.Add(this.retrieveButton); 262 | this.Controls.Add(this.telexButton); 263 | this.Controls.Add(this.atcButton); 264 | this.Controls.Add(this.exitButton); 265 | this.Controls.Add(this.titleLabel); 266 | this.Controls.Add(this.helpButton); 267 | this.Controls.Add(this.messageFormatPanel); 268 | this.Controls.Add(this.outputTable); 269 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 270 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 271 | this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); 272 | this.MinimumSize = new System.Drawing.Size(644, 233); 273 | this.Name = "MainForm"; 274 | this.Text = "9"; 275 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); 276 | this.Load += new System.EventHandler(this.MainForm_Load); 277 | this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MoveWindow); 278 | this.ResumeLayout(false); 279 | this.PerformLayout(); 280 | 281 | } 282 | 283 | #endregion 284 | 285 | private System.Windows.Forms.Label titleLabel; 286 | private System.Windows.Forms.Button exitButton; 287 | private System.Windows.Forms.TableLayoutPanel outputTable; 288 | private System.Windows.Forms.Button atcButton; 289 | private System.Windows.Forms.Button telexButton; 290 | private System.Windows.Forms.Button retrieveButton; 291 | private System.Windows.Forms.Label atcUnitLabel; 292 | private System.Windows.Forms.Label atcUnitDisplay; 293 | private System.Windows.Forms.Button helpButton; 294 | private System.Windows.Forms.FlowLayoutPanel messageFormatPanel; 295 | private System.Windows.Forms.Button settingsButton; 296 | private System.Windows.Forms.ImageList iconList; 297 | private System.Windows.Forms.ProgressBar SendingProgress; 298 | } 299 | } 300 | 301 | --------------------------------------------------------------------------------