ROVLib2
RISCOSC++applicationdevelopmentlibrary
tut4.cpp
1 #include "task.h"
2 #include "applicationicon.h"
3 #include "aboutbox.h"
4 #include "menu.h"
5 #include "wimp_error.h"
6 #include "errorexception.h"
7 
8 using namespace rov2;
9 
10 namespace tutorial4
11 {
12 /* We can create a class like this... */
13 static CTask* pTask = new CTask("Fourth ROVLib2 app!");
14 
16 class MyMenu : public CMenu
17 {
18 public:
19  MyMenu() : CMenu("ROVLib2", 2)
20  {
21  m_pmiInfo = new CTextMenuItem("Info");
22  m_pabBox = new CAboutBox("Fourth ROVLib2 app", "Test program", "Jason Tribbeck", "0.01 (02/09/2017)");
23  m_pabBox->Create(tLocation{ 0, 0 });
24  m_pmiInfo->AttachSubmenu(m_pabBox);
25  m_pmiQuit = new CTextMenuItem("Quit");
26  AddItem(m_pmiInfo);
27  AddItem(m_pmiQuit);
28  }
29 
30  eMenuHandled Clicked(const unsigned int* kuiaEntries)
31  {
32  switch (kuiaEntries[0])
33  {
34  case 1: // Second menu item
35  pTask->Stop();
36  return mhHandledClose;
37  case 0:
38  return mhHandledKeepOpen;
39  }
40 
41  return mhUnhandled;
42  }
43 
44 private:
45  CMenuItem* m_pmiQuit;
46  CMenuItem* m_pmiInfo;
47  CAboutBox* m_pabBox;
48 };
49 
51 class MyIcon : public CApplicationIcon
52 {
53 public:
55  MyIcon() : CApplicationIcon("!system")
56  {
57  m_mMyMenu = new MyMenu();
58  }
59 
61  ~MyIcon() {}
62 
63  bool Clicked(const tMouseClickBlock& rkmcbClickBlock)
64  {
65  if (rkmcbClickBlock.bcButtons.menu)
66  {
67  m_mMyMenu->DisplayAsIconbarMenu();
68  }
69  return true;
70  }
71 
72 private:
73  CMenu* m_mMyMenu;
74 };
75 }
76 
77 using namespace tutorial4;
78 
79 int main(int argc, char** argv)
80 {
81  try
82  {
83  /* Create our application icon */
84  MyIcon* pIcon = new MyIcon();
85 
86  /* Poll until we want to stop*/
87  pTask->Poll();
88 
89  /* Delete everything */
90  delete(pIcon);
91  }
92  catch (_kernel_oserror* peb)
93  {
94  wimp_error(peb->errmess, WIMPERROR_CANCELBOX);
95  }
96  catch (CErrorException* exError)
97  {
98  wimp_error(exError->Message(), WIMPERROR_CANCELBOX);
99  }
100 
101  return 0;
102 }
bool Clicked(const tMouseClickBlock &rkmcbClickBlock)
Definition: tut4.cpp:63
eMenuHandled Clicked(const unsigned int *kuiaEntries)
Definition: tut4.cpp:30
void Poll()
Definition: task.cpp:35
const char * Message()
void Stop()
Definition: task.h:23