1 /* 2 * Copyright 2013, Gerasim Troeglazov, 3dEyes@gmail.com. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 #include "ConfigView.h" 7 8 #include <Catalog.h> 9 #include <LayoutBuilder.h> 10 #include <MenuItem.h> 11 #include <PopUpMenu.h> 12 #include <StringView.h> 13 14 #include <stdio.h> 15 16 #include "PSDLoader.h" 17 #include "PSDTranslator.h" 18 19 #undef B_TRANSLATION_CONTEXT 20 #define B_TRANSLATION_CONTEXT "PSDConfig" 21 22 23 ConfigView::ConfigView(TranslatorSettings *settings) 24 : BGroupView(B_TRANSLATE("PSDTranslator Settings"), B_VERTICAL, 0) 25 { 26 fSettings = settings; 27 28 BPopUpMenu* compressionPopupMenu = new BPopUpMenu("popup_compression"); 29 30 uint32 currentCompression = 31 fSettings->SetGetInt32(PSD_SETTING_COMPRESSION); 32 33 _AddItemToMenu(compressionPopupMenu, B_TRANSLATE("Uncompressed"), 34 MSG_COMPRESSION_CHANGED, PSD_COMPRESSED_RAW, currentCompression); 35 _AddItemToMenu(compressionPopupMenu, B_TRANSLATE("RLE"), 36 MSG_COMPRESSION_CHANGED, PSD_COMPRESSED_RLE, currentCompression); 37 38 fCompressionField = new BMenuField("compression", 39 B_TRANSLATE("Compression: "), compressionPopupMenu); 40 41 BPopUpMenu* versionPopupMenu = new BPopUpMenu("popup_version"); 42 43 uint32 currentVersion = 44 fSettings->SetGetInt32(PSD_SETTING_VERSION); 45 46 _AddItemToMenu(versionPopupMenu, 47 B_TRANSLATE("Photoshop Document (PSD File)"), MSG_VERSION_CHANGED, 48 PSD_FILE, currentVersion); 49 _AddItemToMenu(versionPopupMenu, 50 B_TRANSLATE("Photoshop Big Document (PSB File)"), MSG_VERSION_CHANGED, 51 PSB_FILE, currentVersion); 52 53 fVersionField = new BMenuField("version", 54 B_TRANSLATE("Format: "), versionPopupMenu); 55 56 BStringView *titleView = new BStringView("title", 57 B_TRANSLATE("Photoshop image translator")); 58 titleView->SetFont(be_bold_font); 59 60 char version[256]; 61 sprintf(version, B_TRANSLATE("Version %d.%d.%d, %s"), 62 int(B_TRANSLATION_MAJOR_VERSION(PSD_TRANSLATOR_VERSION)), 63 int(B_TRANSLATION_MINOR_VERSION(PSD_TRANSLATOR_VERSION)), 64 int(B_TRANSLATION_REVISION_VERSION(PSD_TRANSLATOR_VERSION)), 65 __DATE__); 66 67 BStringView *versionView = new BStringView("version", version); 68 BStringView *copyrightView = new BStringView("copyright", 69 B_UTF8_COPYRIGHT "2005-2013 Haiku Inc."); 70 BStringView *copyright2View = new BStringView("my_copyright", 71 B_UTF8_COPYRIGHT "2012-2013 Gerasim Troeglazov <3dEyes@gmail.com>"); 72 73 BLayoutBuilder::Group<>(this, B_VERTICAL, 0) 74 .SetInsets(B_USE_DEFAULT_SPACING) 75 .Add(titleView) 76 .Add(versionView) 77 .Add(copyrightView) 78 .AddGlue() 79 .Add(fVersionField) 80 .Add(fCompressionField) 81 .AddGlue() 82 .Add(copyright2View); 83 84 85 SetExplicitPreferredSize(GroupLayout()->MinSize()); 86 } 87 88 89 ConfigView::~ConfigView() 90 { 91 fSettings->Release(); 92 } 93 94 95 void 96 ConfigView::AllAttached() 97 { 98 fCompressionField->Menu()->SetTargetForItems(this); 99 fVersionField->Menu()->SetTargetForItems(this); 100 } 101 102 103 void 104 ConfigView::MessageReceived(BMessage* message) 105 { 106 switch (message->what) { 107 case MSG_COMPRESSION_CHANGED: { 108 int32 value; 109 if (message->FindInt32("value", &value) >= B_OK) { 110 fSettings->SetGetInt32(PSD_SETTING_COMPRESSION, &value); 111 fSettings->SaveSettings(); 112 } 113 break; 114 } 115 case MSG_VERSION_CHANGED: { 116 int32 value; 117 if (message->FindInt32("value", &value) >= B_OK) { 118 fSettings->SetGetInt32(PSD_SETTING_VERSION, &value); 119 fSettings->SaveSettings(); 120 } 121 break; 122 } 123 default: 124 BView::MessageReceived(message); 125 } 126 } 127 128 129 void 130 ConfigView::_AddItemToMenu(BMenu* menu, const char* label, 131 uint32 mess, uint32 value, uint32 current_value) 132 { 133 BMessage* message = new BMessage(mess); 134 message->AddInt32("value", value); 135 BMenuItem* item = new BMenuItem(label, message); 136 item->SetMarked(value == current_value); 137 menu->AddItem(item); 138 } 139