MediaConverter: Style fixes
This commit is contained in:
@@ -74,7 +74,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
FileFormatMenuItem::FileFormatMenuItem(media_file_format *format)
|
FileFormatMenuItem::FileFormatMenuItem(media_file_format* format)
|
||||||
:
|
:
|
||||||
BMenuItem(format->pretty_name, new BMessage(FORMAT_SELECT_MESSAGE))
|
BMenuItem(format->pretty_name, new BMessage(FORMAT_SELECT_MESSAGE))
|
||||||
{
|
{
|
||||||
@@ -91,17 +91,17 @@ FileFormatMenuItem::~FileFormatMenuItem()
|
|||||||
|
|
||||||
|
|
||||||
class CodecMenuItem : public BMenuItem {
|
class CodecMenuItem : public BMenuItem {
|
||||||
public:
|
public:
|
||||||
CodecMenuItem(media_codec_info *ci, uint32 msg_type);
|
CodecMenuItem(media_codec_info* ci, uint32 message_type);
|
||||||
virtual ~CodecMenuItem();
|
virtual ~CodecMenuItem();
|
||||||
|
|
||||||
media_codec_info fCodecInfo;
|
media_codec_info fCodecInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
CodecMenuItem::CodecMenuItem(media_codec_info *ci, uint32 msg_type)
|
CodecMenuItem::CodecMenuItem(media_codec_info* ci, uint32 message_type)
|
||||||
:
|
:
|
||||||
BMenuItem(ci->pretty_name, new BMessage(msg_type))
|
BMenuItem(ci->pretty_name, new BMessage(message_type))
|
||||||
{
|
{
|
||||||
memcpy(&fCodecInfo, ci, sizeof(fCodecInfo));
|
memcpy(&fCodecInfo, ci, sizeof(fCodecInfo));
|
||||||
}
|
}
|
||||||
@@ -141,9 +141,10 @@ OutputBox::OutputBox(border_style border, BView* child)
|
|||||||
|
|
||||||
MediaConverterWindow::MediaConverterWindow(BRect frame)
|
MediaConverterWindow::MediaConverterWindow(BRect frame)
|
||||||
:
|
:
|
||||||
BWindow(frame, B_TRANSLATE_SYSTEM_NAME("MediaConverter"), B_TITLED_WINDOW_LOOK,
|
BWindow(frame, B_TRANSLATE_SYSTEM_NAME("MediaConverter"),
|
||||||
B_NORMAL_WINDOW_FEEL, B_NOT_ZOOMABLE | B_NOT_V_RESIZABLE
|
B_TITLED_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, B_NOT_ZOOMABLE
|
||||||
| B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS),
|
| B_NOT_V_RESIZABLE | B_ASYNCHRONOUS_CONTROLS
|
||||||
|
| B_AUTO_UPDATE_SIZE_LIMITS),
|
||||||
fVideoQuality(75),
|
fVideoQuality(75),
|
||||||
fAudioQuality(75),
|
fAudioQuality(75),
|
||||||
fSaveFilePanel(NULL),
|
fSaveFilePanel(NULL),
|
||||||
@@ -283,8 +284,7 @@ MediaConverterWindow::MediaConverterWindow(BRect frame)
|
|||||||
.Add(BSpaceLayoutItem::CreateGlue(), 1, 0)
|
.Add(BSpaceLayoutItem::CreateGlue(), 1, 0)
|
||||||
.Add(fPreviewButton, 2, 0)
|
.Add(fPreviewButton, 2, 0)
|
||||||
.Add(fConvertButton, 3, 0)
|
.Add(fConvertButton, 3, 0)
|
||||||
.End()
|
.End();
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -299,14 +299,14 @@ MediaConverterWindow::~MediaConverterWindow()
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MediaConverterWindow::MessageReceived(BMessage* msg)
|
MediaConverterWindow::MessageReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
entry_ref inRef;
|
entry_ref inRef;
|
||||||
|
|
||||||
char buffer[40];
|
char buffer[40];
|
||||||
BEntry inEntry;
|
BEntry inEntry;
|
||||||
|
|
||||||
switch (msg->what) {
|
switch (message->what) {
|
||||||
#if B_BEOS_VERSION <= B_BEOS_VERSION_6
|
#if B_BEOS_VERSION <= B_BEOS_VERSION_6
|
||||||
case B_LANGUAGE_CHANGED:
|
case B_LANGUAGE_CHANGED:
|
||||||
LanguageChanged();
|
LanguageChanged();
|
||||||
@@ -320,11 +320,11 @@ MediaConverterWindow::MessageReceived(BMessage* msg)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case B_SIMPLE_DATA:
|
case B_SIMPLE_DATA:
|
||||||
if (msg->WasDropped()) {
|
if (message->WasDropped()) {
|
||||||
DetachCurrentMessage();
|
DetachCurrentMessage();
|
||||||
msg->what = B_REFS_RECEIVED;
|
message->what = B_REFS_RECEIVED;
|
||||||
BMessenger(be_app).SendMessage(msg);
|
BMessenger(be_app).SendMessage(message);
|
||||||
delete msg;
|
delete message;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -367,10 +367,10 @@ MediaConverterWindow::MessageReceived(BMessage* msg)
|
|||||||
if (fSaveFilePanel == NULL) {
|
if (fSaveFilePanel == NULL) {
|
||||||
BButton* selectThisDir;
|
BButton* selectThisDir;
|
||||||
|
|
||||||
BMessage message(FOLDER_SELECT_MESSAGE);
|
BMessage folderSelect(FOLDER_SELECT_MESSAGE);
|
||||||
fSaveFilePanel = new BFilePanel(B_OPEN_PANEL, NULL, NULL,
|
fSaveFilePanel = new BFilePanel(B_OPEN_PANEL, NULL, NULL,
|
||||||
B_DIRECTORY_NODE, true, &message, NULL, false, true);
|
B_DIRECTORY_NODE, true, &folderSelect, NULL, false, true);
|
||||||
fSaveFilePanel->SetButtonLabel(B_DEFAULT_BUTTON,
|
fSaveFilePanel->SetButtonLabel(B_DEFAULT_BUTTON,
|
||||||
B_TRANSLATE("Select"));
|
B_TRANSLATE("Select"));
|
||||||
fSaveFilePanel->SetTarget(this);
|
fSaveFilePanel->SetTarget(this);
|
||||||
|
|
||||||
@@ -382,8 +382,8 @@ MediaConverterWindow::MessageReceived(BMessage* msg)
|
|||||||
"cancel button")->Frame();
|
"cancel button")->Frame();
|
||||||
buttonRect.right = buttonRect.left - 20;
|
buttonRect.right = buttonRect.left - 20;
|
||||||
buttonRect.left = buttonRect.right - 130;
|
buttonRect.left = buttonRect.right - 130;
|
||||||
selectThisDir = new BButton(buttonRect, NULL,
|
selectThisDir = new BButton(buttonRect, NULL,
|
||||||
B_TRANSLATE("Select this folder"),
|
B_TRANSLATE("Select this folder"),
|
||||||
new BMessage(SELECT_THIS_DIR_MESSAGE),
|
new BMessage(SELECT_THIS_DIR_MESSAGE),
|
||||||
B_FOLLOW_BOTTOM | B_FOLLOW_RIGHT);
|
B_FOLLOW_BOTTOM | B_FOLLOW_RIGHT);
|
||||||
selectThisDir->SetTarget(this);
|
selectThisDir->SetTarget(this);
|
||||||
@@ -425,8 +425,8 @@ MediaConverterWindow::MessageReceived(BMessage* msg)
|
|||||||
case B_REFS_RECEIVED:
|
case B_REFS_RECEIVED:
|
||||||
// Media Files Seleced by Open Panel
|
// Media Files Seleced by Open Panel
|
||||||
DetachCurrentMessage();
|
DetachCurrentMessage();
|
||||||
msg->what = B_REFS_RECEIVED;
|
message->what = B_REFS_RECEIVED;
|
||||||
BMessenger(be_app).SendMessage(msg);
|
BMessenger(be_app).SendMessage(message);
|
||||||
// fall through
|
// fall through
|
||||||
|
|
||||||
case B_CANCEL:
|
case B_CANCEL:
|
||||||
@@ -485,8 +485,8 @@ MediaConverterWindow::MessageReceived(BMessage* msg)
|
|||||||
case VIDEO_QUALITY_CHANGED_MESSAGE:
|
case VIDEO_QUALITY_CHANGED_MESSAGE:
|
||||||
{
|
{
|
||||||
int32 value;
|
int32 value;
|
||||||
msg->FindInt32("be:value", &value);
|
message->FindInt32("be:value", &value);
|
||||||
snprintf(buffer, sizeof(buffer),
|
snprintf(buffer, sizeof(buffer),
|
||||||
B_TRANSLATE("Video quality: %3d%%"), (int8)value);
|
B_TRANSLATE("Video quality: %3d%%"), (int8)value);
|
||||||
fVideoQualitySlider->SetLabel(buffer);
|
fVideoQualitySlider->SetLabel(buffer);
|
||||||
fVideoQuality = value;
|
fVideoQuality = value;
|
||||||
@@ -496,8 +496,8 @@ MediaConverterWindow::MessageReceived(BMessage* msg)
|
|||||||
case AUDIO_QUALITY_CHANGED_MESSAGE:
|
case AUDIO_QUALITY_CHANGED_MESSAGE:
|
||||||
{
|
{
|
||||||
int32 value;
|
int32 value;
|
||||||
msg->FindInt32("be:value", &value);
|
message->FindInt32("be:value", &value);
|
||||||
snprintf(buffer, sizeof(buffer),
|
snprintf(buffer, sizeof(buffer),
|
||||||
B_TRANSLATE("Audio quality: %3d%%"), (int8)value);
|
B_TRANSLATE("Audio quality: %3d%%"), (int8)value);
|
||||||
fAudioQualitySlider->SetLabel(buffer);
|
fAudioQualitySlider->SetLabel(buffer);
|
||||||
fAudioQuality = value;
|
fAudioQuality = value;
|
||||||
@@ -505,7 +505,7 @@ MediaConverterWindow::MessageReceived(BMessage* msg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BWindow::MessageReceived(msg);
|
BWindow::MessageReceived(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -521,6 +521,7 @@ MediaConverterWindow::QuitRequested()
|
|||||||
SetStatusMessage(B_TRANSLATE("Cancelling"));
|
SetStatusMessage(B_TRANSLATE("Cancelling"));
|
||||||
BMessenger(be_app).SendMessage(CANCEL_CONVERSION_MESSAGE);
|
BMessenger(be_app).SendMessage(CANCEL_CONVERSION_MESSAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -546,6 +547,7 @@ MediaConverterWindow::BuildAudioVideoMenus()
|
|||||||
{
|
{
|
||||||
BMenu* menu = fAudioMenu->Menu();
|
BMenu* menu = fAudioMenu->Menu();
|
||||||
BMenuItem* item;
|
BMenuItem* item;
|
||||||
|
|
||||||
// clear out old audio codec menu items
|
// clear out old audio codec menu items
|
||||||
while ((item = menu->RemoveItem((int32)0)) != NULL)
|
while ((item = menu->RemoveItem((int32)0)) != NULL)
|
||||||
delete item;
|
delete item;
|
||||||
@@ -567,7 +569,7 @@ MediaConverterWindow::BuildAudioVideoMenus()
|
|||||||
format.type = B_MEDIA_RAW_AUDIO;
|
format.type = B_MEDIA_RAW_AUDIO;
|
||||||
format.u.raw_audio = media_raw_audio_format::wildcard;
|
format.u.raw_audio = media_raw_audio_format::wildcard;
|
||||||
while (get_next_encoder(&cookie, mf_format, &format, &outfmt, &codec_info)
|
while (get_next_encoder(&cookie, mf_format, &format, &outfmt, &codec_info)
|
||||||
== B_OK) {
|
== B_OK) {
|
||||||
if (separator) {
|
if (separator) {
|
||||||
menu->AddItem(new BMenuItem(
|
menu->AddItem(new BMenuItem(
|
||||||
B_TRANSLATE_CONTEXT("No audio", "Audio codecs list"),
|
B_TRANSLATE_CONTEXT("No audio", "Audio codecs list"),
|
||||||
@@ -591,11 +593,10 @@ MediaConverterWindow::BuildAudioVideoMenus()
|
|||||||
fAudioMenu->SetEnabled(fEnabled);
|
fAudioMenu->SetEnabled(fEnabled);
|
||||||
fAudioQualitySlider->SetEnabled(fEnabled);
|
fAudioQualitySlider->SetEnabled(fEnabled);
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
((BInvoker *)item)->Invoke();
|
((BInvoker*)item)->Invoke();
|
||||||
} else {
|
} else {
|
||||||
item = new BMenuItem(
|
item = new BMenuItem(
|
||||||
B_TRANSLATE_CONTEXT("None available", "Audio codecs"),
|
B_TRANSLATE_CONTEXT("None available", "Audio codecs"), NULL);
|
||||||
NULL);
|
|
||||||
menu->AddItem(item);
|
menu->AddItem(item);
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
fAudioMenu->SetEnabled(false);
|
fAudioMenu->SetEnabled(false);
|
||||||
@@ -623,7 +624,8 @@ MediaConverterWindow::BuildAudioVideoMenus()
|
|||||||
|
|
||||||
// add available video encoders to menu
|
// add available video encoders to menu
|
||||||
cookie = 0;
|
cookie = 0;
|
||||||
while (get_next_encoder(&cookie, mf_format, &format, &outfmt, &codec_info) == B_OK) {
|
while (get_next_encoder(&cookie, mf_format, &format, &outfmt, &codec_info)
|
||||||
|
== B_OK) {
|
||||||
if (separator) {
|
if (separator) {
|
||||||
menu->AddItem(new BMenuItem(
|
menu->AddItem(new BMenuItem(
|
||||||
B_TRANSLATE_CONTEXT("No video", "Video codecs list"),
|
B_TRANSLATE_CONTEXT("No video", "Video codecs list"),
|
||||||
@@ -642,11 +644,10 @@ MediaConverterWindow::BuildAudioVideoMenus()
|
|||||||
fVideoMenu->SetEnabled(fEnabled);
|
fVideoMenu->SetEnabled(fEnabled);
|
||||||
fVideoQualitySlider->SetEnabled(fEnabled);
|
fVideoQualitySlider->SetEnabled(fEnabled);
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
((BInvoker *)item)->Invoke();
|
((BInvoker*)item)->Invoke();
|
||||||
} else {
|
} else {
|
||||||
item = new BMenuItem(
|
item = new BMenuItem(
|
||||||
B_TRANSLATE_CONTEXT("None available", "Video codecs"),
|
B_TRANSLATE_CONTEXT("None available", "Video codecs"), NULL);
|
||||||
NULL);
|
|
||||||
menu->AddItem(item);
|
menu->AddItem(item);
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
fVideoMenu->SetEnabled(false);
|
fVideoMenu->SetEnabled(false);
|
||||||
@@ -662,40 +663,37 @@ MediaConverterWindow::GetSelectedFormatInfo(media_file_format** format,
|
|||||||
*video = NULL;
|
*video = NULL;
|
||||||
*format = NULL;
|
*format = NULL;
|
||||||
|
|
||||||
FileFormatMenuItem *formatItem =
|
FileFormatMenuItem* formatItem =
|
||||||
dynamic_cast<FileFormatMenuItem *>(fFormatMenu->Menu()->FindMarked());
|
dynamic_cast<FileFormatMenuItem*>(fFormatMenu->Menu()->FindMarked());
|
||||||
if (formatItem != NULL) {
|
if (formatItem != NULL)
|
||||||
*format = &(formatItem->fFileFormat);
|
*format = &(formatItem->fFileFormat);
|
||||||
}
|
|
||||||
|
|
||||||
*audio = *video = NULL;
|
*audio = *video = NULL;
|
||||||
CodecMenuItem *codecItem =
|
CodecMenuItem* codecItem =
|
||||||
dynamic_cast<CodecMenuItem *>(fAudioMenu->Menu()->FindMarked());
|
dynamic_cast<CodecMenuItem*>(fAudioMenu->Menu()->FindMarked());
|
||||||
if (codecItem != NULL) {
|
if (codecItem != NULL)
|
||||||
*audio = &(codecItem->fCodecInfo);
|
*audio = &(codecItem->fCodecInfo);
|
||||||
}
|
|
||||||
|
|
||||||
codecItem = dynamic_cast<CodecMenuItem *>(fVideoMenu->Menu()->FindMarked());
|
codecItem = dynamic_cast<CodecMenuItem*>(fVideoMenu->Menu()->FindMarked());
|
||||||
if (codecItem != NULL) {
|
if (codecItem != NULL)
|
||||||
*video = &(codecItem->fCodecInfo);
|
*video = &(codecItem->fCodecInfo);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MediaConverterWindow::BuildFormatMenu()
|
MediaConverterWindow::BuildFormatMenu()
|
||||||
{
|
{
|
||||||
BMenu *menu = fFormatMenu->Menu();
|
BMenu* menu = fFormatMenu->Menu();
|
||||||
BMenuItem *item;
|
BMenuItem* item;
|
||||||
|
|
||||||
// clear out old format menu items
|
// clear out old format menu items
|
||||||
while ((item = menu->RemoveItem((int32)0)) != NULL) {
|
while ((item = menu->RemoveItem((int32)0)) != NULL)
|
||||||
delete item;
|
delete item;
|
||||||
}
|
|
||||||
|
|
||||||
// add menu items for each file format
|
// add menu items for each file format
|
||||||
media_file_format mfi;
|
media_file_format mfi;
|
||||||
int32 cookie = 0;
|
int32 cookie = 0;
|
||||||
FileFormatMenuItem *ff_item;
|
FileFormatMenuItem* ff_item;
|
||||||
while (get_next_file_format(&cookie, &mfi) == B_OK) {
|
while (get_next_file_format(&cookie, &mfi) == B_OK) {
|
||||||
ff_item = new FileFormatMenuItem(&mfi);
|
ff_item = new FileFormatMenuItem(&mfi);
|
||||||
menu->AddItem(ff_item);
|
menu->AddItem(ff_item);
|
||||||
@@ -705,20 +703,20 @@ MediaConverterWindow::BuildFormatMenu()
|
|||||||
item = menu->ItemAt(0);
|
item = menu->ItemAt(0);
|
||||||
if (item != NULL) {
|
if (item != NULL) {
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
((BInvoker *)item)->Invoke();
|
((BInvoker*)item)->Invoke();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MediaConverterWindow::SetFileMessage(const char *message)
|
MediaConverterWindow::SetFileMessage(const char* message)
|
||||||
{
|
{
|
||||||
fFileStatus->SetText(message);
|
fFileStatus->SetText(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MediaConverterWindow::SetStatusMessage(const char *message)
|
MediaConverterWindow::SetStatusMessage(const char* message)
|
||||||
{
|
{
|
||||||
fStatus->SetText(message);
|
fStatus->SetText(message);
|
||||||
}
|
}
|
||||||
@@ -769,9 +767,8 @@ MediaConverterWindow::GetSourceFileAt(int32 index, BMediaFile** _file,
|
|||||||
*_file = item->fMediaFile;
|
*_file = item->fMediaFile;
|
||||||
*ref = item->fRef;
|
*ref = item->fRef;
|
||||||
return B_OK;
|
return B_OK;
|
||||||
} else {
|
} else
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -812,7 +809,7 @@ MediaConverterWindow::SetEnabled(bool enabled, bool convertEnabled)
|
|||||||
{
|
{
|
||||||
fConvertButton->SetEnabled(convertEnabled);
|
fConvertButton->SetEnabled(convertEnabled);
|
||||||
if (enabled == fEnabled)
|
if (enabled == fEnabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fFormatMenu->SetEnabled(enabled);
|
fFormatMenu->SetEnabled(enabled);
|
||||||
fAudioMenu->SetEnabled(enabled);
|
fAudioMenu->SetEnabled(enabled);
|
||||||
@@ -915,7 +912,7 @@ MediaConverterWindow::_UpdateLabels()
|
|||||||
snprintf(buffer, sizeof(buffer), B_TRANSLATE("Video quality: %3d%%"),
|
snprintf(buffer, sizeof(buffer), B_TRANSLATE("Video quality: %3d%%"),
|
||||||
(int8)fVideoQuality);
|
(int8)fVideoQuality);
|
||||||
fVideoQualitySlider->SetLabel(buffer);
|
fVideoQualitySlider->SetLabel(buffer);
|
||||||
fVideoQualitySlider->SetLimitLabels(B_TRANSLATE("Low"),
|
fVideoQualitySlider->SetLimitLabels(B_TRANSLATE("Low"),
|
||||||
B_TRANSLATE("High"));
|
B_TRANSLATE("High"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -963,11 +960,11 @@ MediaConverterWindow::_UpdateBBoxLayoutInsets(BBox* box)
|
|||||||
void
|
void
|
||||||
MediaConverterWindow::_DestroyMenu()
|
MediaConverterWindow::_DestroyMenu()
|
||||||
{
|
{
|
||||||
BMenu* Menu;
|
BMenu* menu;
|
||||||
|
|
||||||
while ((Menu = fMenuBar->SubmenuAt(0)) != NULL) {
|
while ((menu = fMenuBar->SubmenuAt(0)) != NULL) {
|
||||||
fMenuBar->RemoveItem(Menu);
|
fMenuBar->RemoveItem(menu);
|
||||||
delete Menu;
|
delete menu;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -975,16 +972,15 @@ MediaConverterWindow::_DestroyMenu()
|
|||||||
void
|
void
|
||||||
MediaConverterWindow::_CreateMenu()
|
MediaConverterWindow::_CreateMenu()
|
||||||
{
|
{
|
||||||
BMenuItem* item;
|
|
||||||
BMenu* menu;
|
BMenu* menu;
|
||||||
|
BMenuItem* item;
|
||||||
|
|
||||||
menu = new BMenu(B_TRANSLATE_CONTEXT("File", "Menu"));
|
menu = new BMenu(B_TRANSLATE_CONTEXT("File", "Menu"));
|
||||||
item = new BMenuItem(B_TRANSLATE_CONTEXT(
|
item = new BMenuItem(B_TRANSLATE_CONTEXT("Open" B_UTF8_ELLIPSIS, "Menu"),
|
||||||
"Open" B_UTF8_ELLIPSIS, "Menu"),
|
|
||||||
new BMessage(OPEN_FILE_MESSAGE), 'O');
|
new BMessage(OPEN_FILE_MESSAGE), 'O');
|
||||||
menu->AddItem(item);
|
menu->AddItem(item);
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
item = new BMenuItem(B_TRANSLATE_CONTEXT("Quit", "Menu"),
|
item = new BMenuItem(B_TRANSLATE_CONTEXT("Quit", "Menu"),
|
||||||
new BMessage(QUIT_MESSAGE), 'Q');
|
new BMessage(QUIT_MESSAGE), 'Q');
|
||||||
menu->AddItem(item);
|
menu->AddItem(item);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user