alt_hotkey = 0;
ctrl_hotkey = 0;
menu_popup = 0;
+ enabled = 1;
}
BC_MenuItem::~BC_MenuItem()
return 0;
}
+int BC_MenuItem::get_enabled()
+{
+ return enabled;
+}
+void BC_MenuItem::set_enabled(int v)
+{
+ enabled = v;
+}
+
+
int BC_MenuItem::activate_submenu()
{
int new_x, new_y;
&new_y,
&tempwin);
submenu->popup_menu = menu_popup->popup_menu;
- submenu->activate_menu(new_x + 5, new_y, menu_popup->w - 10, h, 0, 0);
+ submenu->activate_menu(new_x + xS(5), new_y, menu_popup->w - xS(10), h, 0, 0);
highlighted = 1;
}
return 0;
int BC_MenuItem::dispatch_button_release(int &redraw)
{
- int result = 0;
-
- if(!strcmp(text, "-")) return 0;
+ int len = strlen(text);
+ if( len > 0 && text[0] == '-' && text[len-1] == '-' ) return 0;
+ int result = 0;
if(submenu)
{
result = submenu->dispatch_button_release();
int text_line = top_level->get_text_descent(MEDIUMFONT);
BC_Resources *resources = top_level->get_resources();
- if(!strcmp(text, "-"))
- {
- menu_popup->get_popup()->set_color(DKGREY);
- menu_popup->get_popup()->draw_line(5, y + h / 2, menu_popup->get_w() - 5, y + h / 2);
- menu_popup->get_popup()->set_color(LTGREY);
- menu_popup->get_popup()->draw_line(5, y + h / 2 + 1, menu_popup->get_w() - 5, y + h / 2 + 1);
+ if(!strcmp(text, "-")) {
+ int bx = xS(5), by = y+h/2, bw = menu_popup->get_w()-xS(10);
+ draw_bar(bx, by, bw);
}
- else
- {
- int offset = 0;
+ else if( text[0] == '-' && text[strlen(text)-1] == '-' ) {
+ draw_title_bar();
+ }
+ else {
+ int xoffset = 0, yoffset = 0;
if(highlighted)
{
int y = this->y;
resources->menu_down,
resources->menu_light);
}
- offset = 1;
+ xoffset = xS(1); yoffset = yS(1);
}
else
// Highlighted
}
if(checked)
{
-// menu_popup->get_popup()->draw_check(10 + offset, y + 2 + offset);
+// menu_popup->get_popup()->draw_check(xS(10) + xoffset, y + 2 + yoffset);
menu_popup->get_popup()->draw_pixmap(menu_popup->check,
- offset,
- y + (this->h - menu_popup->check->get_h()) / 2 + offset);
+ xoffset,
+ y + (this->h - menu_popup->check->get_h()) / 2 + yoffset);
menu_popup->get_popup()->set_font(MEDIUMFONT);
- menu_popup->get_popup()->draw_text(menu_popup->check->get_w() + offset,
- y + h - text_line - 2 + offset,
+ menu_popup->get_popup()->draw_text(menu_popup->check->get_w() + xoffset,
+ y + h - text_line - 2 + yoffset,
text);
- menu_popup->get_popup()->draw_text(menu_popup->get_key_x() + offset,
- y + h - text_line - 2 + offset,
+ menu_popup->get_popup()->draw_text(menu_popup->get_key_x() + xoffset,
+ y + h - text_line - 2 + yoffset,
hotkey_text);
}
else
{
menu_popup->get_popup()->set_font(MEDIUMFONT);
- menu_popup->get_popup()->draw_text(10 + offset, y + h - text_line - 2 + offset, text);
- menu_popup->get_popup()->draw_text(menu_popup->get_key_x() + offset, y + h - text_line - 2 + offset, hotkey_text);
+ menu_popup->get_popup()->draw_text(xS(10) + xoffset, y + h - text_line - 2 + yoffset, text);
+ menu_popup->get_popup()->draw_text(menu_popup->get_key_x() + xoffset, y + h - text_line - 2 + yoffset, hotkey_text);
}
}
return 0;
}
+void BC_MenuItem::draw_bar(int bx, int by, int bw)
+{
+ BC_Popup *popup = menu_popup->get_popup();
+ popup->set_color(DKGREY);
+ popup->draw_line(bx, by, bx+bw, by);
+ popup->set_color(LTGREY); ++by;
+ popup->draw_line(bx, by, bx+bw, by);
+}
+
+void BC_MenuItem::draw_title_bar()
+{
+ BC_Popup *popup = menu_popup->get_popup();
+ int len = strlen(text)-2;
+ if( len <= 0 ) return;
+ int tw = popup->get_text_width(MEDIUMFONT, text+1, len);
+ int th = popup->get_text_ascent(MEDIUMFONT);
+ int mw = menu_popup->get_w(), lw = mw - tw;
+ int x1 = xS(5), y1 = y+h/2;
+ int tx = lw/4, ty = y1 + th/2;
+ int w1 = tx - x1 - xS(5);
+ if( w1 > 0 ) draw_bar(x1, y1, w1);
+ BC_Resources *resources = top_level->get_resources();
+ popup->set_color(resources->text_background_hi);
+ popup->draw_text(tx, ty, text+1, len);
+ int x2 = tx + tw + xS(5), w2 = mw - xS(5) - x2;
+ if( w2 > 0 ) draw_bar(x2, y1, w2);
+}
int BC_MenuItem::add_submenu(BC_SubMenu *submenu)
{