Skip to content

TheLord45/tsurface

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

119 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TSurface

This is a program to design a surface for a touch panel. Where touch panel means usually a phone (Android or iOS). There exists the company AMX who offers, beside other things, some commercial touch panels. This panels require also a controller. They have a proprietary protocol and there exists the program TPDesigner to design a surface for the touch panels of them.

Some years ago I started to develop the application TPanel which is a free implementation of this kind of touch panels. It is available for all operating systems (except gaming consoles like Windows). Unfortunately the application TPDesign is only available for Windows. This is unsatisfactory and therefore I decided to implement this application myself. I call it TSurface and it will have mostly if not all features the original have. Beside that, it will have some additional features like presenting GPS coordinates (if the device supports it).

TSurface will be able to read TP4 and TP5 files, generated by the original TPDesiner. It converts this files in its own file format. Instead of using XML for the page configuration TSurface uses JSON. The internal handling of JSON is a lot easier than handling XML. TSurface uses the format of tar to safe all files into one. It also compresses the resulting file to safe space. This allows anybody to simply unzip the file with the following command:

tar -xf <file>

Tsurface will be able to encrypt the contents of the file. It is planned to encrypt the JSON files only. The user can select in the preferences dialog a password. The files will then be encrypted with an AES algorithm. This means, that the file is lost once the password is lost 🀷.

Implementation matrix

Currently the program is under heavy development and in an early state. At the moment it is not usable because too much is missing. The following matrix shows what is already implemented and what is still missing.

Part Fully functional Partly implemented Missing Priority Comment
Menu: File
Create a new file βœ… High
Open an existing file βœ… High
Close an open file βœ… Medium
Save a loaded file βœ… High
Save a file with another name βœ… High
Save as different panel type ❌ Low
Print ❌ Low
Print preview ❌ Low
Print Setup ❌ Low
Menu: Edit
Selection Tool βœ… High
Button Draw Tool βœ… High
Show Grid βœ… High
Snap to Grid βœ”οΈ High Works currently only on moving
Quick Input ❌ Low
Undo ❌ Medium
Redo ❌ Medium
Cut ❌ Medium
Copy ❌ Medium
Paste ❌ Medium
Replace ❌ Medium
Delete ❌ Medium
Rename ❌ Medium
Find ❌ Low
Find and Replace ❌ Low
Select All βœ”οΈ Medium Works but is not well tested
Apply to All ❌ Medium
Edit Previous ❌ Low
Edit Next ❌ Low
Preferences βœ… High
Menu: Panel
Add Page βœ”οΈ High Still errors on first creation
Add Popup Page βœ”οΈ High Still errors on first creation
Add Application Window ❌ High
Edit Sub-Page Sets βœ… Medium
Edit Drop-Target Groups ❌ Low
Resource Manager βœ”οΈ High Undo/Redo is not implemented currently
Refresh Dynamic Images ❌ Low
Edit Palettes ❌ High
Export Page Images ❌ Low
Verify Function Maps ❌ Low
Verify Event Actions ❌ Low
Synchronize Fonts ❌ Low
Generate Programmer's Report ❌ Low
View Conversion Log ❌ Low
Delete Conversion Log ❌ Low
Menu: Page
Show Popup Page βœ”οΈ High Works only on double click on the name in page tree
Hide Popup Page βœ”οΈ High Works only on double click on the name in page tree
Hide all Popup Pages and Application Windows ❌ High
Show Application Window ❌ High
Hide Application Window ❌ High
Show External Controls ❌ High
Copy Image to Clipboard ❌ Low
Menu: Button
Reset Display ❌ Low May be removed because I see no need for this
Display Previous State ❌ Medium
Display Next State ❌ Medium
Choose Display State ❌ Medium
Add States ❌ High
Insert States ❌ High
Animation Wizard ❌ Low
Power Assign ❌ Low
Paste Controls ❌ Low
Preview ❌ Low Will work only together with TPanel
Menu: States
Reverse States ❌ Medium
Set As Display State ❌ Low
Tweeners ❌ Medium
Menu: Layout
Bring to Front ❌ High
Send To Back ❌ High
Shift Button Up ❌ High
Shift Button Down ❌ High
Align ❌ High
Center in Page ❌ High
Make Same Size ❌ High
Size To Image ❌ High
Size for Video ❌ Medium
Horizontal Spacing ❌ High
Vertical Spacing ❌ High
Alignment and Sizing ❌ High
Menu: Transfer
Connect ❌ High
Disconnect From Master ❌ Low This will disconnect from TPanel only!
Send To Panel ❌ High
Send File To Panel ❌ High
Receive From Panel ❌ Low
Redo Last Transfer ❌ Medium
Cancel Transfer ❌ Medium
Cancel All Pending Transfers ❌ Medium
Clear Transfer ❌ Low
Clear All Completed Transfers ❌ Low
Close Status When Empty ❌ Low
Menu: View
Toolbars βœ”οΈ High There will be only one toolbar
Workspace βœ”οΈ High
Properties βœ”οΈ High Not all settings are working currently
State Manager ❌ High
Button Preview ❌ Medium
Magnifier ❌ Low
Transfer Status ❌ Low
Status Bar ❌ Medium
Dock All Floating Windows ❌ Low
Property Painter ❌ Low
Display Function And State Overlay ❌ Medium
Errors and Warnings Report ❌ Low
MDI Page Tabs ❌ Low May be removed because the implemented function is different
Customize ❌ Low
Menu: Tools
View Readme ❌ Low
Paint ❌ Low Currently there's no decision which application to use on the different platforms.
G4 Utility ❌ Very Low May be removed
Menu: Window
Zoom ❌ Low
Stack ❌ Low
Cascade ❌ Low
Menu: Help ❌ Low

