1d11ec082SAxel Dörfler /* 2d11ec082SAxel Dörfler ** Copyright 2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved. 3d11ec082SAxel Dörfler ** Distributed under the terms of the OpenBeOS License. 4d11ec082SAxel Dörfler */ 5d11ec082SAxel Dörfler 6d11ec082SAxel Dörfler 7d11ec082SAxel Dörfler #include "AttributeWindow.h" 8d11ec082SAxel Dörfler #include "ProbeView.h" 9d11ec082SAxel Dörfler 10d11ec082SAxel Dörfler #include <MenuBar.h> 11d11ec082SAxel Dörfler #include <MenuItem.h> 12d11ec082SAxel Dörfler 13d11ec082SAxel Dörfler #include <stdio.h> 14d11ec082SAxel Dörfler 15d11ec082SAxel Dörfler 16*7fff3ed0SAxel Dörfler AttributeWindow::AttributeWindow(BRect rect, entry_ref *ref, const char *attribute, 17*7fff3ed0SAxel Dörfler const BMessage *settings) 18d11ec082SAxel Dörfler : ProbeWindow(rect, ref), 19d11ec082SAxel Dörfler fAttribute(strdup(attribute)) 20d11ec082SAxel Dörfler { 21d11ec082SAxel Dörfler char buffer[256]; 22d11ec082SAxel Dörfler snprintf(buffer, sizeof(buffer), "%s: %s", ref->name, attribute); 23d11ec082SAxel Dörfler SetTitle(buffer); 24d11ec082SAxel Dörfler 25d11ec082SAxel Dörfler // add the menu 26d11ec082SAxel Dörfler 27d11ec082SAxel Dörfler BMenuBar *menuBar = new BMenuBar(BRect(0, 0, 0, 0), NULL); 28d11ec082SAxel Dörfler AddChild(menuBar); 29d11ec082SAxel Dörfler 30d11ec082SAxel Dörfler BMenu *menu = new BMenu("Attribute"); 31d11ec082SAxel Dörfler 32d11ec082SAxel Dörfler // the ProbeView file menu items will be inserted here 33d11ec082SAxel Dörfler menu->AddSeparatorItem(); 34d11ec082SAxel Dörfler 35d11ec082SAxel Dörfler menu->AddItem(new BMenuItem("Close", new BMessage(B_CLOSE_REQUESTED), 'W', B_COMMAND_KEY)); 36d11ec082SAxel Dörfler menu->SetTargetForItems(this); 37d11ec082SAxel Dörfler menuBar->AddItem(menu); 38d11ec082SAxel Dörfler 39d11ec082SAxel Dörfler // add our interface widgets 40d11ec082SAxel Dörfler 41d11ec082SAxel Dörfler BRect rect = Bounds(); 42d11ec082SAxel Dörfler rect.top = menuBar->Bounds().Height() + 1; 43*7fff3ed0SAxel Dörfler ProbeView *probeView = new ProbeView(rect, ref, attribute, settings); 44d11ec082SAxel Dörfler probeView->AddFileMenuItems(menu, 0); 45d11ec082SAxel Dörfler AddChild(probeView); 46d11ec082SAxel Dörfler 47d11ec082SAxel Dörfler probeView->UpdateSizeLimits(); 48d11ec082SAxel Dörfler } 49d11ec082SAxel Dörfler 50d11ec082SAxel Dörfler 51d11ec082SAxel Dörfler AttributeWindow::~AttributeWindow() 52d11ec082SAxel Dörfler { 53d11ec082SAxel Dörfler free(fAttribute); 54d11ec082SAxel Dörfler } 55d11ec082SAxel Dörfler 56d11ec082SAxel Dörfler 57d11ec082SAxel Dörfler bool 58d11ec082SAxel Dörfler AttributeWindow::Contains(const entry_ref &ref, const char *attribute) 59d11ec082SAxel Dörfler { 60d11ec082SAxel Dörfler return ref == Ref() && attribute != NULL && !strcmp(attribute, fAttribute); 61d11ec082SAxel Dörfler } 62d11ec082SAxel Dörfler 63