diff anagram/vaclgui/ctrlpanel.hpp @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/anagram/vaclgui/ctrlpanel.hpp	Sat Dec 22 17:52:45 2007 -0500
@@ -0,0 +1,265 @@
+/*
+ * AnaGram, A System for Syntax Directed Programming
+ * Copyright 1997-2002 Parsifal Software. All Rights Reserved.
+ * See the file COPYING for license and usage terms.
+ *
+ * ctrlpanel.hpp
+ */
+
+#ifndef CTRLPANEL_HPP
+#define CTRLPANEL_HPP
+
+#include <time.h>
+#include "port.h"
+
+//#include <icanvas.hpp>
+#include <icmdhdr.hpp>
+#include <icombobx.hpp>
+//#include <ifiledlg.hpp>
+#include <iflyhhdr.hpp>
+#include <iflytext.hpp>
+#include <ifocshdr.hpp>
+#include <ifont.hpp>
+#include <iframe.hpp>
+#include <igraphbt.hpp>
+#include <imenubar.hpp>
+#include <imenuhdr.hpp>
+#include <imousevt.hpp>
+#include <imoushdr.hpp>
+//#include <imphdr.hpp>
+#include <ipainevt.hpp>
+#include <ipainhdr.hpp>
+#include <iselhdr.hpp>
+#include <isetcv.hpp>
+#include <islhdr.hpp>
+#include <istattxt.hpp>
+//#include <istring.hpp>
+#include <isubmenu.hpp>
+#include <isysmenu.hpp>
+#include <ithread.hpp>
+#include <itimer.hpp>
+#include <ititle.hpp>
+
+#include "action.h"
+#include "agstring.h"
+#include "frame.hpp"
+#include "openfile.hpp"
+#include "statwin.hpp"
+
+
+class ControlPanel
+  : public IFrameWindow
+  , public ICommandHandler
+  , public IMenuHandler
+  , public AgHelpHandler
+  , public IFrameHandler
+  , public IMouseHandler
+//  , public IMousePointer
+  , public IPaintHandler
+  , public IFocusHandler
+  , public IKeyboardHandler
+//  , public IResizeHandler
+{
+
+  // Declare friendship with the AnalyzeGrammarFn class which encapsulates
+  // a thread function that executes a member function of this class
+  //-------
+  friend class AnalyzeGrammarFn;
+  friend class BuildParserFn;
+  friend class TimerFn;
+
+  //Boolean         busyFlag;
+  //int             errorCount;
+  //int             minimized;
+  //ISize             minimumSize;
+
+public:
+
+  Boolean         autobuildFlag;
+  Boolean         showSyntaxFlag;
+  Boolean         showStatsFlag;
+  Boolean         stayOnTopFlag;
+
+  // Constructor and destructor
+
+  ControlPanel(unsigned long windowId);
+  ~ControlPanel();
+  static void makeControlPanel();
+  void openCommandLineFile();
+  //Boolean busy() { return busyFlag; }
+  void idSyntaxFile(AgString);
+  void loadSyntaxFile();
+  char *removeTilde(char *);
+  AgThread         analyzeThread;
+
+  //int maxDataPanelWidth;
+
+  AgUserHandler *userHandler;
+  static AgString selectedMenuText;
+  //void checkTopmost();
+  //AgClassAction<ControlPanel> topmostAction;
+  void setStatus();
+
+
+  // Command event handler function
+
+  Boolean command(ICommandEvent&);
+  Boolean activated(IFrameEvent &);
+  Boolean deactivated(IFrameEvent &);
+  Boolean gotFocus(IControlEvent &);
+  //Boolean lostFocus(IControlEvent &);
+  Boolean virtualKeyPress(IKeyboardEvent &);
+  //Boolean mousePointerChange(IMousePointerEvent &event);
+  ControlPanel &makeTopmost();
+  //ControlPanel &makeNotTopmost();
+  //Boolean dispatchHandlerEvent(IEvent &event);
+  Boolean systemCommand(ICommandEvent&);
+  Boolean menuShowing(IMenuEvent &event, ISubmenu &submenu);
+  Boolean menuEnded(IMenuEvent &event);
+  Boolean menuSelected(IMenuEvent &event);
+  Boolean mouseClicked(IMouseClickEvent &event);
+  Boolean paintWindow(IPaintEvent &event);
+  //Boolean windowResize(IResizeEvent &event);
+  void showErrors();
+  void closeWindows();
+  void hideWindows();
+  void restoreWindows();
+  void closeSyntaxWindows();
+  virtual Boolean showHelp(IEvent &event);
+  virtual ControlPanel &close();
+  void gatherProfile();
+  void rememberFile(AgString);
+  void selectMenuItem(long);
+  void restoreDirectory();
+
+  class TimerFn : public ITimerFn {
+  private:
+    ITimer &timer;
+    //StatusControl &window;
+    StatisticsWindow &window;
+    IThread &thread;
+    void timerExpired(unsigned long timerId);
+
+  public:
+    TimerFn(ITimer &timer_, StatisticsWindow &window_, IThread &thread_)
+      : timer(timer_)
+      , window(window_)
+      , thread(thread_)
+    {}
+  };
+
+  class ComboBox
+    : public IComboBox
+    , public IShowListHandler
+    , public ISelectHandler
+  {
+  private:
+    int listShowing;
+
+  public:
+    AgAction enterAction;
+    AgAction selectAction;
+    ComboBox(long id, IWindow *owner, char *text)
+      : IComboBox(id, owner, owner, IRectangle(),
+        autoScroll |
+        dropDownType | horizontalScroll | tabStop)
+      , listShowing(0)
+    {
+      //LOGSECTION("ControlPanel::ComboBox::ComboBox");
+      IFont f = font();
+      ISize minimum(f.textWidth(text),f.maxCharHeight() );
+      //LOGV(minimum.asString());
+      setMinimumSize(minimum).show();
+      addAsLast("");
+      ISelectHandler::handleEventsFor(this);
+      IShowListHandler::handleEventsFor(this);
+    }
+    ~ComboBox() {
+      ISelectHandler::stopHandlingEventsFor(this);
+      IShowListHandler::stopHandlingEventsFor(this);
+    }
+
+    Boolean listShown(IControlEvent &event);
+    Boolean enter(IControlEvent &event);
+  };
+
+  void findNext();
+  void findPrev();
+
+  void monitor(IThread &thread);
+
+  ITimer timer;
+
+  AgAction quitAction;
+  void quit();
+
+  AgNotificationAction<ControlPanel> textColorChange;
+  AgNotificationAction<ControlPanel> linkColorChange;
+  AgNotificationAction<ControlPanel> traversedColorChange;
+  void onTextColorChange();
+  void onLinkColorChange();
+  void onTraversedColorChange();
+
+
+//private:
+
+  // Shows product information dialog
+  //virtual void productInfo();
+
+  AgString         openFileName;
+  time_t           openFileTimestamp;
+  AgString         sourceText;
+
+  IMenuBar        menuBar;
+  ISystemMenu     systemMenu;
+  IFont           systemMenuFont;
+
+  ISetCanvas             canvas;
+    ISetCanvas             buttonCanvas;
+      IGraphicPushButton     agButton;
+      IGraphicPushButton     bpButton;
+      IGraphicPushButton     ftButton;
+      IGraphicPushButton     gtButton;
+      IGraphicPushButton     warnButton;
+      IGraphicPushButton     confButton;
+      IGraphicPushButton     helpButton;
+      IStaticText            statusControl;
+    ISetCanvas             searchCanvas;
+      ComboBox               searchKeyBox;
+      IGraphicPushButton     findNextButton;
+      IGraphicPushButton     findPrevButton;
+
+  IFlyText            flyText;
+  IFlyOverHelpHandler flyOver;
+  IAccelerator accelerator;
+
+public:
+  ITitle          windowTitle;
+
+  AgStack<AgString> recentFiles;
+
+  int topmostFlag;
+
+  //void showHelpTopic();
+  int helpRequested;
+
+  HelpDemon statusControlHelp;
+  HelpDemon searchKeyHelp;
+
+  IRectangle closeRect;
+
+  static IPointerHandle  helpCursor;
+  static IPointerHandle  activeCursor;
+  static ISystemPointerHandle waitCursor;
+  static int             helpCursorSet;
+  static void resetCursor();
+};
+
+extern ControlPanel  *controlPanel;
+extern IPoint         controlPanelLocation;
+
+extern int            syntaxFileId;
+extern IRectangle     syntaxFileRect;
+
+
+#endif /* CTRLPANEL_HPP */