Some more work on the application type window: it now shows the correct
entries, and you can edit everything but icons and supported types. Saving is also possible now (but it won't ask yet if you close the window and has made some changes). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16674 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
539d69fc6b
commit
b57ef1e651
@ -11,6 +11,7 @@
|
|||||||
#include "StringView.h"
|
#include "StringView.h"
|
||||||
#include "TypeListWindow.h"
|
#include "TypeListWindow.h"
|
||||||
|
|
||||||
|
#include <AppFileInfo.h>
|
||||||
#include <Application.h>
|
#include <Application.h>
|
||||||
#include <Bitmap.h>
|
#include <Bitmap.h>
|
||||||
#include <Box.h>
|
#include <Box.h>
|
||||||
@ -25,12 +26,19 @@
|
|||||||
#include <NodeInfo.h>
|
#include <NodeInfo.h>
|
||||||
#include <PopUpMenu.h>
|
#include <PopUpMenu.h>
|
||||||
#include <RadioButton.h>
|
#include <RadioButton.h>
|
||||||
|
#include <Roster.h>
|
||||||
#include <ScrollView.h>
|
#include <ScrollView.h>
|
||||||
#include <TextControl.h>
|
#include <TextControl.h>
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
|
const uint32 kMsgSave = 'save';
|
||||||
|
const uint32 kMsgFlagsChanged = 'flgc';
|
||||||
|
|
||||||
const uint32 kMsgAddType = 'adtp';
|
const uint32 kMsgAddType = 'adtp';
|
||||||
const uint32 kMsgRemoveType = 'rmtp';
|
const uint32 kMsgRemoveType = 'rmtp';
|
||||||
|
|
||||||
@ -46,9 +54,11 @@ ApplicationTypeWindow::ApplicationTypeWindow(BPoint position, const BEntry& entr
|
|||||||
AddChild(menuBar);
|
AddChild(menuBar);
|
||||||
|
|
||||||
BMenu* menu = new BMenu("File");
|
BMenu* menu = new BMenu("File");
|
||||||
menu->AddItem(new BMenuItem("Save", NULL, 'S', B_COMMAND_KEY));
|
menu->AddItem(new BMenuItem("Save", new BMessage(kMsgSave), 'S', B_COMMAND_KEY));
|
||||||
menu->AddItem(new BMenuItem("Save Into Resource File" B_UTF8_ELLIPSIS,
|
BMenuItem* item;
|
||||||
|
menu->AddItem(item = new BMenuItem("Save Into Resource File" B_UTF8_ELLIPSIS,
|
||||||
NULL));
|
NULL));
|
||||||
|
item->SetEnabled(false);
|
||||||
|
|
||||||
menu->AddSeparatorItem();
|
menu->AddSeparatorItem();
|
||||||
menu->AddItem(new BMenuItem("Close", new BMessage(B_QUIT_REQUESTED),
|
menu->AddItem(new BMenuItem("Close", new BMessage(B_QUIT_REQUESTED),
|
||||||
@ -75,6 +85,7 @@ ApplicationTypeWindow::ApplicationTypeWindow(BPoint position, const BEntry& entr
|
|||||||
|
|
||||||
// filter out invalid characters that can't be part of a MIME type name
|
// filter out invalid characters that can't be part of a MIME type name
|
||||||
BTextView* textView = fSignatureControl->TextView();
|
BTextView* textView = fSignatureControl->TextView();
|
||||||
|
textView->SetMaxBytes(B_MIME_TYPE_LENGTH);
|
||||||
const char* disallowedCharacters = "/<>@,;:\"()[]?=";
|
const char* disallowedCharacters = "/<>@,;:\"()[]?=";
|
||||||
for (int32 i = 0; disallowedCharacters[i]; i++) {
|
for (int32 i = 0; disallowedCharacters[i]; i++) {
|
||||||
textView->DisallowChar(disallowedCharacters[i]);
|
textView->DisallowChar(disallowedCharacters[i]);
|
||||||
@ -97,7 +108,7 @@ ApplicationTypeWindow::ApplicationTypeWindow(BPoint position, const BEntry& entr
|
|||||||
topView->AddChild(box);
|
topView->AddChild(box);
|
||||||
|
|
||||||
fFlagsCheckBox = new BCheckBox(rect, "flags", "Application Flags",
|
fFlagsCheckBox = new BCheckBox(rect, "flags", "Application Flags",
|
||||||
NULL); //new BMessage(kMsgFlagChanged));
|
new BMessage(kMsgFlagsChanged));
|
||||||
fFlagsCheckBox->SetValue(B_CONTROL_ON);
|
fFlagsCheckBox->SetValue(B_CONTROL_ON);
|
||||||
fFlagsCheckBox->ResizeToPreferred();
|
fFlagsCheckBox->ResizeToPreferred();
|
||||||
box->SetLabel(fFlagsCheckBox);
|
box->SetLabel(fFlagsCheckBox);
|
||||||
@ -223,10 +234,8 @@ ApplicationTypeWindow::ApplicationTypeWindow(BPoint position, const BEntry& entr
|
|||||||
topView->AddChild(box);
|
topView->AddChild(box);
|
||||||
|
|
||||||
BMenuField* menuField;
|
BMenuField* menuField;
|
||||||
BPopUpMenu *popUpMenu;
|
|
||||||
BMenuItem* item;
|
|
||||||
#if 0
|
#if 0
|
||||||
popUpMenu = new BPopUpMenu("version info", true, true);
|
BPopUpMenu *popUpMenu = new BPopUpMenu("version info", true, true);
|
||||||
item = new BMenuItem("Version Info", NULL);
|
item = new BMenuItem("Version Info", NULL);
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
popUpMenu->AddItem(item);
|
popUpMenu->AddItem(item);
|
||||||
@ -247,38 +256,41 @@ ApplicationTypeWindow::ApplicationTypeWindow(BPoint position, const BEntry& entr
|
|||||||
fMajorVersionControl->GetPreferredSize(&width, &height);
|
fMajorVersionControl->GetPreferredSize(&width, &height);
|
||||||
width = 12.0f + fMajorVersionControl->StringWidth("99");
|
width = 12.0f + fMajorVersionControl->StringWidth("99");
|
||||||
fMajorVersionControl->ResizeTo(fMajorVersionControl->Divider() + width, height);
|
fMajorVersionControl->ResizeTo(fMajorVersionControl->Divider() + width, height);
|
||||||
|
_MakeNumberTextControl(fMajorVersionControl);
|
||||||
box->AddChild(fMajorVersionControl);
|
box->AddChild(fMajorVersionControl);
|
||||||
|
|
||||||
rect.left = fMajorVersionControl->Frame().right;
|
rect.left = fMajorVersionControl->Frame().right + 1.0f;
|
||||||
fMiddleVersionControl = new BTextControl(rect, "middle", ".", NULL,
|
fMiddleVersionControl = new BTextControl(rect, "middle", ".", NULL,
|
||||||
NULL);
|
NULL);
|
||||||
fMiddleVersionControl->SetDivider(fMiddleVersionControl->StringWidth(
|
fMiddleVersionControl->SetDivider(fMiddleVersionControl->StringWidth(
|
||||||
fMiddleVersionControl->Label()) + 4.0f);
|
fMiddleVersionControl->Label()) + 4.0f);
|
||||||
fMiddleVersionControl->ResizeTo(fMiddleVersionControl->Divider() + width, height);
|
fMiddleVersionControl->ResizeTo(fMiddleVersionControl->Divider() + width, height);
|
||||||
|
_MakeNumberTextControl(fMiddleVersionControl);
|
||||||
box->AddChild(fMiddleVersionControl);
|
box->AddChild(fMiddleVersionControl);
|
||||||
|
|
||||||
rect.left = fMiddleVersionControl->Frame().right;
|
rect.left = fMiddleVersionControl->Frame().right + 1.0f;
|
||||||
fMinorVersionControl = new BTextControl(rect, "middle", ".", NULL,
|
fMinorVersionControl = new BTextControl(rect, "middle", ".", NULL,
|
||||||
NULL);
|
NULL);
|
||||||
fMinorVersionControl->SetDivider(fMinorVersionControl->StringWidth(
|
fMinorVersionControl->SetDivider(fMinorVersionControl->StringWidth(
|
||||||
fMinorVersionControl->Label()) + 4.0f);
|
fMinorVersionControl->Label()) + 4.0f);
|
||||||
fMinorVersionControl->ResizeTo(fMinorVersionControl->Divider() + width, height);
|
fMinorVersionControl->ResizeTo(fMinorVersionControl->Divider() + width, height);
|
||||||
|
_MakeNumberTextControl(fMinorVersionControl);
|
||||||
box->AddChild(fMinorVersionControl);
|
box->AddChild(fMinorVersionControl);
|
||||||
|
|
||||||
popUpMenu = new BPopUpMenu("variety", true, true);
|
fVarietyMenu = new BPopUpMenu("variety", true, true);
|
||||||
popUpMenu->AddItem(new BMenuItem("Development", NULL));
|
fVarietyMenu->AddItem(new BMenuItem("Development", NULL));
|
||||||
popUpMenu->AddItem(new BMenuItem("Alpha", NULL));
|
fVarietyMenu->AddItem(new BMenuItem("Alpha", NULL));
|
||||||
popUpMenu->AddItem(new BMenuItem("Beta", NULL));
|
fVarietyMenu->AddItem(new BMenuItem("Beta", NULL));
|
||||||
popUpMenu->AddItem(new BMenuItem("Gamma", NULL));
|
fVarietyMenu->AddItem(new BMenuItem("Gamma", NULL));
|
||||||
popUpMenu->AddItem(item = new BMenuItem("Golden Master", NULL));
|
fVarietyMenu->AddItem(item = new BMenuItem("Golden Master", NULL));
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
popUpMenu->AddItem(new BMenuItem("Final", NULL));
|
fVarietyMenu->AddItem(new BMenuItem("Final", NULL));
|
||||||
|
|
||||||
rect.top--;
|
rect.top--;
|
||||||
// BMenuField oddity
|
// BMenuField oddity
|
||||||
rect.left = fMinorVersionControl->Frame().right + 6.0f;
|
rect.left = fMinorVersionControl->Frame().right + 6.0f;
|
||||||
menuField = new BMenuField(rect,
|
menuField = new BMenuField(rect,
|
||||||
"variety", NULL, popUpMenu, true);
|
"variety", NULL, fVarietyMenu, true);
|
||||||
menuField->ResizeToPreferred();
|
menuField->ResizeToPreferred();
|
||||||
box->AddChild(menuField);
|
box->AddChild(menuField);
|
||||||
|
|
||||||
@ -301,6 +313,7 @@ ApplicationTypeWindow::ApplicationTypeWindow(BPoint position, const BEntry& entr
|
|||||||
fShortDescriptionControl->SetDivider(labelWidth);
|
fShortDescriptionControl->SetDivider(labelWidth);
|
||||||
fShortDescriptionControl->GetPreferredSize(&width, &height);
|
fShortDescriptionControl->GetPreferredSize(&width, &height);
|
||||||
fShortDescriptionControl->ResizeTo(rect.Width(), height);
|
fShortDescriptionControl->ResizeTo(rect.Width(), height);
|
||||||
|
fShortDescriptionControl->TextView()->SetMaxBytes(sizeof(version_info::short_info));
|
||||||
box->AddChild(fShortDescriptionControl);
|
box->AddChild(fShortDescriptionControl);
|
||||||
|
|
||||||
rect.OffsetBy(0.0f, fShortDescriptionControl->Bounds().Height() + 5.0f);
|
rect.OffsetBy(0.0f, fShortDescriptionControl->Bounds().Height() + 5.0f);
|
||||||
@ -315,6 +328,8 @@ ApplicationTypeWindow::ApplicationTypeWindow(BPoint position, const BEntry& entr
|
|||||||
rect.bottom = rect.top + fShortDescriptionControl->Bounds().Height() * 3.0f - 1.0f;
|
rect.bottom = rect.top + fShortDescriptionControl->Bounds().Height() * 3.0f - 1.0f;
|
||||||
fLongDescriptionView = new BTextView(rect, "long desc",
|
fLongDescriptionView = new BTextView(rect, "long desc",
|
||||||
rect.OffsetToCopy(B_ORIGIN), B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS);
|
rect.OffsetToCopy(B_ORIGIN), B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS);
|
||||||
|
fLongDescriptionView->SetMaxBytes(sizeof(version_info::long_info));
|
||||||
|
// box->AddChild(fLongDescriptionView);
|
||||||
|
|
||||||
scrollView = new BScrollView("desc scrollview", fLongDescriptionView,
|
scrollView = new BScrollView("desc scrollview", fLongDescriptionView,
|
||||||
B_FOLLOW_ALL, B_FRAME_EVENTS | B_WILL_DRAW, false, false);
|
B_FOLLOW_ALL, B_FRAME_EVENTS | B_WILL_DRAW, false, false);
|
||||||
@ -364,6 +379,197 @@ ApplicationTypeWindow::_SetTo(const BEntry& entry)
|
|||||||
{
|
{
|
||||||
SetTitle(_Title(entry).String());
|
SetTitle(_Title(entry).String());
|
||||||
fEntry = entry;
|
fEntry = entry;
|
||||||
|
|
||||||
|
// Retrieve Info
|
||||||
|
|
||||||
|
BFile file(&entry, B_READ_ONLY);
|
||||||
|
if (file.InitCheck() != B_OK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
BAppFileInfo info(&file);
|
||||||
|
if (info.InitCheck() != B_OK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
char signature[B_MIME_TYPE_LENGTH];
|
||||||
|
if (info.GetSignature(signature) != B_OK)
|
||||||
|
signature[0] = '\0';
|
||||||
|
|
||||||
|
bool gotFlags = false;
|
||||||
|
uint32 flags;
|
||||||
|
if (info.GetAppFlags(&flags) == B_OK)
|
||||||
|
gotFlags = true;
|
||||||
|
else
|
||||||
|
flags = B_MULTIPLE_LAUNCH;
|
||||||
|
|
||||||
|
BMessage supportedTypes;
|
||||||
|
info.GetSupportedTypes(&supportedTypes);
|
||||||
|
|
||||||
|
version_info versionInfo;
|
||||||
|
if (info.GetVersionInfo(&versionInfo, B_APP_VERSION_KIND) != B_OK)
|
||||||
|
memset(&versionInfo, 0, sizeof(version_info));
|
||||||
|
|
||||||
|
// Set Controls
|
||||||
|
|
||||||
|
fSignatureControl->SetText(signature);
|
||||||
|
|
||||||
|
// flags
|
||||||
|
|
||||||
|
switch (flags & (B_SINGLE_LAUNCH | B_MULTIPLE_LAUNCH | B_EXCLUSIVE_LAUNCH)) {
|
||||||
|
case B_SINGLE_LAUNCH:
|
||||||
|
fSingleLaunchButton->SetValue(B_CONTROL_ON);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_EXCLUSIVE_LAUNCH:
|
||||||
|
fExclusiveLaunchButton->SetValue(B_CONTROL_ON);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case B_MULTIPLE_LAUNCH:
|
||||||
|
default:
|
||||||
|
fMultipleLaunchButton->SetValue(B_CONTROL_ON);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
fArgsOnlyCheckBox->SetValue((flags & B_ARGV_ONLY) != 0);
|
||||||
|
fBackgroundAppCheckBox->SetValue((flags & B_BACKGROUND_APP) != 0);
|
||||||
|
fFlagsCheckBox->SetValue(gotFlags);
|
||||||
|
|
||||||
|
_UpdateAppFlagsEnabled();
|
||||||
|
|
||||||
|
// icon
|
||||||
|
|
||||||
|
entry_ref ref;
|
||||||
|
if (entry.GetRef(&ref) == B_OK)
|
||||||
|
fIconView->SetTo(&ref);
|
||||||
|
|
||||||
|
// supported types
|
||||||
|
|
||||||
|
for (int32 i = fTypeListView->CountItems(); i-- > 0;) {
|
||||||
|
BListItem* item = fTypeListView->RemoveItem(i);
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* type;
|
||||||
|
for (int32 i = 0; supportedTypes.FindString("types", i, &type) == B_OK; i++) {
|
||||||
|
fTypeListView->AddItem(new BStringItem(type));
|
||||||
|
}
|
||||||
|
fRemoveTypeButton->SetEnabled(false);
|
||||||
|
|
||||||
|
// version info
|
||||||
|
|
||||||
|
char text[256];
|
||||||
|
snprintf(text, sizeof(text), "%ld", versionInfo.major);
|
||||||
|
fMajorVersionControl->SetText(text);
|
||||||
|
snprintf(text, sizeof(text), "%ld", versionInfo.middle);
|
||||||
|
fMiddleVersionControl->SetText(text);
|
||||||
|
snprintf(text, sizeof(text), "%ld", versionInfo.minor);
|
||||||
|
fMinorVersionControl->SetText(text);
|
||||||
|
|
||||||
|
if (versionInfo.variety >= (uint32)fVarietyMenu->CountItems())
|
||||||
|
versionInfo.variety = 0;
|
||||||
|
BMenuItem* item = fVarietyMenu->ItemAt(versionInfo.variety);
|
||||||
|
if (item != NULL)
|
||||||
|
item->SetMarked(true);
|
||||||
|
|
||||||
|
snprintf(text, sizeof(text), "%ld", versionInfo.internal);
|
||||||
|
fInternalVersionControl->SetText(text);
|
||||||
|
|
||||||
|
fShortDescriptionControl->SetText(versionInfo.short_info);
|
||||||
|
fLongDescriptionView->SetText(versionInfo.long_info);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationTypeWindow::_UpdateAppFlagsEnabled()
|
||||||
|
{
|
||||||
|
bool enabled = fFlagsCheckBox->Value() != B_CONTROL_OFF;
|
||||||
|
|
||||||
|
fSingleLaunchButton->SetEnabled(enabled);
|
||||||
|
fMultipleLaunchButton->SetEnabled(enabled);
|
||||||
|
fExclusiveLaunchButton->SetEnabled(enabled);
|
||||||
|
fArgsOnlyCheckBox->SetEnabled(enabled);
|
||||||
|
fBackgroundAppCheckBox->SetEnabled(enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationTypeWindow::_MakeNumberTextControl(BTextControl* control)
|
||||||
|
{
|
||||||
|
// filter out invalid characters that can't be part of a MIME type name
|
||||||
|
BTextView* textView = control->TextView();
|
||||||
|
textView->SetMaxBytes(10);
|
||||||
|
|
||||||
|
for (int32 i = 0; i < 256; i++) {
|
||||||
|
if (!isdigit(i))
|
||||||
|
textView->DisallowChar(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationTypeWindow::_Save()
|
||||||
|
{
|
||||||
|
BFile file;
|
||||||
|
status_t status = file.SetTo(&fEntry, B_READ_WRITE);
|
||||||
|
if (status != B_OK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
BAppFileInfo info(&file);
|
||||||
|
status = info.InitCheck();
|
||||||
|
if (status != B_OK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Retrieve Info
|
||||||
|
|
||||||
|
uint32 flags = 0;
|
||||||
|
if (fFlagsCheckBox->Value() != B_CONTROL_OFF) {
|
||||||
|
if (fSingleLaunchButton->Value() != B_CONTROL_OFF)
|
||||||
|
flags |= B_SINGLE_LAUNCH;
|
||||||
|
else if (fMultipleLaunchButton->Value() != B_CONTROL_OFF)
|
||||||
|
flags |= B_MULTIPLE_LAUNCH;
|
||||||
|
else if (fExclusiveLaunchButton->Value() != B_CONTROL_OFF)
|
||||||
|
flags |= B_EXCLUSIVE_LAUNCH;
|
||||||
|
|
||||||
|
if (fArgsOnlyCheckBox->Value() != B_CONTROL_OFF)
|
||||||
|
flags |= B_ARGV_ONLY;
|
||||||
|
if (fBackgroundAppCheckBox->Value() != B_CONTROL_OFF)
|
||||||
|
flags |= B_BACKGROUND_APP;
|
||||||
|
}
|
||||||
|
|
||||||
|
BMessage supportedTypes;
|
||||||
|
// TODO!
|
||||||
|
|
||||||
|
version_info versionInfo;
|
||||||
|
versionInfo.major = atol(fMajorVersionControl->Text());
|
||||||
|
versionInfo.middle = atol(fMiddleVersionControl->Text());
|
||||||
|
versionInfo.minor = atol(fMinorVersionControl->Text());
|
||||||
|
versionInfo.variety = fVarietyMenu->IndexOf(fVarietyMenu->FindMarked());
|
||||||
|
versionInfo.internal = atol(fInternalVersionControl->Text());
|
||||||
|
strlcpy(versionInfo.short_info, fShortDescriptionControl->Text(),
|
||||||
|
sizeof(versionInfo.short_info));
|
||||||
|
strlcpy(versionInfo.long_info, fLongDescriptionView->Text(),
|
||||||
|
sizeof(versionInfo.long_info));
|
||||||
|
|
||||||
|
// Save
|
||||||
|
|
||||||
|
status = info.SetSignature(fSignatureControl->Text());
|
||||||
|
if (status == B_OK)
|
||||||
|
status = info.SetAppFlags(flags);
|
||||||
|
if (status == B_OK)
|
||||||
|
status = info.SetVersionInfo(&versionInfo, B_APP_VERSION_KIND);
|
||||||
|
|
||||||
|
// TODO: icon & supported types
|
||||||
|
// if (status == B_OK)
|
||||||
|
// status = info.SetIcon(&icon);
|
||||||
|
// if (status == B_OK)
|
||||||
|
// status = info.SetSupportedTypes(&supportedTypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ApplicationTypeWindow::FrameResized(float width, float height)
|
||||||
|
{
|
||||||
|
// This works around a flaw of BTextView
|
||||||
|
fLongDescriptionView->SetTextRect(fLongDescriptionView->Bounds());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -371,6 +577,14 @@ void
|
|||||||
ApplicationTypeWindow::MessageReceived(BMessage* message)
|
ApplicationTypeWindow::MessageReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
switch (message->what) {
|
switch (message->what) {
|
||||||
|
case kMsgFlagsChanged:
|
||||||
|
_UpdateAppFlagsEnabled();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kMsgSave:
|
||||||
|
_Save();
|
||||||
|
break;
|
||||||
|
|
||||||
case B_SIMPLE_DATA:
|
case B_SIMPLE_DATA:
|
||||||
{
|
{
|
||||||
entry_ref ref;
|
entry_ref ref;
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
class BButton;
|
class BButton;
|
||||||
class BCheckBox;
|
class BCheckBox;
|
||||||
class BListView;
|
class BListView;
|
||||||
class BMenuField;
|
class BPopUpMenu;
|
||||||
class BRadioButton;
|
class BRadioButton;
|
||||||
class BTextControl;
|
class BTextControl;
|
||||||
class BTextView;
|
class BTextView;
|
||||||
@ -27,12 +27,16 @@ class ApplicationTypeWindow : public BWindow {
|
|||||||
ApplicationTypeWindow(BPoint position, const BEntry& entry);
|
ApplicationTypeWindow(BPoint position, const BEntry& entry);
|
||||||
virtual ~ApplicationTypeWindow();
|
virtual ~ApplicationTypeWindow();
|
||||||
|
|
||||||
|
virtual void FrameResized(float width, float height);
|
||||||
virtual void MessageReceived(BMessage* message);
|
virtual void MessageReceived(BMessage* message);
|
||||||
virtual bool QuitRequested();
|
virtual bool QuitRequested();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BString _Title(const BEntry& entry);
|
BString _Title(const BEntry& entry);
|
||||||
void _SetTo(const BEntry& entry);
|
void _SetTo(const BEntry& entry);
|
||||||
|
void _UpdateAppFlagsEnabled();
|
||||||
|
void _MakeNumberTextControl(BTextControl* control);
|
||||||
|
void _Save();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BEntry fEntry;
|
BEntry fEntry;
|
||||||
@ -55,6 +59,7 @@ class ApplicationTypeWindow : public BWindow {
|
|||||||
BTextControl* fMajorVersionControl;
|
BTextControl* fMajorVersionControl;
|
||||||
BTextControl* fMiddleVersionControl;
|
BTextControl* fMiddleVersionControl;
|
||||||
BTextControl* fMinorVersionControl;
|
BTextControl* fMinorVersionControl;
|
||||||
|
BPopUpMenu* fVarietyMenu;
|
||||||
BTextControl* fInternalVersionControl;
|
BTextControl* fInternalVersionControl;
|
||||||
BTextControl* fShortDescriptionControl;
|
BTextControl* fShortDescriptionControl;
|
||||||
BTextView* fLongDescriptionView;
|
BTextView* fLongDescriptionView;
|
||||||
|
@ -84,24 +84,27 @@ IconView::MouseDown(BPoint where)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
IconView::SetTo(entry_ref* file)
|
IconView::SetTo(entry_ref* ref)
|
||||||
{
|
{
|
||||||
delete fIcon;
|
delete fIcon;
|
||||||
fIcon = NULL;
|
fIcon = NULL;
|
||||||
|
|
||||||
BNode node(file);
|
if (ref != NULL) {
|
||||||
BNodeInfo info(&node);
|
BNode node(ref);
|
||||||
if (node.InitCheck() != B_OK
|
BNodeInfo info(&node);
|
||||||
|| info.InitCheck() != B_OK)
|
if (node.InitCheck() != B_OK
|
||||||
return;
|
|| info.InitCheck() != B_OK)
|
||||||
|
return;
|
||||||
|
|
||||||
BBitmap* icon = new BBitmap(BRect(0, 0, B_LARGE_ICON - 1, B_LARGE_ICON - 1), B_CMAP8);
|
BBitmap* icon = new BBitmap(BRect(0, 0, B_LARGE_ICON - 1, B_LARGE_ICON - 1), B_CMAP8);
|
||||||
if (info.GetIcon(icon, B_LARGE_ICON) != B_OK) {
|
if (info.GetIcon(icon, B_LARGE_ICON) != B_OK) {
|
||||||
delete icon;
|
delete icon;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fIcon = icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
fIcon = icon;
|
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user