Existing C# Windows Forms GUI app change and refactor

Job ID: 38621054

Budget: $250 – $750 USD

I have a working C# Windows Forms desktop simple application and now I want to use some forms from this project to create a new, simpler project that will be a much smaller subset of the original one. After that I want to develop it further. But that will be Stage 2, another project, for now in Stage 1 I mainly want to do extraction of some ready made forms/functions from the current project, add some simple new navigation and change communication.

Some background domain intro
The app is for creating parameters for acoustic modes correction. The main UI functional screen called FormGeneratorModow allows to define or modify parameters of 1..21 modes which collectively are grouped in an object called a Mode Set (MS).
So an MS can have 1..21 modes that are shown on the main UI working screen in tghge form of sliders as it is visible on an attached pptx slide with app windows and navigation. Each mode is characterized by 4 attributes:
- frequency in Hz with the resolution of 0,1 Hz
- strength – integer value 4..10, set with the slider
- Q (quality) – a list of 6 values
- Boost – mode sign, 0/1
UI controls for all four attributes per mode are grouped around its individual slider. When editing is finished an MS and its collection of up to 21 modes with parameters is typically saved to the disk as an xml file. There is a naming convention for these sets, which is a two letter combination (e/g/. AA, AB, etc) and the current date. The main UI functional screen FormGeneratorModow allows also to create so-called dynamic sets A/B/C/D that are current combinations of mode parameters that can be switched around without saving them to a permanent storage.

The tasks to be done:
• Extract 5 existing (fully working) user Forms from the attached C# project (one of them is the above mentioned FormGeneratorModow, the heart of the app)
• Add a simple 4-button main navigational screen as on the attached pptx slide and connect the 4 user forms to the navigational buttons
• Add simple one-way sending of UDP messages when parameters of any mode are changed (currently messages are sent but using COM/UART, also the message structure need to be changed)
The 5 existing UI forms/screens are shown on the attached PowerPoint slide where the to-be navigation paths are also shown with arrows. The names of the forms are also visible on the slide when zoomed in in PowerPoint and can be used as reference to the attached source code where there are project files with the same names as these forms. In a separate Word document attached I also provided a description of each source file (or source files group related to a UI form) and marked which source files and forms will not be used (most of the project will be purged and only some fraction used) and do not need to be analyzed at all and what source files are to be used in the new project and how they are cross-related.

The start page is a new front/navigation screen with a title label at the top and 4 buttons below it (see also the attached pptx):
Title label – the name of the current mode set, eg. . Current MS: AA, 17-JAN-2024,
plus the list of current filter parameters below the title
The 4 buttons
o Edit current MS
o Select MS to edit
o Generate MS
o Import MS
Description of the buttons
• Edit current MS
Navigates to a current main user form for editing a Mode Set called FormGeneratorModow
• Select MS to edit
Navigates to a current user form for choosing a Mode Set from a list of all defined Mode Sets (stored sa an xml file on the disk) called FormWybierzKorektor.
• Generate MS
Navigates to a current simple user form for generating initial Mode Sets based on a set of user parameters called FormGeneratorModowParametry
• Import MS
Opens up a standard Windows file browser window and then uses the current functionality to import mode sets. The current functionality is implemented in Form1.cs, buttonNowyKorekcja_Click(), in the following code section
else if (formRodzaj.typKorekcji == 3)
{ .. }
• UDP messages should be sent as new reimplementation of the current function Form1.cs, WyslijPolecenie(). Currently this function implements sending via COM/UART

I do not have C# experience but I have developer skills and this application was programmed by a colleague developer fully to my detailed design specifications so I will be able to interpret the source code and interconnections between sections of the code or provide overall understanding of the project algorithms.
So I will make sure the contractor will have my active and full support in project analysis and it is my task to answer all questions that come up in the analysis of the existing project when extracting to the target one.
Additionally I want to replace Polish variable names that are sometimes used in the code with English words, I will provide all translations.

As part of the offer I would like to get an estimate how long it will take to create the new project and feedback if the documentation that I provided looks sufficient, especially if efficient analysis of the attached project is possible based on this documentation.
The project is in an old 4.x .Net version. If upgrading it to a current C# version would mean significant extra effort then for this task it is OK if the old forms are preserved in this first step in 4.6 in the new C# project.
I will also appreciate a recommendation based after project review how big would be the effort of optional migration of this target project and the 5 existing forms to the current .Net version ?
Related categories: .NET C# Programming