本文整理汇总了C++中BTranslatorRoster::GetTranslatorInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ BTranslatorRoster::GetTranslatorInfo方法的具体用法?C++ BTranslatorRoster::GetTranslatorInfo怎么用?C++ BTranslatorRoster::GetTranslatorInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BTranslatorRoster
的用法示例。
在下文中一共展示了BTranslatorRoster::GetTranslatorInfo方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: strcmp
// ---------------------------------------------------------------
// GetDefaultSettings
//
// Attempts to find the translator settings for
// the translator named kTranslatorName with a version of
// translatorVersion.
//
// Preconditions:
//
// Parameters: kTranslatorName, the name of the translator
// the settings are for
// translatorVersion, the version of the translator
// to retrieve
//
// Postconditions:
//
// Returns: NULL, if anything went wrong
// BMessage * of configuration data for kTranslatorName
// ---------------------------------------------------------------
BMessage *
BTranslationUtils::GetDefaultSettings(const char *kTranslatorName,
int32 translatorVersion)
{
BTranslatorRoster *roster = BTranslatorRoster::Default();
translator_id *translators = NULL;
int32 numTranslators = 0;
if (roster == NULL
|| roster->GetAllTranslators(&translators, &numTranslators) != B_OK)
return NULL;
// Cycle through all of the default translators
// looking for a translator that matches the name and version
// that I was given
BMessage *pMessage = NULL;
const char *currentTranName = NULL, *currentTranInfo = NULL;
int32 currentTranVersion = 0;
for (int i = 0; i < numTranslators; i++) {
if (roster->GetTranslatorInfo(translators[i], ¤tTranName,
¤tTranInfo, ¤tTranVersion) == B_OK) {
if (currentTranVersion == translatorVersion
&& strcmp(currentTranName, kTranslatorName) == 0) {
pMessage = GetDefaultSettings(translators[i], roster);
break;
}
}
}
delete[] translators;
return pMessage;
}
示例2: TranslatorItem
// Reads the installed translators and adds them to our BListView
status_t
DataTranslationsWindow::_PopulateListView()
{
BTranslatorRoster* roster = BTranslatorRoster::Default();
// Get all Translators on the system. Gives us the number of translators
// installed in num_translators and a reference to the first one
int32 numTranslators;
translator_id* translators = NULL;
roster->GetAllTranslators(&translators, &numTranslators);
float maxWidth = 0;
for (int32 i = 0; i < numTranslators; i++) {
// Getting the first three Infos: Name, Info & Version
int32 version;
const char* name;
const char* info;
roster->GetTranslatorInfo(translators[i], &name, &info, &version);
fTranslatorListView->AddItem(new TranslatorItem(translators[i], name));
maxWidth = std::max(maxWidth, fTranslatorListView->StringWidth(name));
}
fTranslatorListView->SortItems();
fTranslatorListView->SetExplicitSize(BSize(maxWidth + 20, B_SIZE_UNSET));
delete[] translators;
return B_OK;
}
示例3: TranslatorItem
// Reads the installed translators and adds them to our BListView
status_t
DataTranslationsWindow::_PopulateListView()
{
BTranslatorRoster *roster = BTranslatorRoster::Default();
// Get all Translators on the system. Gives us the number of translators
// installed in num_translators and a reference to the first one
int32 numTranslators;
translator_id *translators = NULL;
roster->GetAllTranslators(&translators, &numTranslators);
for (int32 i = 0; i < numTranslators; i++) {
// Getting the first three Infos: Name, Info & Version
int32 version;
const char *name, *info;
roster->GetTranslatorInfo(translators[i], &name, &info, &version);
fTranslatorListView->AddItem(new TranslatorItem(translators[i], name));
}
delete[] translators;
return B_OK;
}
示例4: entry
status_t
DataTranslationsWindow::_GetTranslatorInfo(int32 id, const char*& name,
const char*& info, int32& version, BPath& path)
{
// Returns information about the translator with the given id
if (id < 0)
return B_BAD_VALUE;
BTranslatorRoster* roster = BTranslatorRoster::Default();
if (roster->GetTranslatorInfo(id, &name, &info, &version) != B_OK)
return B_ERROR;
// Get the translator's path
entry_ref ref;
if (roster->GetRefFor(id, &ref) == B_OK) {
BEntry entry(&ref);
path.SetTo(&entry);
} else
path.Unset();
return B_OK;
}
示例5: ReadyToRun
void SketchApp::ReadyToRun()
{
// Build a menu into your filepanel for fun and profit!
SketchWindow *mainWindow = ((SketchWindow *)FindWindow("Etch-A-Sketch"B_UTF8_REGISTERED));
//BFilePanel *saver = NULL;
BMenuField *formatMenu = NULL;
BMenu *menu = NULL;
BView *saverView = NULL;
BRect rect, bounds;
menu_info m_info;
int32 menubarheight=0;
// get some menu measurements
get_menu_info(&m_info);
menubarheight = (int32)m_info.font_size + 8;
// make the filepanel
saver = new BFilePanel(B_SAVE_PANEL, NULL, NULL, B_FILE_NODE, false); // _ctor
if(saver->Window()->Lock())
{
// get a pointer to a view
saverView = (BView *)saver->Window()->ChildAt(0);
// get a rect for the filepanel's window
bounds = saverView->Bounds();
// make a menu
menu = new BMenu("Format");
// construct the BMenuFeild for the menu
rect.Set(bounds.right - 100, bounds.top + menubarheight, bounds.right - 40, bounds.top + menubarheight + 15);
formatMenu = new BMenuField(rect, "format menu", "", menu);
formatMenu->SetDivider(0);
// Below was ganked from the BeBook
//find all the translators
BTranslatorRoster *roster = BTranslatorRoster::Default();
int32 num_translators, i;
translator_id *translators;
const char *translator_name, *translator_info;
int32 translator_version;
roster->GetAllTranslators(&translators, &num_translators); // function allocates the memory for translators
for (i=0;i<num_translators;i++)
{
const translation_format *fmts;
int32 num_fmts;
roster->GetTranslatorInfo(translators[i], &translator_name, &translator_info, &translator_version);
roster->GetOutputFormats(translators[i], &fmts, &num_fmts);
if(fmts[0].group == B_TRANSLATOR_BITMAP) // make sure we only get bitmap translators
{
BMessage *message = new BMessage(TRANSLATOR);
message->AddString("save format", fmts[0].MIME);
if(i == 0)
mainWindow->PostMessage(message); // this will init 'format' for us
menu->AddItem(new BMenuItem(translator_name, message));
}
//printf("%s: %s (%.2f)\n", translator_name, translator_info, translator_version/100.);
}
delete [] translators; // clean up our droppings
// found em all
menu->SetRadioMode(true);
menu->ItemAt(0)->SetMarked(true);
menu->SetTargetForItems(mainWindow);
saverView->AddChild(formatMenu);
saver->Window()->Unlock();
}
}
示例6:
// Handle messages to the main view
void
OutputFormatView::MessageReceived(BMessage *msg)
{
int32 item_index;
const char *info_lines[3];
switch (msg->what)
{
case ITEM_SELECTED:
if (msg->FindInt32("index", &item_index) == B_OK &&
item_index >= 0 &&
item_index < list_view->CountItems())
{
// Store the currently selected item
// in the class member 'index'
index = item_index;
// Update the info view and config view
int32 outVersion;
the_roster->GetTranslatorInfo(
output_list[item_index].translator,
&name_line,
&info_line,
&outVersion);
int32 ver = outVersion / 100;
int32 rev1 = (outVersion % 100) / 10;
int32 rev2 = outVersion % 10;
sprintf(version_line, "Version %ld.%ld.%ld", ver, rev1, rev2);
info_lines[0] = name_line;
info_lines[1] = info_line;
info_lines[2] = version_line;
info_view->SetInfoLines(info_lines);
AddConfigView();
}
else
{
// Reselect the original item
if (index >= 0)
list_view->Select(index);
}
break;
case INVOKE_LIST:
{
// The main button was pressed
// Find out which item is selected, and invoke it
int32 item_count = list_view->CountItems();
for (int32 i = 0; i < item_count; ++i)
{
if (list_view->IsItemSelected(i))
{
list_view->Invoke();
break;
}
}
break;
}
case SEND_MESSAGE:
// An output format has been selected
if (!message_sent &&
msg->FindInt32("index", &item_index) == B_OK &&
item_index >= 0 &&
item_index < list_view->CountItems())
{
// Get the message from the invoker
BMessage *the_message=selected_invoker->Message();
// Add some info about the selected output format to it
the_message->AddInt32("translator", output_list[item_index].translator);
the_message->AddInt32("type", output_list[item_index].type);
// Send the message
selected_invoker->Invoke(the_message);
message_sent = true;
the_window->PostMessage(MESSAGE_SENT);
}
break;
default:
BView::MessageReceived(msg);
break;
}
}