/* ================================================================================== */
/* Copyright (c) 1998-1999 3Com Corporation or its subsidiaries. All rights reserved. */
/* ================================================================================== */

#ifndef __FLTK_MAINWINDOW_H__
#define __FLTK_MAINWINDOW_H__

#include "omnithread.h"
#include <Fl_Window.H>
#include <Fl_Menu_Button.H>
#include "Document.h"
#include "fltk_LcdWindow.h"

class MainWindow : public Fl_Window
{
  public:
    // -----------------------------------------------------------------------------
    // constructor / destructor
    // -----------------------------------------------------------------------------

    MainWindow();
        
    // -----------------------------------------------------------------------------
    // public methods
    // -----------------------------------------------------------------------------

    void popupMenu() { (void) _menuButton->popup(); }

	Document* getDocument() { return _doc; }

	static MainWindow* getMainWindow() { return _sMainWindow; };

  private:
    
    // -----------------------------------------------------------------------------
    // private methods
    // -----------------------------------------------------------------------------

    void doLoadApplication();
    void doEmulatorStart();
    void doEmulatorStop();
    void doQuit();
    void doSaveMemoryAs();
    void doSaveScreen();
    void doOpenMemory();
    
    void doEditLoggingPreferences();
    void doEditDebugPreferences();
    void doEditPreferences();
    
    friend void menuCallback( Fl_Menu_ *w, void *data );
    friend void docChangedCallback( int property, void *param );

    // -----------------------------------------------------------------------------
    // private data members
    // -----------------------------------------------------------------------------

    Fl_Menu_Button *_menuButton;
    LCD_window *_lcd;

    Document *_doc;

	static MainWindow* _sMainWindow;
};

#endif /* __FLTK_MAINWINDOW_H__ */
