summaryrefslogtreecommitdiff
path: root/rhtvision/classes/tcolorit.cc
diff options
context:
space:
mode:
Diffstat (limited to 'rhtvision/classes/tcolorit.cc')
-rw-r--r--rhtvision/classes/tcolorit.cc118
1 files changed, 118 insertions, 0 deletions
diff --git a/rhtvision/classes/tcolorit.cc b/rhtvision/classes/tcolorit.cc
new file mode 100644
index 0000000..1545ca5
--- /dev/null
+++ b/rhtvision/classes/tcolorit.cc
@@ -0,0 +1,118 @@
+/*
+ * Turbo Vision - Version 2.0
+ *
+ * Copyright (c) 1994 by Borland International
+ * All Rights Reserved.
+ *
+
+Modified by Robert H”hne to be used for RHIDE.
+Modified by Salvador E. Tropea for i18n support.
+
+ *
+ *
+ */
+// SET: Moved the standard headers here because according to DJ
+// they can inconditionally declare symbols like NULL
+#define Uses_string
+
+#define Uses_TKeys
+#define Uses_TColorItem
+#define Uses_TColorItemList
+#define Uses_TEvent
+#define Uses_TGroup
+#define Uses_TRect
+#define Uses_opstream
+#define Uses_ipstream
+#include <tv.h>
+
+TColorItem::TColorItem( const char *nm, uchar idx, TColorItem *nxt )
+{
+ index = idx;
+ next = nxt;
+ name = newStr( nm );
+ cacheName = NULL;
+}
+
+TColorItem::~TColorItem()
+{
+ DeleteArray((char *)name);
+ TVIntl::freeSt(cacheName);
+}
+
+TColorItem& operator + ( TColorItem& i1, TColorItem& i2 )
+{
+ TColorItem *cur = &i1;
+ while( cur->next != 0 )
+ cur = cur->next;
+ cur->next = &i2;
+ return i1;
+}
+
+TColorItemList::TColorItemList( const TRect& bounds,
+ TScrollBar *aScrollBar,
+ TColorItem *aItems,
+ TScrollBar *aHScrollBar
+ ) :
+ TListViewer( bounds, 1, aHScrollBar, aScrollBar ),
+ items( aItems )
+{
+ eventMask |= evBroadcast;
+ int i = 0;
+ while( aItems != 0 )
+ {
+ aItems = aItems->next;
+ i++;
+ }
+ setRange( i );
+}
+
+void TColorItemList::focusItem( ccIndex item )
+{
+ TListViewer::focusItem( item );
+ TColorItem *curItem = items;
+ while( item-- > 0 )
+ curItem = curItem->next;
+ message( owner, evBroadcast, cmNewColorIndex, (void *)(uipointer)(curItem->index));
+}
+
+void TColorItemList::getText( char *dest, ccIndex item, short maxChars )
+{
+ TColorItem *curItem = items;
+ while( item-- > 0 )
+ curItem = curItem->next;
+ strncpy( dest, TVIntl::getText(curItem->name,curItem->cacheName), maxChars );
+ dest[maxChars] = '\0';
+}
+
+void TColorItemList::handleEvent( TEvent& event )
+{
+ TListViewer::handleEvent( event );
+ if( event.what == evBroadcast && event.message.command == cmNewColorItem )
+ {
+ items = (TColorItem *)event.message.infoPtr;
+ TColorItem *curItem = items;
+ int i = 0;
+ while( curItem != 0 )
+ {
+ curItem = curItem->next;
+ i++;
+ }
+ setRange( i );
+ focusItem( 0 );
+ drawView();
+ }
+}
+
+#if !defined( NO_STREAM )
+TStreamable *TColorItemList::build()
+{
+ return new TColorItemList( streamableInit );
+}
+
+TColorItemList::TColorItemList( StreamableInit ) :
+ TListViewer( streamableInit )
+{
+}
+
+#endif // NO_STREAM
+