]> rtime.felk.cvut.cz Git - orte.git/blob - orte/contrib/shape/richtext.cpp
version 0.2.2 (mac, solaris patch)
[orte.git] / orte / contrib / shape / richtext.cpp
1 /****************************************************************************
2 ** $Id: richtext.cpp,v 1.5 2004/04/20 08:37:21 smolik Exp $
3 **
4 ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
5 **
6 ** This file is part of an example program for Qt.  This example
7 ** program may be used, distributed and modified without limitation.
8 **
9 *****************************************************************************/
10
11 #include "richtext.h"
12
13 #include <qhbox.h>
14 #include <qhbox.h>
15 #include <qpushbutton.h>
16 #include <qtextview.h>
17 #include <qbrush.h>
18 #include <qapplication.h>
19
20 static const char* publisherExamples[] = {
21     "<b>Publisher Example 1:</b><br>"
22     "<hr><br>"
23
24     "<pre>ORTEInit();<br>"
25     "d=<b>ORTEDomainAppCreate</b>(ORTE_DEFAULT_DOMAIN,NULL,NULL,ORTE_FALSE);<br>"
26     "<b>ORTETypeRegisterAdd</b>(d,\"HelloMsg\",NULL,NULL,64);<br>"
27     "NTPTIME_BUILD(persistence,3);<br>"
28     "p=<b>ORTEPublicationCreate</b>(<br>"
29     "     d,<br>"
30     "     \"Example HelloMsg\",    /* Topic */<br>"
31     "     \"HelloMsg\",            /* Type */<br>"
32     "     &instance2Send,        /* Instance */<br>"
33     "     &persistence,          /* Persistance */<br>"
34     "     1,                     /* Strength */<br>"
35     "     NULL,<br>"
36     "     NULL,<br>"
37     "     NULL);<br></pre>",
38   
39     "<b>Example 2:</b><br>"
40     "<hr><br><br>"
41     "<big>A well-used door needs no oil on its hinges.<br>"
42     "A swift-flowing steam does not grow stagnant.<br>"
43     "Neither sound nor thoughts can travel through a vacuum.<br>"
44     "Software rots if not used.<br><br>"
45     "These are great mysteries.</big><br><br>"
46     "<center><i>-- Geoffrey James, \"The Tao of Programming\"</i></center>",
47
48     0
49 };
50
51 static const char* subscriberExamples[] = {
52     "<b>Subscriber Example 1:</b><br>"
53     "<hr><br>"
54
55     "<pre>ORTEInit();<br>"
56     "d=<b>ORTEDomainAppCreate</b>(ORTE_DEFAULT_DOMAIN,NULL,NULL,ORTE_FALSE);<br>"
57     "<b>ORTETypeRegisterAdd</b>(d,\"HelloMsg\",NULL,NULL,64);<br>"
58     "NTPTIME_BUILD(persistence,3);<br>"
59     "s=<b>ORTESubscriptionCreate</b>(<br>"
60     "    d,<br>"
61     "    IMMEDIATE,<br>"
62     "    BEST_EFFORTS,<br>"
63     "    \"Example HelloMsg\",     /* Topic */<br>"
64     "    \"HelloMsg\",             /* Type */<br>"
65     "    &instance2Recv,         /* Instance */<br>"
66     "    &deadline,              /* Deadline */<br>"
67     "    &minimumSeparation,     /* Minimum Separation */<br>"
68     "    recvCallBack,           /* CallBack function */<br>"
69     "    NULL);<br><br>"
70     "void <b>recvCallBack</b>(const ORTERecvInfo *info,<br>"
71     "                  void *vinstance, void *recvCallBackParam) {<br>"
72     "  char *instance=(char*)vinstance;<br><br>"
73     "  switch (info->status) {<br>"
74     "    case NEW_DATA:<br>"
75     "      printf(\"%s\",instance);<br>"
76     "      break;<br>"
77     "    case DEADLINE:<br>"
78     "      printf(\"deadline occured\");<br>"
79     "      break;<br>"
80     "  }<br>"
81     "}<br></pre>",
82
83     "<b>Example 2:</b><br>"
84     "<hr><br><br>"
85     "<big>A well-used door needs no oil on its hinges.<br>"
86     "A swift-flowing steam does not grow stagnant.<br>"
87     "Neither sound nor thoughts can travel through a vacuum.<br>"
88     "Software rots if not used.<br><br>"
89     "These are great mysteries.</big><br><br>"
90     "<center><i>-- Geoffrey James, \"The Tao of Programming\"</i></center>",
91
92     0
93 };
94
95
96 MyRichText::MyRichText( QWidget *parent, const char *name )
97     : QVBox( parent, name )
98 {
99     setMargin( 5 );
100     
101     view = new QTextView( this );
102     QBrush paper;
103     paper.setPixmap( QPixmap( "marble.png" ) );
104     if ( paper.pixmap() != 0 )
105         view->setPaper( paper );
106     else
107         view->setPaper( white );
108
109     view->setMinimumSize( 500, 250 );
110
111     QHBox *buttons = new QHBox( this );
112     buttons->setMargin( 5 );
113
114     bClose = new QPushButton( "&Close", buttons );
115     bPrev = new QPushButton( "<< &Prev", buttons );
116     bNext = new QPushButton( "&Next >>", buttons );
117
118     bPrev->setEnabled( FALSE );
119
120     connect( bClose, SIGNAL(clicked()), this, SLOT(close()) );
121     connect( bPrev, SIGNAL( clicked() ), this, SLOT( prev() ) );
122     connect( bNext, SIGNAL( clicked() ), this, SLOT( next() ) );
123
124 }
125
126 void MyRichText::setTextPublisher()
127 {
128     num = 0;
129     sayings=publisherExamples;
130     view->setText(sayings[0]);
131 }
132
133
134 void MyRichText::setTextSubscriber()
135 {
136     num = 0;
137     sayings=subscriberExamples;
138     view->setText(sayings[0]);
139 }
140
141 void MyRichText::prev()
142 {
143     if ( num <= 0 )
144         return;
145
146     num--;
147
148     view->setText( sayings[num] );
149
150     if ( num == 0 )
151         bPrev->setEnabled( FALSE );
152
153     bNext->setEnabled( TRUE );
154 }
155
156 void MyRichText::next()
157 {
158     if ( !sayings[++num] )
159         return;
160
161     view->setText( sayings[num] );
162
163     if ( !sayings[num + 1] )
164         bNext->setEnabled( FALSE );
165
166     bPrev->setEnabled( TRUE );
167 }
168
169
170
171
172