summaryrefslogtreecommitdiff
path: root/setedit/settvuti/tprogres.cc
diff options
context:
space:
mode:
Diffstat (limited to 'setedit/settvuti/tprogres.cc')
-rw-r--r--setedit/settvuti/tprogres.cc80
1 files changed, 80 insertions, 0 deletions
diff --git a/setedit/settvuti/tprogres.cc b/setedit/settvuti/tprogres.cc
new file mode 100644
index 0000000..b3bc330
--- /dev/null
+++ b/setedit/settvuti/tprogres.cc
@@ -0,0 +1,80 @@
+/* Copyright (C) 1996-2003 by Salvador E. Tropea (SET),
+ see copyrigh file for details */
+/**[txh]********************************************************************
+
+ Class: TProgress
+ Description:
+ That's a very simply progress indicator used when we don't know how much
+items will be processed and we don't know the user could think the program
+hanged.
+
+***************************************************************************/
+#include <stdio.h> // sprintf()
+#define Uses_string
+#define Uses_AllocLocal
+#define Uses_TProgress
+#define Uses_TView
+#define Uses_TRect
+#define Uses_TGroup
+#define Uses_TDrawBuffer
+#define Uses_TStreamableClass
+#define Uses_fpstream
+#define Uses_TPalette
+#include <settvuti.h>
+
+// Same as static text, after all we are almost this
+#define cpProgress "\x06"
+
+TProgress::TProgress(const TRect& bounds, const char *aMessage) :
+ TView(bounds),
+ message(TVIntl::getTextNew(aMessage)),
+ state(0)
+{
+ len=strlen(message)+3;
+}
+
+TProgress::~TProgress()
+{
+ DeleteArray(message);
+}
+
+void TProgress::draw()
+{
+ AllocLocalStr(string,len);
+ sprintf(string,"%s %c",message,states[state]);
+
+ TDrawBuffer nbuf;
+ nbuf.moveStr(0,string,getColor(1));
+ writeLine(0,0,size.x,1,nbuf);
+}
+
+
+TPalette& TProgress::getPalette() const
+{
+ static TPalette palette(cpProgress,sizeof(cpProgress)-1);
+ return palette;
+}
+
+
+void TProgress::update()
+{
+ state++;
+ if (state>3)
+ state=0;
+ drawView();
+}
+
+void TProgress::write(opstream& os)
+{
+ TView::write(os);
+ os.writeString(message);
+}
+
+void *TProgress::read(ipstream& is)
+{
+ TView::read(is);
+ message=is.readString();
+ return this;
+}
+
+char TProgress::states[4]={'-','\\','|','/'};