1 /*
2 * Copyright (c) 2005-2010, Haiku, Inc.
3 * Distributed under the terms of the MIT license.
4 *
5 * Author:
6 * DarkWyrm <darkwyrm@gmail.com>
7 */
8 #include "InternalEditors.h"
9 #include "ResourceData.h"
10
11 #include <Message.h>
12 #include <Messenger.h>
13 #include <String.h>
14
15 #include <stdlib.h>
16
DoubleEditor(const BRect & frame,ResourceData * data,BHandler * owner)17 DoubleEditor::DoubleEditor(const BRect &frame, ResourceData *data,
18 BHandler *owner)
19 : Editor(frame, data, owner)
20 {
21 if (data->GetName())
22 SetTitle(data->GetName());
23
24 fView = new StringEditView(Bounds());
25 AddChild(fView);
26
27 fView->SetID(data->GetIDString());
28 fView->SetName(data->GetName());
29 fView->SetValue(data->GetData());
30 }
31
32
33 void
MessageReceived(BMessage * msg)34 DoubleEditor::MessageReceived(BMessage *msg)
35 {
36 if (msg->what == M_UPDATE_RESOURCE) {
37 // We have to have an ID, so if the squirrely developer didn't give us
38 // one, don't do anything
39 if (fView->GetID()) {
40 int32 newid = atol(fView->GetID());
41 GetData()->SetID(newid);
42 }
43
44 GetData()->SetName(fView->GetName());
45 GetData()->SetData(fView->GetValue(), strlen(fView->GetValue()));
46
47 BMessage updatemsg(M_UPDATE_RESOURCE);
48 updatemsg.AddPointer("item", GetData());
49 BMessenger msgr(GetOwner());
50 msgr.SendMessage(&updatemsg);
51 PostMessage(B_QUIT_REQUESTED);
52
53 } else {
54 Editor::MessageReceived(msg);
55 }
56 }
57
58