#ifndef _INTERFACE_UTILS_H
#define _INTERFACE_UTILS_H
#include <AppDefs.h>
#include <MessageFilter.h>
#include <Window.h>
class BHandler;
class BMessage;
class EscapeMessageFilter : public BMessageFilter
{
public:
EscapeMessageFilter(BWindow *window, int32 what);
filter_result Filter(BMessage *msg, BHandler **target);
private:
BWindow* fWindow;
int32 fWhat;
};
class HWindow : public BWindow
{
typedef BWindow inherited;
public:
HWindow(BRect frame, const char *title,
window_type type, uint32 flags,
uint32 workspace = B_CURRENT_WORKSPACE,
uint32 escape_msg = B_QUIT_REQUESTED);
HWindow(BRect frame, const char *title,
window_look look, window_feel feel, uint32 flags,
uint32 workspace = B_CURRENT_WORKSPACE,
uint32 escape_msg = B_QUIT_REQUESTED);
virtual ~HWindow() {}
virtual void MessageReceived(BMessage* m);
virtual void AboutRequested();
virtual const char* AboutText() const { return NULL; }
protected:
void Init(uint32 escape_msg);
};
class BlockingWindow : public HWindow
{
typedef HWindow inherited;
public:
BlockingWindow(BRect frame, const char *title,
window_type type, uint32 flags,
uint32 workspace = B_CURRENT_WORKSPACE,
uint32 escape_msg = B_QUIT_REQUESTED);
BlockingWindow(BRect frame, const char *title,
window_look look, window_feel feel, uint32 flags,
uint32 workspace = B_CURRENT_WORKSPACE,
uint32 escape_msg = B_QUIT_REQUESTED);
virtual ~BlockingWindow();
virtual bool QuitRequested();
void Quit(status_t result);
virtual status_t Go();
virtual void Quit();
void SetUserQuitResult(status_t result);
private:
void Init(const char* title);
private:
status_t fUserQuitResult;
bool fReadyToQuit;
sem_id fExitSem;
status_t* fResult;
};
#endif