Adding a settings button to change translator settings, refer to ticket #3813

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37335 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Wim van der Meer
2010-07-02 08:38:00 +00:00
parent 8efbc2761e
commit ba7d3b37f9
2 changed files with 63 additions and 1 deletions
+62 -1
View File
@@ -37,6 +37,7 @@
#include <StringView.h>
#include <TextControl.h>
#include <TranslationUtils.h>
#include <TranslatorRoster.h>
#include "PreviewView.h"
#include "Utility.h"
@@ -50,7 +51,8 @@ enum {
kImageFormat,
kLocationChanged,
kChooseLocation,
kSaveScreenshot
kSaveScreenshot,
kSettings
};
@@ -158,6 +160,8 @@ ScreenshotWindow::ScreenshotWindow(const Utility& utility, bool silent,
.Add(fNameControl->CreateTextViewLayoutItem(), 1, 0)
.Add(menuField->CreateLabelLayoutItem(), 0, 1)
.Add(menuField->CreateMenuBarLayoutItem(), 1, 1)
.Add(new BButton("", B_TRANSLATE("Settings"B_UTF8_ELLIPSIS),
new BMessage(kSettings)), 2, 1)
.Add(menuField2->CreateLabelLayoutItem(), 0, 2)
.Add(menuField2->CreateMenuBarLayoutItem(), 1, 2);
gridLayout->SetMinColumnWidth(1,
@@ -302,6 +306,10 @@ ScreenshotWindow::MessageReceived(BMessage* message)
case B_COPY:
fUtility.CopyToClipboard(fScreenshot);
break;
case kSettings:
_ShowSettings();
break;
default:
BWindow::MessageReceived(message);
@@ -319,6 +327,9 @@ ScreenshotWindow::Quit()
}
// #pragma - private
void
ScreenshotWindow::_NewScreenshot(bool silent, bool clipboard)
{
@@ -543,6 +554,56 @@ ScreenshotWindow::_SaveScreenshot()
}
void
ScreenshotWindow::_ShowSettings()
{
// Find a translator
translator_id translator = 0;
BTranslatorRoster *roster = BTranslatorRoster::Default();
translator_id* translators = NULL;
int32 numTranslators = 0;
if (roster->GetAllTranslators(&translators, &numTranslators) != B_OK)
return;
bool foundTranslator = false;
for (int32 x = 0; x < numTranslators; x++) {
const translation_format* formats = NULL;
int32 numFormats;
if (roster->GetOutputFormats(translators[x], &formats, &numFormats) == B_OK) {
for (int32 i = 0; i < numFormats; ++i) {
if (formats[i].type == static_cast<uint32>(fImageFileType)) {
translator = translators[x];
foundTranslator = true;
break;
}
}
}
if (foundTranslator)
break;
}
delete [] translators;
if (!foundTranslator)
return;
// Create a window with a configuration view
BView *view;
BRect rect(0, 0, 239, 239);
status_t err = roster->MakeConfigurationView(translator, NULL, &view,
&rect);
if (err < B_OK || view == NULL) {
BAlert *alert = new BAlert(NULL, strerror(err), "OK");
alert->Go();
} else {
BWindow* window = new BWindow(rect, "Translator Settings",
B_TITLED_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL,
B_NOT_ZOOMABLE | B_NOT_RESIZABLE);
window->AddChild(view);
window->CenterOnScreen();
window->Show();
}
}
BString
ScreenshotWindow::_FindValidFileName(const char* name)
{
+1
View File
@@ -50,6 +50,7 @@ private:
void _UpdateFilenameSelection();
void _SetupTranslatorMenu();
status_t _SaveScreenshot();
void _ShowSettings();
BString _FindValidFileName(const char* name);
BPath _GetDirectory();
void _ReadSettings();