Skip to content

FOX GUI classes relationships

Francesco edited this page Apr 2, 2020 · 3 revisions

GslShellApp

It inherits from FXApp so it is essentially an FXApp.

Function

To be written.

Contains

Includes the following member variables:

  • fox_gsl_shell m_engine
  • FXGUISignal* m_signal_request
  • lua_request m_request
  • LuaConsole* m_console
  • io_redirect m_redirect

LuaConsole

Inherits from Notebook.

Includes, most notably, the following variables:

  • gsl_shell_thread* m_engine
  • lua_io_thread* m_lua_io_thread

GslShellWindow

Inherits from FXMainWindow.

Includes, most notably, a pointer to a LuaConsole.

Function

Manage a FXMainWindow that contains a LuaConsole Window. this latter it is a Notebook that in turns is a FXPacker.

Notebook

Inherits from FXPacker.

gsl_shell_thread

gsl_shell_threads inherits from gsl_shell. Add methods to execute the gsl_shell state in a separate thread. Overrides the methods before_eval(), restart_callback(), quit_callback().

The method start() starts a new thread. It basically calls init() methods from gsl_shell and run() from gsl_shell_thread.

The method run() execute a loop:

  • wait for a request
  • execute before_eval()
  • process the request using process_request() method

Overall the system uses locks to synchronize the gsl_shell thread with the main thread performing the request.

There are some "special" requests: exit and restart.

gsl_shell

Class defined in files gsl_shell_interp.h/cpp: should be FIXED.

Inherits from gsl_shell_state. This latter is simply a struct with a lua_State and two mutex to protect execution and shutdown.

The class gsl_shell have virtual methods init() and close() and non-virtual exec() and interrupt().

The code invoked from gsl_shell_state is gsl_shell_open() on init(), gsl_shell_init() on constructor and gsl_shell_free() on destructor.

Clone this wiki locally