/* * Copyright 2009, Haiku, Inc. * Distributed under the terms of the MIT license. * * Authors: * Michael Lotz, mmlr@mlotz.ch */ #include "HVIFView.h" #include "HVIFTranslator.h" #include #include #include #include #include #define HVIF_SETTING_RENDER_SIZE_CHANGED 'rsch' #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "HVIFView" HVIFView::HVIFView(const char* name, uint32 flags, TranslatorSettings *settings) : BView(name, flags, new BGroupLayout(B_VERTICAL)), fSettings(settings) { BAlignment labelAlignment(B_ALIGN_LEFT, B_ALIGN_NO_VERTICAL); BStringView* title= new BStringView("title", B_TRANSLATE("Haiku vector icon translator")); title->SetFont(be_bold_font); title->SetExplicitAlignment(labelAlignment); char versionString[256]; snprintf(versionString, sizeof(versionString), B_TRANSLATE("Version %d.%d.%d, %s"), int(B_TRANSLATION_MAJOR_VERSION(HVIF_TRANSLATOR_VERSION)), int(B_TRANSLATION_MINOR_VERSION(HVIF_TRANSLATOR_VERSION)), int(B_TRANSLATION_REVISION_VERSION(HVIF_TRANSLATOR_VERSION)), __DATE__); BStringView* version = new BStringView("version", versionString); version->SetExplicitAlignment(labelAlignment); BStringView* copyright = new BStringView("copyright", B_UTF8_COPYRIGHT"2009 Haiku Inc."); copyright->SetExplicitAlignment(labelAlignment); int32 renderSize = fSettings->SetGetInt32(HVIF_SETTING_RENDER_SIZE); BString label = B_TRANSLATE("Render size:"); label << " " << renderSize; fRenderSize = new BSlider("renderSize", label.String(), NULL, 1, 32, B_HORIZONTAL); fRenderSize->SetValue(renderSize / 8); fRenderSize->SetHashMarks(B_HASH_MARKS_BOTTOM); fRenderSize->SetHashMarkCount(16); fRenderSize->SetModificationMessage( new BMessage(HVIF_SETTING_RENDER_SIZE_CHANGED)); fRenderSize->SetExplicitAlignment(labelAlignment); BLayoutBuilder::Group<>(this, B_VERTICAL, 0) .SetInsets(B_USE_DEFAULT_SPACING) .Add(title) .Add(version) .Add(copyright) .AddGlue() .Add(fRenderSize) .AddGlue(); } HVIFView::~HVIFView() { fSettings->Release(); } void HVIFView::AttachedToWindow() { fRenderSize->SetTarget(this); } void HVIFView::MessageReceived(BMessage *message) { switch (message->what) { case HVIF_SETTING_RENDER_SIZE_CHANGED: { int32 value = fRenderSize->Value(); if (value <= 0 || value > 32) break; value *= 8; fSettings->SetGetInt32(HVIF_SETTING_RENDER_SIZE, &value); fSettings->SaveSettings(); BString newLabel = B_TRANSLATE("Render size:"); newLabel << " " << value; fRenderSize->SetLabel(newLabel.String()); return; } } BView::MessageReceived(message); }