BackgroundOp | +--- ExecBgr | +--- Compile // not implemented yet | +--- AsyncDNS // not implemented yet TextDlg | +--- BackgroundOpDisplay | +--- BackgroundRundisplay | +--- BackgroundCompileDisplay // not implemented yet Class BackgroundOp : implements basic methods to start, abort, check status of the background operation. More specific class must be derived from this one in order to implement actual operation. Derived class should reimplement following virtual methods: virtual void run_impl(string command); virtual void abort(); this class also provides flag manipulation methods which allow to control execution state of the background process, schedule its interruption, pass its completion status to the calling program. These flags manipulation methods are: int get_pgm_status(); void set_pgm_status( int status ); bool get_running_flag(); void set_running_flag( bool flag ); bool get_stop_program_flag(); void set_stop_program_flag( bool flag); Class ExecBgr : specific implementation on the base of BackgroundOp. This class runs external program in the background and collects its output. Class TextDlg : provides simple widget displaying text with vertical scrollbar. It has "OK" button and can be used as modal dialog. This class has no knowledge of BackgroundOp and can be use dindependently Class BackgroundOpDisplay : Derived from TextDlg, it inherits its visual representation and basic behavior. This class adds interaction between dialog and an object of BackgroundOp class. In particular, it will call abort() method to stop current background operation when dialog is closed or button is clicked. It also adds signal handlers to implement proper reaction for some events and displays background process output. This class does not create object of the class BackgroundOp because it implements only most general aspects of the behavior and interaction with such object. Thus, it relies on derived class to create instance of BackgroundOp. Class BackgroundRunDisplay : Derived from the class BackgroundOpDisplay. It creates instance of the class ExecBgr to run program in the background.