Technical details

The program is developed in C++ under Linux and a Mac. It uses the Qt6 framework. If you like to help me develop it, you need a Linux machine or a Mac. You need to install the following packages:

Linux

  • Qt6 (Get and install Qt)
  • Fontconfig (part of distribution)
  • Openssl (part of distribution)
  • Freetype (part of distribution)
  • Archive (part of distribution)

Mac OSX

The following packages should be installed in Homebrew:

  • Fontconfig
  • Openssl
  • Freetype
  • Archive

TSurface is internally divided into blocks to separate the parts. The following primitive ASCII graphic may give you an idea which parts exist and how they work together.

+--------------------------+     +------------------+     +--------------------------+
| Class: TWorkspaceHandler |     | Class: TSurface  |     | MDI windows              |
| Type: Singleton          |<--->| Type: Main class |---->| Class: TCanvasWidget     |
| +-----------------+      |     +------------------+     | Class: TResizableWidget  |
| |  Workspace      |      |                              | Type: Graphical handling |
| |                 |      |                              +--------------------------+
| | * Pages         |      |     +----------------------+               |
| | * Function Maps |      |     | Class: TPageHandler  |               |
| +-----------------+      |<--->| Type: Singleton      |               |
|                          |     | Purpose: Handles all |               |
| +---------------+        |     |   kind of pages.     |               |
| | Properties    |        |     +----------------------+               |
| |               |        |                |                           |
| | * General     |        |                ↓                           |
| | * Programming |        |     +-----------------------+              |
| | * States      |        |     | Class: TObjectHandler |              |
| | * Events      |        |<--->| Type: Singleton       |              |
| +---------------+        |     | Purpose: Handles all  |<-------------+
+--------------------------+     |   object on any kind  |
                                 |   of pages.           |
                                 +-----------------------+

Compile

I'm using the IDE from Qt called QtCreator. This makes it very easy to write the code and using the Qt framework. But you can also use the Qt version coming with your Linux distribution if it is not too old. I suggest to install the Qt framework.

Linux

On Linux compile and install the application by typing the following commands:

cmake -B build -S . -G Ninja -DCMAKE_PREFIX_PATH="/<path>/<to>/Qt/6.x.x/gcc_64/lib/cmake"
cmake --build build
sudo cmake --install build

Replace /<path>/<to>/ with the path to your Qt installation (usualy /opt/Qt).

Mac OSX

cmake -B build -S . -G Ninja -DCMAKE_PREFIX_PATH="/<path>/<to>/Qt/6.x.x/macos/lib/cmake:/<path>/<to>/homebrew/lib/cmake"
cmake --build build
sudo cmake --install build

Replace /<path>/<to>/ with the path to your Qt installation and to homebrew (usualy $HOME/Qt, /opt/homebrew).

You'll find the application in build/tsurface.app/Contents/MacOS/tsurface. Start it from the command line like:

build/tsurface.app/Contents/MacOS/tsurface

About

TSurface is an application to design a graphical surface for TPanel. In other words: It is similar to TPDesign from AMX, but with it's own file structure. It is made for Linux and Mac OSX.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors