GuiServer on Github
Notes about GuiServer
Ubuntu 18.04 64-bit
External, Go library, on Github
A project on Github
A project on Github
GuiServer is a special tool that makes it relatively easy to implement GUI frameworks for different programming languages.
The program acting, sorry for the tautology, 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 has a relatively small library, that runs the GuiServer process, connect to it, and exchanges data with it according to the specified protocol.
The client can communicate with the GUI server in different ways, currently two options are available: via tcp/ip connection or via regular files. In the first case GuiServer creates a tcp/ip socket at startup and starts 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. In the second case, instead of two sockets, two files are created (by default - in the system directory for temporary files) - and the whole process of interaction occurs by writing/reading in these files.
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.
The client and server processes 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.
Applications, based on GuiServer
(not be shown publicly)