Mercurial > ~dholland > hg > ag > index.cgi
diff anagram/vaclgui/ftview.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/ftview.hpp Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,197 @@ +/* + * AnaGram, A System for Syntax Directed Programming + * Copyright 1997-2002 Parsifal Software. All Rights Reserved. + * See the file COPYING for license and usage terms. + * + * ftview.hpp + */ + +#ifndef FTVIEW_HPP +#define FTVIEW_HPP + +#include <ikeyevt.hpp> +#include <ikeyhdr.hpp> +#include <imcelcv.hpp> +#include <imousevt.hpp> +#include <imoushdr.hpp> +//#include <imphdr.hpp> +#include <ipainevt.hpp> +#include <ipainhdr.hpp> +//#include <isizehdr.hpp> +#include <isplitcv.hpp> +#include <istattxt.hpp> +#include <itbar.hpp> + +class AgDataViewPlug; // from dvplug.hpp +struct tsd; // from tsd.h +#include "agstring.h" +#include "brt.h" +#include "conflicttrc.h" +#include "dview.hpp" +#include "frame.hpp" +#include "ftpardc.h" +#include "toolbar.hpp" +#include "trfview.hpp" +#include "vaclgui-res.h" + + +class FileTraceWindow; // below + +class FileTraceView + : public ICanvas + , public AgFocusHandler + , public IMouseHandler + , public IPaintHandler +{ +public: + FileTraceView(FileTraceWindow*,text_file, AgString); + ~FileTraceView(); + + FileTraceView &refreshRules(int); + + FileTraceWindow *frame; + + ISplitCanvas mainSplitter; + ISplitCanvas tracePanels; + IMultiCellCanvas leftPanel; + AgDataView stackView; + AgDataViewPlug *stackConnector; + IMultiCellCanvas rightPanel; + IStaticText fileTitle; + TraceFileView fileView; + ISplitCanvas bottomPanel; + AgDataView reductionChoiceView; + DcRef<FtParserReductionDc> reductionMenu; + AgDataView ruleView; + AgDataViewPlug *ruleConnector; + AgString fileName; + text_file textFile; + tsd *itemStack; + DcRef<rule_stack_dc> ruleControl; + DcRef<FtParserDc> parserDc; + + FileTraceView &completeReduction(); + //FileTraceView &setFocus(); + int focusControl; + int activePanel; + + void mySetFocus() { setFocus(); } + +protected: + Boolean gotFocus(IEvent &); + Boolean lostFocus(IEvent &); + + Boolean mouseClicked(IMouseClickEvent &event); + Boolean paintWindow(IPaintEvent &event); + + AgNotificationAction<FileTraceView> dataColorChange; + void onColorChange() {fileTitle.refresh();} + AgNotificationAction<FileTraceView> fontChange; + void onFontChange() {fileTitle.setFont(FontSpec::columnHead).refresh();} + HelpDemon fileViewHelp; +}; + +class FileTraceWindow + : public AgFrame + , public AgFocusHandler +/*, public IKeyboardHandler - compiler complains because AgFrame has one */ + , public IMouseHandler +{ +public: + FileTraceWindow(AgString,int); + ~FileTraceWindow(); + void stackSelect(); + void ruleSelect(); + void tokenSelect(); + void fileEnter(); + virtual AgString copyTitle(); + virtual FileTraceWindow ©To(IClipboard &c); + + // otherwise the compiler complains this is hidden + virtual int showHelp(IEvent &e) { return AgFrame::showHelp(e); } + + void synchRules(unsigned sn, unsigned token); + + Boolean windowResize(IResizeEvent &event); + Boolean gotFocus(IEvent&); + + Boolean characterKeyPress(IKeyboardEvent &); + Boolean virtualKeyPress(IKeyboardEvent &); + Boolean mouseClicked(IMouseClickEvent &event); + + void doStep(); + void parseFile(); + void resetParser(); + void reload(); + void showHelp(); + + FileTraceWindow &setLocationField(cint loc); + FileTraceWindow &setStatusField(const char *msg); + + FileTraceWindow &showReductionSelection(); + void reductionChoiceEnter(); + void onActivate(); + FileTraceWindow &setFocus(); + +public: + ToolBar toolBar; + IStaticText locationField; + HelpDemon locationFieldHelp; + IStaticText statusField; + HelpDemon statusFieldHelp; + FileTraceView canvas; + AgString fileName; + ToolBar buttonGroup; + ToolButton stepButton; + ToolButton parseButton; + ToolButton resetButton; + ToolButton reloadButton; + ToolButton helpButton; + + virtual Boolean findNext(AgString s); + virtual Boolean findPrev(AgString s); + + void onDesynch(); + void onResynch(); + + class TabControl { + public: + int enabled; + char *helpTopic; + AgAction action; + IWindow *window; + + TabControl() {} + TabControl(IWindow *window_, + char *helpTopic_, + AgAction action_ = AgAction()) + : enabled(1) + , helpTopic(helpTopic_) + , action(action_) + , window(window_) + {} + TabControl(const TabControl &x) + : enabled(x.enabled) + , helpTopic(x.helpTopic) + , action(x.action) + , window(x.window) + {} + }; + + enum { + stackTab, + fileTab, + choiceTab, + ruleTab, + stepTab, + parseTab, + resetTab, + reloadTab, + helpTab, + nTabs + }; + TabControl tabControl[nTabs]; +}; + + +#endif /* FTVIEW_HPP */