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