Mercurial > ~dholland > hg > ag > index.cgi
diff anagram/guisupport/wdata.h @ 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/guisupport/wdata.h Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,112 @@ +/* + * AnaGram, A System for Syntax Directed Programming + * Copyright 1997-2002 Parsifal Software. All Rights Reserved. + * See the file COPYING for license and usage terms. + * + * wdata.h + */ + +#ifndef WDATA_H +#define WDATA_H + +#include "action.h" +#include "agstring.h" +#include "agarray.h" + +//#define INCLUDE_LOGGING +//#include "log.h" + +class WindowConnector; +class dc; + +class AgDataPanel; + + +class AgMenuItem { +private: + static const AgAction nullAction; +public: + AgString text; + AgAction action; + dc *displayControl; + AgMenuItem(AgString text_, AgAction action_, dc *displayControl_) : + text(text_), + action(action_), + displayControl(displayControl_) + { + //LOGSECTION("AgMenuItem constructor"); + //LOGV((int) (dc *) displayControl); + } + AgMenuItem &operator =(const AgMenuItem &m) { + text = m.text; + action = m.action; + displayControl = m.displayControl; + return *this; + } + AgMenuItem() : + text(AgString()) + , action(nullAction) + , displayControl(0) + {} + int operator < (const AgMenuItem &m) const { + return text < m.text; + } +}; + +class FindTabs { +private: + AgString text; + char *field; + char *nextField; + + void update() { + if (nextField == 0) return; + while (*nextField && *nextField != '\t') nextField++; + if (*nextField) *nextField++ = 0; + else nextField = 0; + } + +public: + FindTabs(char *p) : text(p), field((char *)p), nextField((char *)p) { + update(); + } + char *getField() { + char *rv = field; + field = nextField; + update(); + return rv; + } +}; + +class WindowData { +public: + virtual int nextChildId() = 0; + virtual ~WindowData() {} + virtual AgString getLine(unsigned) { return AgString(); } + virtual AgString findHelpTopic() { return AgString(); } + virtual unsigned nLines() { return 0; } + virtual unsigned nColumns() { return 1; } + + virtual AgString fileName() { return AgString(); } + virtual AgString headTitle() { return AgString(); } + virtual AgString columnHeadTitle() { return AgString(); } + virtual AgString footTitle() { return AgString(); } + virtual void onEnter() {} + virtual void close() {} + virtual void show() {} + virtual AgArray<AgMenuItem> auxMenu() { return AgArray<AgMenuItem>(); } + + virtual int syntaxDependent() { return 0; } + virtual int getCursorLine(){ return 0; } + virtual void synchCursor(unsigned) {} +}; + +class WindowConnector { +public: + virtual void disconnect() {} + virtual void setFocus() {} + virtual int getCursorLine(){ return 0; } + virtual WindowData *windowData() { return NULL; } +}; + +#endif /* WDATA_H */