1 // $Id: profilemenus.cpp,v 1.13 2011/04/23 02:02:49 bobgian Exp $
2
3 /*
4 Copyright 2002 Peter Beerli, Mary Kuhner, Jon Yamato and Joseph Felsenstein
5
6 This software is distributed free of charge for non-commercial use
7 and is copyrighted. Of course, we do not guarantee that the software
8 works, and are not responsible for any damage you may cause or have.
9 */
10
11 #include <cassert>
12
13 #include <string>
14 #include "lamarc_strings.h"
15 //#include "newmenuitems.h"
16 #include "profilemenus.h"
17 //#include "togglemenuitem.h"
18 #include "ui_interface.h"
19 #include "ui_strings.h"
20
21 using std::string;
22
ProfileMenu(UIInterface & myui)23 ProfileMenu::ProfileMenu(UIInterface & myui)
24 : NewMenu(myui,lamarcmenu::profileTitle, lamarcmenu::profileInfo)
25 {
26 AddMenuItem(new ToggleMenuItemNoId("A",ui,uistr::allProfilesOn));
27 AddMenuItem(new ToggleMenuItemNoId("X",ui,uistr::allProfilesOff));
28 AddMenuItem(new ToggleMenuItemNoId("P",ui,uistr::allProfilesPercentile));
29 AddMenuItem(new ToggleMenuItemNoId("F",ui,uistr::allProfilesFixed));
30 AddMenuItem(new ProfileByForceMenuItemGroup(ui));
31 }
32
~ProfileMenu()33 ProfileMenu::~ProfileMenu()
34 {
35 }
36
ProfileByForceMenuItemGroup(UIInterface & ui)37 ProfileByForceMenuItemGroup::ProfileByForceMenuItemGroup(UIInterface& ui)
38 : MenuDisplayGroupBaseImplementation(ui,uistr::profileByForce)
39 {
40 }
41
~ProfileByForceMenuItemGroup()42 ProfileByForceMenuItemGroup::~ProfileByForceMenuItemGroup()
43 {
44 }
45
46 MenuInteraction_ptr
MakeOneHandler(UIId id)47 ProfileByForceMenuItemGroup::MakeOneHandler(UIId id)
48 {
49 return MenuInteraction_ptr(new ProfileMenuForOneForce(ui,id));
50 }
51
52 UIIdVec1d
GetVisibleIds()53 ProfileByForceMenuItemGroup::GetVisibleIds()
54 {
55 return ui.doGetUIIdVec1d(uistr::validForces);
56 }
57
58 string
GetKey(UIId id)59 ProfileByForceMenuItemGroup::GetKey(UIId id)
60 {
61 switch(id.GetForceType())
62 {
63 case force_COAL:
64 return "T";
65 break;
66 case force_DISEASE:
67 return "D";
68 break;
69 case force_GROW:
70 return "G";
71 break;
72 case force_MIG:
73 return "M";
74 break;
75 case force_REC:
76 return "R";
77 break;
78 case force_REGION_GAMMA:
79 return "L";
80 break;
81 case force_EXPGROWSTICK:
82 return "ES";
83 break;
84 case force_LOGISTICSELECTION:
85 return "S";
86 break;
87 case force_LOGSELECTSTICK:
88 return "LS";
89 break;
90 default:
91 assert(false); //uncaught force type.
92 }
93 throw implementation_error("force_type enum missing case in ProfileByForceMenuItemGroup::GetKey");
94 }
95
ProfileMenuForOneForce(UIInterface & ui,UIId id)96 ProfileMenuForOneForce::ProfileMenuForOneForce(UIInterface& ui,UIId id)
97 : NewMenu(ui,lamarcmenu::forceProfileTitle+ToString(id.GetForceType()),
98 lamarcmenu::forceProfileInfo)
99 {
100 AddMenuItem(new ToggleMenuItemId("A",ui,uistr::oneForceProfilesOn,id));
101 AddMenuItem(new ToggleMenuItemId("X",ui,uistr::oneForceProfilesOff,id));
102 AddMenuItem(new ToggleMenuItemId("P",ui,uistr::oneForceProfileType,id));
103 AddMenuItem(new ToggleMenuItemGroupProfiles(ui,id));
104 }
105
~ProfileMenuForOneForce()106 ProfileMenuForOneForce::~ProfileMenuForOneForce()
107 {
108 }
109
SubMenuProfileForOneForce(std::string key,UIInterface & ui,UIId id)110 SubMenuProfileForOneForce::SubMenuProfileForOneForce(std::string key, UIInterface& ui, UIId id)
111 : ForceSubMenuItem(key, ui, new ProfileMenuForOneForceCreator(ui, id), id)
112 {
113 }
114
~SubMenuProfileForOneForce()115 SubMenuProfileForOneForce::~SubMenuProfileForOneForce()
116 {
117 }
118
ToggleMenuItemGroupProfiles(UIInterface & ui,UIId id)119 ToggleMenuItemGroupProfiles::ToggleMenuItemGroupProfiles(UIInterface & ui,UIId id)
120 : ToggleMenuItemGroup(ui,uistr::profileByID), m_id(id)
121 {
122 }
123
~ToggleMenuItemGroupProfiles()124 ToggleMenuItemGroupProfiles::~ToggleMenuItemGroupProfiles()
125 {
126 }
127
128 UIIdVec1d
GetVisibleIds()129 ToggleMenuItemGroupProfiles::GetVisibleIds()
130 {
131 return ui.doGetUIIdVec1d(uistr::validParamsForForce,m_id);
132 }
133
134 //____________________________________________________________________________________
135