5a9677b8ed
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10963 a95241bf-73f2-0310-859d-f6bbb57e9c96
86 lines
2.0 KiB
C++
86 lines
2.0 KiB
C++
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
//
|
|
// Copyright (c) 2004, Haiku
|
|
//
|
|
// This software is part of the Haiku distribution and is covered
|
|
// by the Haiku license.
|
|
//
|
|
//
|
|
// File: MethodMenuItem.cpp
|
|
// Authors: Jérôme Duval,
|
|
//
|
|
// Description: Input Server
|
|
// Created: October 19, 2004
|
|
//
|
|
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
|
|
#include <string.h>
|
|
#include "MethodMenuItem.h"
|
|
|
|
MethodMenuItem::MethodMenuItem(int32 cookie, const char* name, const uchar* icon, BMenu *subMenu, BMessenger &messenger)
|
|
: BMenuItem(subMenu),
|
|
fIcon(BRect(0, 0, MENUITEM_ICON_SIZE - 1, MENUITEM_ICON_SIZE - 1), B_CMAP8),
|
|
fCookie(cookie)
|
|
{
|
|
SetLabel(name);
|
|
fIcon.SetBits(icon, MENUITEM_ICON_SIZE * MENUITEM_ICON_SIZE, 0, B_CMAP8);
|
|
fMessenger = messenger;
|
|
}
|
|
|
|
|
|
MethodMenuItem::MethodMenuItem(int32 cookie, const char* name, const uchar* icon)
|
|
: BMenuItem(name, NULL),
|
|
fIcon(BRect(0, 0, MENUITEM_ICON_SIZE - 1, MENUITEM_ICON_SIZE - 1), B_CMAP8),
|
|
fCookie(cookie)
|
|
{
|
|
fIcon.SetBits(icon, MENUITEM_ICON_SIZE * MENUITEM_ICON_SIZE, 0, B_CMAP8);
|
|
}
|
|
|
|
|
|
MethodMenuItem::~MethodMenuItem()
|
|
{
|
|
}
|
|
|
|
|
|
void
|
|
MethodMenuItem::SetName(const char *name)
|
|
{
|
|
SetLabel(name);
|
|
}
|
|
|
|
void
|
|
MethodMenuItem::SetIcon(const uchar *icon)
|
|
{
|
|
fIcon.SetBits(icon, MENUITEM_ICON_SIZE * MENUITEM_ICON_SIZE, 0, B_CMAP8);
|
|
}
|
|
|
|
|
|
void
|
|
MethodMenuItem::GetContentSize(float *width, float *height)
|
|
{
|
|
*width = be_plain_font->StringWidth(Label()) + MENUITEM_ICON_SIZE + 3;
|
|
|
|
font_height fheight;
|
|
be_plain_font->GetHeight(&fheight);
|
|
|
|
*height = fheight.ascent + fheight.descent + fheight.leading - 2;
|
|
if (*height < MENUITEM_ICON_SIZE)
|
|
*height = MENUITEM_ICON_SIZE;
|
|
}
|
|
|
|
|
|
void
|
|
MethodMenuItem::DrawContent()
|
|
{
|
|
BMenu *menu = Menu();
|
|
BPoint contLoc = ContentLocation();
|
|
|
|
menu->SetDrawingMode(B_OP_OVER);
|
|
menu->MovePenTo(contLoc);
|
|
menu->DrawBitmapAsync(&fIcon);
|
|
menu->SetDrawingMode(B_OP_COPY);
|
|
menu->MovePenBy(MENUITEM_ICON_SIZE + 3, 2);
|
|
BMenuItem::DrawContent();
|
|
}
|
|
|