AsciiWindow::AsciiWindow(void) : DWindow(BRect(0.0f, 0.0f, kWindowWidth, kWindowHeight), B_TRANSLATE("ASCII table"), B_TITLED_WINDOW, B_AUTO_UPDATE_SIZE_LIMITS), fIsZoomed(false), fLastFrame(Frame()) { BListView* listView = new BListView("listView", B_MULTIPLE_SELECTION_LIST, B_WILL_DRAW); BScrollView* listScrollView = new BScrollView("scrollView", listView, 0, false, true, B_NO_BORDER); listView->SetFont(be_fixed_font); listView->AddItem(new BStringItem(B_TRANSLATE(" Dec Hex Oct Code Description"))); listView->AddItem(new BStringItem("")); for (int i = 0; i < 128; i++) { char* row; asprintf(&row, " %3d %2x %3o %3s %s", i, i, i, sAsciiTable[i].code, sAsciiTable[i].description.String()); listView->AddItem(new BStringItem(row)); free(row); } BLayoutBuilder::Group<>(this, B_VERTICAL) .Add(listScrollView) .SetInsets(-1) .End(); CenterOnScreen(); }
void ModulesView::PopulateScreenSaverList() { // Blackness is a built-in screen saver ScreenSaverItem* defaultItem = new ScreenSaverItem(B_TRANSLATE("Blackness"), ""); fScreenSaversListView->AddItem(defaultItem); // Iterate over add-on directories, and add their files to the list view directory_which which[] = { B_USER_NONPACKAGED_ADDONS_DIRECTORY, B_USER_ADDONS_DIRECTORY, B_SYSTEM_NONPACKAGED_ADDONS_DIRECTORY, B_SYSTEM_ADDONS_DIRECTORY, }; ScreenSaverItem* selectedItem = NULL; for (uint32 i = 0; i < sizeof(which) / sizeof(which[0]); i++) { BPath basePath; if (find_directory(which[i], &basePath) != B_OK) continue; else if (basePath.Append("Screen Savers", true) != B_OK) continue; BDirectory dir(basePath.Path()); BEntry entry; while (dir.GetNextEntry(&entry, true) == B_OK) { char name[B_FILE_NAME_LENGTH]; if (entry.GetName(name) != B_OK) continue; BPath path(basePath); if (path.Append(name) != B_OK) continue; ScreenSaverItem* item = new ScreenSaverItem(name, path.Path()); fScreenSaversListView->AddItem(item); if (selectedItem != NULL) continue; if (strcmp(fSettings.ModuleName(), item->Text()) == 0) selectedItem = item; } } fScreenSaversListView->SortItems(_CompareScreenSaverItems); if (selectedItem == NULL) selectedItem = defaultItem; fScreenSaversListView->Select(fScreenSaversListView->IndexOf(selectedItem)); fScreenSaversListView->ScrollToSelection(); }
void ModulesView::PopulateScreenSaverList() { fScreenSaversListView->DeselectAll(); while (ScreenSaverItem* item = (ScreenSaverItem*)fScreenSaversListView->RemoveItem((int32)0)) { delete item; } // Blackness is a built-in screen saver fScreenSaversListView->AddItem( new ScreenSaverItem(B_TRANSLATE("Blackness"), "")); // Iterate over add-on directories, and add their files to the list view directory_which which[] = { B_USER_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, B_SYSTEM_ADDONS_DIRECTORY, }; ScreenSaverItem* selectItem = NULL; for (uint32 i = 0; i < sizeof(which) / sizeof(which[0]); i++) { BPath basePath; find_directory(which[i], &basePath); basePath.Append("Screen Savers", true); BDirectory dir(basePath.Path()); BEntry entry; while (dir.GetNextEntry(&entry, true) == B_OK) { char name[B_FILE_NAME_LENGTH]; if (entry.GetName(name) != B_OK) continue; BPath path = basePath; path.Append(name); ScreenSaverItem* item = new ScreenSaverItem(name, path.Path()); fScreenSaversListView->AddItem(item); if (strcmp(fSettings.ModuleName(), item->Text()) != 0 || (strcmp(fSettings.ModuleName(), "") != 0 && strcmp(item->Text(), B_TRANSLATE("Blackness")) != 0)) { selectItem = item; } } } fScreenSaversListView->SortItems(_CompareScreenSaverItems); fScreenSaversListView->Select(fScreenSaversListView->IndexOf(selectItem)); fScreenSaversListView->ScrollToSelection(); }
HostInfoView::HostInfoView(BRect rect, const char *name, uint32 ipAddr) : BView(rect, "HostInfoView", B_FOLLOW_ALL, B_WILL_DRAW) { address = ipAddr; hostInfo.cpus = 0; thread_id infoThread = spawn_thread(getHostInfo, "Get Host Info", B_NORMAL_PRIORITY, this); resume_thread(infoThread); rgb_color gray = ui_color(B_PANEL_BACKGROUND_COLOR); SetViewColor(gray); BRect bmpRect(0.0, 0.0, 31.0, 31.0); icon = new BBitmap(bmpRect, B_CMAP8); BMimeType mime("application/x-vnd.BeServed-fileserver"); mime.GetIcon(icon, B_LARGE_ICON); BRect r(40, 55, 230, 120); BListView *aliasList = new BListView(r, "Aliases", B_SINGLE_SELECTION_LIST); AddChild(new BScrollView("ScrollAliases", aliasList, B_FOLLOW_LEFT | B_FOLLOW_TOP, 0, false, true)); r.top = 145; r.bottom = 210; BListView *addressList = new BListView(r, "Addresses", B_SINGLE_SELECTION_LIST); AddChild(new BScrollView("ScrollAddresses", addressList, B_FOLLOW_LEFT | B_FOLLOW_TOP, 0, false, true)); r.top = 275; r.bottom = 305; r.left = 38; r.right = 245; status = new BStatusBar(r, "Connections"); status->SetBarHeight(13.0); AddChild(status); ent = gethostbyaddr((char *) &ipAddr, sizeof(ipAddr), AF_INET); if (ent) { char buf[50]; int i; for (i = 0; ent->h_aliases[i] != 0; i++) aliasList->AddItem(new BStringItem(ent->h_aliases[i])); for (i = 0; ent->h_addr_list[i] != 0; i++) { sprintf(buf, "%d.%d.%d.%d", (uint8) ent->h_addr_list[i][0], (uint8) ent->h_addr_list[i][1], (uint8) ent->h_addr_list[i][2], (uint8) ent->h_addr_list[i][3]); addressList->AddItem(new BStringItem(buf)); } } }
/** * @brief Adds one item to the control. * @param[in] text item text. * @param[in] data associated data of adding item. * @return the index of added item. */ SInt32 BeListViewAdapter::AddItem(ConstAStr text, void* data) { BeGenericDataStringItem* listItem = new BeGenericDataStringItem(text); listItem->SetItemData(data); BListView* listView = getListView(); listView->AddItem(listItem); return listView->CountItems() - 1; }
int32_t PListViewAddItem(void *pobject, void *in, void *out, void *extraData) { if (!pobject || !in || !out) return B_ERROR; PView *parent = static_cast<PView*>(pobject); if (!parent) return B_BAD_TYPE; BListView *backend = (BListView*)parent->GetView(); PArgs *args = static_cast<PArgs*>(in), *outArgs = static_cast<PArgs*>(out); BString label; if (args->FindString("label", &label) != B_OK) label = ""; int32 index; if (args->FindInt32("index", &index) != B_OK) index = -1; if (backend->Window()) backend->Window()->Lock(); bool outValue; BStringItem *item = new BStringItem(label.String()); if (index >= 0) outValue = backend->AddItem(item); else outValue = backend->AddItem(item, index); if (backend->Window()) backend->Window()->Unlock(); outArgs->MakeEmpty(); outArgs->AddBool("value", outValue); return B_OK; }
void iupdrvListAppendItem(Ihandle* ih, const char* value) { BView* view = (BView*)ih->handle; BMenuField* menu = dynamic_cast<BMenuField*>(view); if(menu) { menu->Menu()->AddItem(new BMenuItem(value, NULL)); return; } BListView* listview = iuphaikuGetListView(view); if(listview) { BListItem* item = new BStringItem(value); listview->LockLooper(); listview->AddItem(item); listview->UnlockLooper(); } else { fprintf(stderr, "View hierarchy problem\n"); } }
int main(int argc, char** argv) { BApplication app("application/x-vnd.antares-look"); BWindow* window = new Window(BRect(50, 50, 100, 100), "Look at these pretty controls!", B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS | B_QUIT_ON_WINDOW_CLOSE); window->SetLayout(new BGroupLayout(B_HORIZONTAL)); // create some controls // BListView BListView* listView = new BListView(); for (int32 i = 0; i < 20; i++) { BString itemLabel("List item "); itemLabel << i + 1; listView->AddItem(new BStringItem(itemLabel.String())); } BScrollView* scrollView = new BScrollView("scroller", listView, 0, true, true); scrollView->SetExplicitMinSize(BSize(300, 140)); // BColumnListView BColumnListView* columnListView = new BColumnListView("clv", 0, B_FANCY_BORDER); // for (int32 i = 0; i < 20; i++) { // BString itemLabel("List Item "); // itemLabel << i + 1; // columnListView->AddItem(new BStringItem(itemLabel.String())); // } BGridView* controls = new BGridView(kInset, kInset); BGridLayout* layout = controls->GridLayout(); controls->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); int32 row = 0; add_controls<BButton>(layout, row); add_controls<BCheckBox>(layout, row); add_controls<BRadioButton>(layout, row); add_menu_fields(layout, row); add_text_controls(layout, row); add_sliders(layout, row); add_status_bars(layout, row); BColorControl* colorControl = new BColorControl(B_ORIGIN, B_CELLS_32x8, 8.0f, "color control"); layout->AddView(colorControl, 0, row, 4); BTabView* tabView = new BTabView("tab view", B_WIDTH_FROM_WIDEST); BView* content = BGroupLayoutBuilder(B_VERTICAL, kInset) .Add(scrollView) .Add(columnListView) .Add(controls) .SetInsets(kInset, kInset, kInset, kInset); content->SetName("Tab 1"); tabView->AddTab(content); BView* tab2 = new BView("Tab 2", 0); tab2->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); tabView->AddTab(tab2); tabView->AddTab(new BView("Tab 3", 0)); BMenuBar* menuBar = new BMenuBar("menu bar"); BMenu* menu = new BMenu("File"); menu->AddItem(new BMenuItem("Test Open BFilePanel", new BMessage(MSG_TEST_OPEN_FILE_PANEL))); menu->AddItem(new BMenuItem("Test Save BFilePanel", new BMessage(MSG_TEST_SAVE_FILE_PANEL))); menu->AddItem(new BMenuItem("Click me!", NULL)); menu->AddItem(new BMenuItem("Another option", NULL)); menu->AddSeparatorItem(); menu->AddItem(new BMenuItem("Quit", new BMessage(B_QUIT_REQUESTED))); menuBar->AddItem(menu); menu = new BMenu("Edit"); menu->SetEnabled(false); menu->AddItem(new BMenuItem("Cut", NULL)); menu->AddItem(new BMenuItem("Copy", NULL)); menu->AddSeparatorItem(); menu->AddItem(new BMenuItem("Past", NULL)); menuBar->AddItem(menu); menu = new BMenu("One Item"); menu->AddItem(new BMenuItem("Only", NULL)); menuBar->AddItem(menu); menu = new BMenu("Sub Menu"); BMenu* subMenu = new BMenu("Click me"); subMenu->AddItem(new BMenuItem("Either", NULL)); subMenu->AddItem(new BMenuItem("Or", NULL)); subMenu->SetRadioMode(true); menu->AddItem(subMenu); menuBar->AddItem(menu); BButton* okButton = new BButton("OK", new BMessage(B_QUIT_REQUESTED)); window->AddChild(BGroupLayoutBuilder(B_VERTICAL) .Add(menuBar) .Add(BGroupLayoutBuilder(B_VERTICAL, kInset) .Add(tabView) .Add(BGroupLayoutBuilder(B_HORIZONTAL, kInset) .Add(new BButton("Revert", new BMessage(MSG_TOGGLE_LOOK))) .Add(BSpaceLayoutItem::CreateGlue()) .Add(new BButton("Cancel", NULL)) .Add(okButton) ) .SetInsets(kInset, kInset, kInset, kInset) ) ); window->SetDefaultButton(okButton); window->Show(); app.Run(); return 0; }
// ResourceUsageWindow::InitWindow -- Initialization Commands here void ResourceUsageWindow::InitWindow(BList &list) { BRect rtab = Bounds(); BRect rlist = Bounds(); rtab.top += 10; rlist.top += 10; rlist.left += 12; rlist.right -= 15 + B_V_SCROLL_BAR_WIDTH; rlist.bottom -= 47; // Create the TabView and Tabs BTabView *tabView = new BTabView(rtab,"resource_usage_tabview"); tabView->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); rtab = tabView->Bounds(); rtab.InsetBy(5,5); // Create the ListViews BListView *IRQListView = new BListView(rlist, "IRQListView", B_SINGLE_SELECTION_LIST, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_NAVIGABLE); BListView *DMAListView = new BListView(rlist, "DMAListView", B_SINGLE_SELECTION_LIST, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_NAVIGABLE); BListView *IORangeListView = new BListView(rlist, "IORangeListView", B_SINGLE_SELECTION_LIST, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_NAVIGABLE); BListView *memoryListView = new BListView(rlist, "memoryListView", B_SINGLE_SELECTION_LIST, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_NAVIGABLE); BScrollView *IRQScrollView = new BScrollView("scroll_list1", IRQListView, B_FOLLOW_LEFT|B_FOLLOW_TOP, 0, false, true, B_FANCY_BORDER); BScrollView *DMAScrollView = new BScrollView("scroll_list2", DMAListView, B_FOLLOW_LEFT|B_FOLLOW_TOP, 0, false, true, B_FANCY_BORDER); BScrollView *IORangeScrollView = new BScrollView("scroll_list3", IORangeListView, B_FOLLOW_LEFT|B_FOLLOW_TOP, 0, false, true, B_FANCY_BORDER); BScrollView *memoryScrollView = new BScrollView("scroll_list4", memoryListView, B_FOLLOW_LEFT|B_FOLLOW_TOP, 0, false, true, B_FANCY_BORDER); BTab *tab = new BTab(); tabView->AddTab(IRQScrollView, tab); tab->SetLabel(B_TRANSLATE("IRQ")); tab = new BTab(); tabView->AddTab(DMAScrollView, tab); tab->SetLabel(B_TRANSLATE("DMA")); tab = new BTab(); tabView->AddTab(IORangeScrollView, tab); tab->SetLabel(B_TRANSLATE("IO Range")); tab = new BTab(); tabView->AddTab(memoryScrollView, tab); tab->SetLabel(B_TRANSLATE("Memory Range")); { uint32 mask = 1; for (int i=0;i<16;mask<<=1,i++) { bool first = true; for (int32 j=0; j<list.CountItems(); j++) { DevicesInfo *deviceInfo = (DevicesInfo *)list.ItemAt(j); struct device_configuration *current = deviceInfo->GetCurrent(); resource_descriptor r; int32 num = count_resource_descriptors_of_type(current, B_IRQ_RESOURCE); for (int32 k=0;k<num;k++) { get_nth_resource_descriptor_of_type(current, k, B_IRQ_RESOURCE, &r, sizeof(resource_descriptor)); if (mask & r.d.m.mask) { IRQListView->AddItem(new IRQDMAItem(first ? i : -1, deviceInfo->GetCardName())); first = false; } } } if (first) { IRQListView->AddItem(new IRQDMAItem(i, "")); } } } { uint32 mask = 1; for (int i=0;i<8;mask<<=1,i++) { bool first = true; for (int32 j=0; j<list.CountItems(); j++) { DevicesInfo *deviceInfo = (DevicesInfo *)list.ItemAt(j); struct device_configuration *current = deviceInfo->GetCurrent(); resource_descriptor r; int32 num = count_resource_descriptors_of_type(current, B_DMA_RESOURCE); for (int32 k=0;k<num;k++) { get_nth_resource_descriptor_of_type(current, k, B_DMA_RESOURCE, &r, sizeof(resource_descriptor)); if (mask & r.d.m.mask) { DMAListView->AddItem(new IRQDMAItem(first ? i : -1, deviceInfo->GetCardName())); first = false; } } } if (first) { DMAListView->AddItem(new IRQDMAItem(i, "")); } } } { for (int32 j=0; j<list.CountItems(); j++) { DevicesInfo *deviceInfo = (DevicesInfo *)list.ItemAt(j); struct device_configuration *current = deviceInfo->GetCurrent(); resource_descriptor r; int32 num = count_resource_descriptors_of_type(current, B_IO_PORT_RESOURCE); for (int32 k=0;k<num;k++) { get_nth_resource_descriptor_of_type(current, k, B_IO_PORT_RESOURCE, &r, sizeof(resource_descriptor)); IORangeListView->AddItem(new RangeItem(r.d.r.minbase, r.d.r.minbase + r.d.r.len - 1, deviceInfo->GetCardName())); } } IORangeListView->SortItems(&RangeItem::Compare); } { for (int32 j=0; j<list.CountItems(); j++) { DevicesInfo *deviceInfo = (DevicesInfo *)list.ItemAt(j); struct device_configuration *current = deviceInfo->GetCurrent(); resource_descriptor r; int32 num = count_resource_descriptors_of_type(current, B_MEMORY_RESOURCE); for (int32 k=0;k<num;k++) { get_nth_resource_descriptor_of_type(current, k, B_MEMORY_RESOURCE, &r, sizeof(resource_descriptor)); memoryListView->AddItem(new RangeItem(r.d.r.minbase, r.d.r.minbase + r.d.r.len - 1, deviceInfo->GetCardName())); } } memoryListView->SortItems(&RangeItem::Compare); } BBox *background = new BBox(Bounds(), "background"); background->SetBorder(B_NO_BORDER); AddChild(background); background->AddChild(tabView); }
LocaleWindow::LocaleWindow() : BWindow(BRect(0, 0, 0, 0), "Locale", B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE | B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS) { BCountry* defaultCountry; be_locale_roster->GetDefaultCountry(&defaultCountry); SetLayout(new BGroupLayout(B_HORIZONTAL)); float spacing = be_control_look->DefaultItemSpacing(); BTabView* tabView = new BTabView("tabview"); BGroupView* languageTab = new BGroupView(B_TRANSLATE("Language"), B_HORIZONTAL, spacing); // first list: available languages fLanguageListView = new LanguageListView("available", B_MULTIPLE_SELECTION_LIST); BScrollView* scrollView = new BScrollView("scroller", fLanguageListView, B_WILL_DRAW | B_FRAME_EVENTS, false, true); fLanguageListView->SetInvocationMessage(new BMessage(kMsgLanguageInvoked)); fLanguageListView->SetDragMessage(new BMessage(kMsgLanguageDragged)); // Fill the language list from the LocaleRoster data BMessage installedLanguages; if (be_locale_roster->GetInstalledLanguages(&installedLanguages) == B_OK) { BString currentID; LanguageListItem* lastAddedCountryItem = NULL; for (int i = 0; installedLanguages.FindString("langs", i, ¤tID) == B_OK; i++) { // Now get an human-readable, localized name for each language BLanguage* currentLanguage; be_locale_roster->GetLanguage(currentID.String(), ¤tLanguage); BString name; currentLanguage->GetName(name); // TODO: as long as the app_server doesn't support font overlays, // use the translated name if problematic characters are used... const char* string = name.String(); while (uint32 code = BUnicodeChar::FromUTF8(&string)) { if (code > 1424) { currentLanguage->GetTranslatedName(name); break; } } LanguageListItem* item = new LanguageListItem(name, currentID.String(), currentLanguage->Code()); if (currentLanguage->IsCountrySpecific() && lastAddedCountryItem != NULL && lastAddedCountryItem->Code() == item->Code()) { fLanguageListView->AddUnder(item, lastAddedCountryItem); } else { // This is a language variant, add it at top-level fLanguageListView->AddItem(item); if (!currentLanguage->IsCountrySpecific()) { item->SetExpanded(false); lastAddedCountryItem = item; } } delete currentLanguage; } fLanguageListView->FullListSortItems(compare_typed_list_items); } else { BAlert* alert = new BAlert("Error", B_TRANSLATE("Unable to find the available languages! You can't " "use this preflet!"), B_TRANSLATE("OK"), NULL, NULL, B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_STOP_ALERT); alert->Go(); } // Second list: active languages fPreferredListView = new LanguageListView("preferred", B_MULTIPLE_SELECTION_LIST); BScrollView* scrollViewEnabled = new BScrollView("scroller", fPreferredListView, B_WILL_DRAW | B_FRAME_EVENTS, false, true); fPreferredListView->SetInvocationMessage( new BMessage(kMsgPreferredLanguageInvoked)); fPreferredListView->SetDeleteMessage( new BMessage(kMsgPreferredLanguageDeleted)); fPreferredListView->SetDragMessage( new BMessage(kMsgPreferredLanguageDragged)); BLayoutBuilder::Group<>(languageTab) .AddGroup(B_VERTICAL, spacing) .Add(new BStringView("", B_TRANSLATE("Available languages"))) .Add(scrollView) .End() .AddGroup(B_VERTICAL, spacing) .Add(new BStringView("", B_TRANSLATE("Preferred languages"))) .Add(scrollViewEnabled) .End() .SetInsets(spacing, spacing, spacing, spacing); BView* countryTab = new BView(B_TRANSLATE("Country"), B_WILL_DRAW); countryTab->SetLayout(new BGroupLayout(B_VERTICAL, 0)); BListView* listView = new BListView("country", B_SINGLE_SELECTION_LIST); scrollView = new BScrollView("scroller", listView, B_WILL_DRAW | B_FRAME_EVENTS, false, true); listView->SetSelectionMessage(new BMessage(kMsgCountrySelection)); // get all available countries from ICU // Use DateFormat::getAvailableLocale so we get only the one we can // use. Maybe check the NumberFormat one and see if there is more. int32_t localeCount; const Locale* currentLocale = Locale::getAvailableLocales(localeCount); for (int index = 0; index < localeCount; index++) { UnicodeString countryFullName; BString string; BStringByteSink sink(&string); currentLocale[index].getDisplayName(countryFullName); countryFullName.toUTF8(sink); LanguageListItem* item = new LanguageListItem(string, currentLocale[index].getName(), NULL); listView->AddItem(item); if (!strcmp(currentLocale[index].getName(), defaultCountry->Code())) listView->Select(listView->CountItems() - 1); } // TODO: find a real solution intead of this hack listView->SetExplicitMinSize( BSize(25 * be_plain_font->Size(), B_SIZE_UNSET)); fFormatView = new FormatView(defaultCountry); countryTab->AddChild(BLayoutBuilder::Group<>(B_HORIZONTAL, spacing) .AddGroup(B_VERTICAL, 3) .Add(scrollView) .End() .Add(fFormatView) .SetInsets(spacing, spacing, spacing, spacing)); listView->ScrollToSelection(); tabView->AddTab(languageTab); tabView->AddTab(countryTab); BButton* button = new BButton(B_TRANSLATE("Defaults"), new BMessage(kMsgDefaults)); fRevertButton = new BButton(B_TRANSLATE("Revert"), new BMessage(kMsgRevert)); fRevertButton->SetEnabled(false); BLayoutBuilder::Group<>(this, B_VERTICAL, spacing) .Add(tabView) .AddGroup(B_HORIZONTAL, spacing) .Add(button) .Add(fRevertButton) .AddGlue() .End() .SetInsets(spacing, spacing, spacing, spacing) .End(); _UpdatePreferredFromLocaleRoster(); SettingsReverted(); CenterOnScreen(); }