GuiServer on Github
Notes about GuiServer
Debian 8 32-bit
Ubuntu 18.04 64-bit
External, Go library, on Github
GuiServer is a special tool that makes it relatively easy to implement GUI frameworks for different programming languages.
After being started, it creates a tcp/ip socket and begins listening to it, going into standby mode. After establishing a connection with the client, it starts accepting requests to manage elements of the graphical interface. Yet another connection with the client is created immediately, GuiServer use it for feedback: to send information to the client when some events occurs, such as closing the window, pressing the button, etc.
Thus, the program acting as a GUI server, as a service to provide client applications with a graphical interface. The client is a program, written on any programming language which can work with tcp/ip connections (almost everyone can) and which has a relatively small library, that runs the GuiServer process, connect to it, and exchanges data with it according to the specified protocol.
I started writing GuiServer to make GUI framework for Go language. This framework is called External, you can find it at Github. Besides, I make a similar library for Harbour - mostly for debugging. But it is became clear soon, that the same GUI framework can be done at minimal cost for other languages, too, - for Python, Java, C, and even for Perl and (yes, yes!) for PHP.
Since we have tcp/ip communication between client and server processes, they can be run on different computers in the network, and this opens the door for quite interesting ways of using this technology.
GuiServer is written on Harbour + HwGUI, and it is a good choice not only because using of this pair is most convenient for me personally. Such an implementation
- provides cross-platform GUI. GuiServer can be built under Windows, Linux/Unix and possibly Mac OS;
- provides what is called "native look and feel" - a natural look for the OS on which it is used - due to the fact that HwGUI uses Winapi under Windows and GTK under Linux/Unix.
- provides you with a powerful built-in language - Harbour itself. You can upload code snippets of any size to the server for execution. This allows, in particular, to implement some event handlers directly in the GuiServer process.
- allows you to use created by a Designer (HwGUI utility) screen forms. This forms are stored in XML format and can be used unchanged for any operating system where GuiServer run.
- provides printing capabilities from HwGUI, including pre-prepared by the Designer report forms, which, like screen forms, are stored in XML format and can be used without changes in any OS.
(not be shown publicly)