16
16
17
17
#include " gui/menu_string_array.hpp"
18
18
19
+ #include < boost/format.hpp>
20
+
21
+ #include " util/log.hpp"
19
22
#include " gui/menu_item.hpp"
20
23
#include " util/gettext.hpp"
21
24
22
25
StringArrayMenu::StringArrayMenu (std::vector<std::string>& items) :
23
26
m_array_items(items),
24
- m_text()
27
+ m_text(),
28
+ m_selected_item(-1 )
25
29
{
26
30
reload ();
27
31
}
@@ -32,13 +36,30 @@ StringArrayMenu::menu_action(MenuItem& item)
32
36
int id = item.get_id ();
33
37
if (id >= 0 )
34
38
{
35
- m_array_items.erase (m_array_items.begin () + id);
36
- reload ();
39
+ m_text = m_array_items[id];
40
+ m_selected_item = id;
41
+ get_item_by_id (-2 ).set_text (str (boost::format (_ (" Selected item: %s" )) % (m_selected_item >= 0 ? m_array_items[m_selected_item] : _ (" None" ))));
37
42
}
38
- else if (id == - 2 && m_text.length () > 0 )
43
+ else if (m_text.length () > 0 && id < - 2 )
39
44
{
40
- m_array_items.push_back (m_text);
45
+ if (id == -3 )
46
+ {
47
+ m_array_items.push_back (m_text);
48
+ }
49
+ else if (id == -4 && m_selected_item >= 0 )
50
+ {
51
+ m_array_items.insert (m_array_items.begin () + m_selected_item + 1 , m_text);
52
+ }
53
+ else if (id == -5 && m_selected_item >= 0 )
54
+ {
55
+ m_array_items[m_selected_item] = m_text;
56
+ }
57
+ else if (id == -6 && m_selected_item >= 0 )
58
+ {
59
+ m_array_items.erase (m_array_items.begin () + m_selected_item);
60
+ }
41
61
m_text = " " ;
62
+ m_selected_item = -1 ;
42
63
reload ();
43
64
}
44
65
}
@@ -55,7 +76,12 @@ StringArrayMenu::reload()
55
76
}
56
77
add_hl ();
57
78
add_textfield (_ (" Text" ), &m_text);
58
- add_entry (-2 , _ (" Add" ));
79
+ add_entry (-2 , str (boost::format (_ (" Selected item: %s" )) % (m_selected_item >= 0 ? m_array_items[m_selected_item] : _ (" None" ))));
80
+ add_entry (-3 , _ (" Add" ));
81
+ add_entry (-4 , _ (" Insert" ));
82
+ add_entry (-5 , _ (" Update" ));
83
+ add_entry (-6 , _ (" Delete" ));
84
+ add_hl ();
59
85
add_back (_ (" OK" ));
60
86
}
61
87
/* EOF */
0 commit comments