aboutsummaryrefslogtreecommitdiffstats
path: root/filewindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filewindow.cpp')
-rw-r--r--filewindow.cpp332
1 files changed, 332 insertions, 0 deletions
diff --git a/filewindow.cpp b/filewindow.cpp
new file mode 100644
index 0000000..817637d
--- /dev/null
+++ b/filewindow.cpp
@@ -0,0 +1,332 @@
+// filewindow.cpp
+// Revision 23-jan-2005
+
+#include "file.h"
+
+#include "blassic.h"
+#include "error.h"
+#include "graphics.h"
+#include "edit.h"
+
+#include "trace.h"
+
+namespace blassic {
+
+namespace file {
+
+//***********************************************
+// BlFileWindow
+//***********************************************
+
+class BlFileWindow : public BlFile {
+public:
+ BlFileWindow (BlChannel ch);
+ BlFileWindow (BlChannel ch, int x1, int x2, int y1, int y2);
+ ~BlFileWindow ();
+ void reset (int x1, int x2, int y1, int y2);
+ bool isfile () const;
+ bool istextwindow () const;
+ virtual bool eof ();
+ virtual void flush ();
+ virtual size_t getwidth () const;
+ virtual void movecharforward ();
+ virtual void movecharforward (size_t n);
+ virtual void movecharback ();
+ virtual void movecharback (size_t n);
+ virtual void movecharup ();
+ virtual void movecharup (size_t n);
+ virtual void movechardown ();
+ virtual void movechardown (size_t n);
+ virtual void showcursor ();
+ virtual void hidecursor ();
+ virtual std::string getkey ();
+ virtual std::string inkey ();
+ void getline (std::string & str, bool endline= true);
+ std::string read (size_t n);
+ void tab ();
+ void tab (size_t n);
+ void endline ();
+ void gotoxy (int x, int y);
+ virtual void setcolor (int color);
+ virtual int getcolor ();
+ virtual void setbackground (int color);
+ virtual int getbackground ();
+ virtual void cls ();
+ std::string copychr (BlChar from, BlChar to);
+ int pos ();
+ int vpos ();
+ void tag ();
+ void tagoff ();
+ bool istagactive ();
+ void inverse (bool active);
+ bool getinverse ();
+ void bright (bool active);
+ bool getbright ();
+ bool poll ();
+ void scroll (int nlines);
+private:
+ void outstring (const std::string & str);
+ void outchar (char c);
+
+ BlChannel ch;
+};
+
+BlFile * newBlFileWindow (BlChannel ch)
+{
+ return new BlFileWindow (ch);
+}
+
+BlFile * newBlFileWindow (BlChannel ch, int x1, int x2, int y1, int y2)
+{
+ return new BlFileWindow (ch, x1, x2, y1, y2);
+}
+
+BlFileWindow::BlFileWindow (BlChannel ch) :
+ BlFile (OpenMode (Input | Output) ),
+ ch (ch)
+{
+ if (ch != 0)
+ throw ErrBlassicInternal;
+}
+
+BlFileWindow::BlFileWindow (BlChannel ch, int x1, int x2, int y1, int y2) :
+ BlFile (OpenMode (Input | Output) ),
+ ch (ch)
+{
+ graphics::definewindow (ch, x1, x2, y1, y2);
+}
+
+BlFileWindow::~BlFileWindow ()
+{
+ graphics::undefinewindow (ch);
+}
+
+void BlFileWindow::reset (int x1, int x2, int y1, int y2)
+{
+ graphics::definewindow (ch, x1, x2, y1, y2);
+}
+
+bool BlFileWindow::isfile () const
+{
+ return false;
+}
+
+bool BlFileWindow::istextwindow () const
+{
+ return true;
+}
+
+bool BlFileWindow::eof ()
+{
+ return false;
+}
+
+void BlFileWindow::flush ()
+{
+ // Nothing to do
+}
+
+size_t BlFileWindow::getwidth () const
+{
+ return graphics::getlinewidth (ch);
+}
+
+void BlFileWindow::movecharforward ()
+{
+ graphics::movecharforward (ch, 1);
+}
+
+void BlFileWindow::movecharforward (size_t n)
+{
+ graphics::movecharforward (ch, n);
+}
+
+void BlFileWindow::movecharback ()
+{
+ graphics::movecharback (ch, 1);
+}
+
+void BlFileWindow::movecharback (size_t n)
+{
+ graphics::movecharback (ch, n);
+}
+
+void BlFileWindow::movecharup ()
+{
+ graphics::movecharup (ch, 1);
+}
+
+void BlFileWindow::movecharup (size_t n)
+{
+ graphics::movecharup (ch, n);
+}
+
+void BlFileWindow::movechardown ()
+{
+ graphics::movechardown (ch, 1);
+}
+
+void BlFileWindow::movechardown (size_t n)
+{
+ graphics::movechardown (ch, n);
+}
+
+void BlFileWindow::showcursor ()
+{
+ graphics::showcursor (ch);
+}
+
+void BlFileWindow::hidecursor ()
+{
+ graphics::hidecursor (ch);
+}
+
+std::string BlFileWindow::getkey ()
+{
+ return graphics::getkey ();
+}
+
+std::string BlFileWindow::inkey ()
+{
+ return graphics::inkey ();
+}
+
+void BlFileWindow::getline (std::string & str, bool endline)
+{
+ using blassic::edit::editline;
+
+ std::string auxstr;
+ int inicol= graphics::xpos (ch);
+ while (! editline (* this, auxstr, 0, inicol, endline) )
+ continue;
+ swap (str, auxstr);
+}
+
+std::string BlFileWindow::read (size_t)
+{
+ throw ErrNotImplemented;
+}
+
+void BlFileWindow::tab ()
+{
+ graphics::tab (ch);
+}
+
+void BlFileWindow::tab (size_t n)
+{
+ graphics::tab (ch, n);
+}
+
+void BlFileWindow::endline ()
+{
+ outstring ("\r\n");
+}
+
+void BlFileWindow::gotoxy (int x, int y)
+{
+ graphics::gotoxy (ch, x, y);
+}
+
+void BlFileWindow::setcolor (int color)
+{
+ graphics::setcolor (ch, color);
+}
+
+int BlFileWindow::getcolor ()
+{
+ return graphics::getcolor (ch);
+}
+
+void BlFileWindow::setbackground (int color)
+{
+ graphics::setbackground (ch, color);
+}
+
+int BlFileWindow::getbackground ()
+{
+ return graphics::getbackground (ch);
+}
+
+void BlFileWindow::outstring (const std::string & str)
+{
+ TRACEFUNC (tr, "BlFileWindow::outstring");
+ TRMESSAGE (tr, str);
+
+ graphics::stringout (ch, str);
+}
+
+void BlFileWindow::outchar (char c)
+{
+ graphics::charout (ch, c);
+}
+
+void BlFileWindow::cls ()
+{
+ graphics::cls (ch);
+}
+
+std::string BlFileWindow::copychr (BlChar from, BlChar to)
+{
+ return graphics::copychr (ch, from, to);
+}
+
+int BlFileWindow::pos ()
+{
+ return graphics::xpos (ch);
+}
+
+int BlFileWindow::vpos ()
+{
+ return graphics::ypos (ch);
+}
+
+void BlFileWindow::tag ()
+{
+ graphics::tag (ch);
+}
+
+void BlFileWindow::tagoff ()
+{
+ graphics::tagoff (ch);
+}
+
+bool BlFileWindow::istagactive ()
+{
+ return graphics::istagactive (ch);
+}
+
+void BlFileWindow::inverse (bool active)
+{
+ graphics::inverse (ch, active);
+}
+
+bool BlFileWindow::getinverse ()
+{
+ return graphics::getinverse (ch);
+}
+
+void BlFileWindow::bright (bool active)
+{
+ graphics::bright (ch, active);
+}
+
+bool BlFileWindow::getbright ()
+{
+ return graphics::getbright (ch);
+}
+
+bool BlFileWindow::poll ()
+{
+ return graphics::pollin ();
+}
+
+void BlFileWindow::scroll (int nlines)
+{
+ graphics::scroll (ch, nlines);
+}
+
+} // namespace file
+
+} // namespace blassic
+
+// End of filewindow.cpp
Un proyecto texto-plano.xyz