#include "Constants.h"
#include "InspectorApp.h"
#include "ImageWindow.h"
#include "TranslatorItem.h"
#include <Directory.h>
#include <Message.h>
#include <String.h>
#include <Window.h>
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "InspectorApp"
InspectorApp::InspectorApp()
: BApplication(APP_SIG)
{
fpActivesWin = NULL;
fpInfoWin = NULL;
AddToTranslatorsList("/system/add-ons/Translators",
SYSTEM_TRANSLATOR);
AddToTranslatorsList(
"/boot/home/config/add-ons/Translators",
USER_TRANSLATOR);
BRect rect(100, 100, 500, 400);
ImageWindow *pwin = new ImageWindow(rect, IMAGEWINDOW_TITLE);
pwin->Show();
}
void
InspectorApp::AddToTranslatorsList(const char *folder, int32 group)
{
BDirectory dir;
if (dir.SetTo(folder) == B_OK) {
BEntry ent;
while (dir.GetNextEntry(&ent) == B_OK) {
BPath path;
if (ent.GetPath(&path) == B_OK)
flstTranslators.AddItem(
new BTranslatorItem(path.Leaf(), path.Path(), group));
}
}
}
void
InspectorApp::MessageReceived(BMessage *pmsg)
{
switch (pmsg->what) {
case M_ACTIVE_TRANSLATORS_WINDOW:
if (!fpActivesWin)
fpActivesWin = new ActiveTranslatorsWindow(
BRect(625, 350, 800, 600),
B_TRANSLATE("Active Translators"),
GetTranslatorsList());
break;
case M_ACTIVE_TRANSLATORS_WINDOW_QUIT:
fpActivesWin = NULL;
break;
case M_INFO_WINDOW:
if (!fpInfoWin)
fpInfoWin = new InfoWindow(BRect(625, 50, 800, 300),
B_TRANSLATE_COMMENT("Info Win",
"This is a quite narrow info window and title 'Info Win' "
"is therefore shortened."), fbstrInfo.String());
break;
case M_INFO_WINDOW_QUIT:
fpInfoWin = NULL;
break;
case M_INFO_WINDOW_TEXT:
pmsg->FindString("text", &fbstrInfo);
if (fpInfoWin)
fpInfoWin->PostMessage(pmsg);
break;
default:
BApplication::MessageReceived(pmsg);
break;
}
}
void
InspectorApp::RefsReceived(BMessage *pmsg)
{
pmsg->what = M_OPEN_FILE_PANEL;
BWindow *pwin = WindowAt(0);
if (pwin)
pwin->PostMessage(pmsg);
}
BList *
InspectorApp::GetTranslatorsList()
{
return &flstTranslators;
}
int main(int argc, char **argv)
{
InspectorApp *papp = new InspectorApp();
papp->Run();
delete papp;
papp = NULL;
return 0;
}