#ifndef MAIN_WINDOW_H
#define MAIN_WINDOW_H
#include <Entry.h>
#include <Window.h>
#include "IconBuild.h"
#include "Observer.h"
class BMenu;
class BMenuBar;
class BMenuItem;
class CanvasView;
class CurrentColor;
class Document;
class DocumentSaver;
class IconObjectListView;
class IconEditorApp;
class IconView;
class PathListView;
class ShapeListView;
class StyleListView;
class StyleView;
class SwatchGroup;
class TransformerListView;
_BEGIN_ICON_NAMESPACE
class Icon;
_END_ICON_NAMESPACE
_USING_ICON_NAMESPACE
class MultipleManipulatorState;
enum {
MSG_OPEN = 'open',
MSG_APPEND = 'apnd',
MSG_SAVE = 'save',
MSG_EXPORT = 'xprt',
};
class MainWindow : public BWindow, public Observer {
public:
MainWindow(BRect frame, IconEditorApp* app,
const BMessage* settings);
virtual ~MainWindow();
virtual void MessageReceived(BMessage* message);
virtual void Show();
virtual bool QuitRequested();
virtual void WorkspaceActivated(int32 workspace,
bool active);
virtual void WorkspacesChanged(uint32 oldWorkspaces,
uint32 newWorkspaces);
virtual void ObjectChanged(const Observable* object);
void MakeEmpty();
void SetIcon(Icon* icon);
void Open(const entry_ref& ref,
bool append = false);
void Open(const BMessenger& externalObserver,
const uint8* data, size_t size);
void AddReferenceImage(const entry_ref& ref);
void AddStyledText(BMessage* pasteData);
void StoreSettings(BMessage* archive);
void RestoreSettings(const BMessage* archive);
private:
void _Init();
void _CreateGUI();
BMenuBar* _CreateMenuBar();
void _ImproveScrollBarLayout(BView* target);
void _WorkspaceEntered();
bool _CheckSaveIcon(const BMessage* currentMessage);
void _PickUpActionBeforeSave();
void _MakeIconEmpty();
DocumentSaver* _CreateSaver(const entry_ref& ref,
uint32 exportMode);
const entry_ref* _FileRef(bool preferExporter) const;
void _UpdateWindowTitle();
private:
IconEditorApp* fApp;
Document* fDocument;
CurrentColor* fCurrentColor;
Icon* fIcon;
BMessage* fMessageAfterSave;
BMenu* fPathMenu;
BMenu* fStyleMenu;
BMenu* fShapeMenu;
BMenu* fTransformerMenu;
BMenu* fPropertyMenu;
BMenu* fSwatchMenu;
BMenuItem* fUndoMI;
BMenuItem* fRedoMI;
BMenuItem* fMouseFilterOffMI;
BMenuItem* fMouseFilter64MI;
BMenuItem* fMouseFilter32MI;
BMenuItem* fMouseFilter16MI;
CanvasView* fCanvasView;
SwatchGroup* fSwatchGroup;
StyleView* fStyleView;
IconView* fIconPreview16Folder;
IconView* fIconPreview16Menu;
IconView* fIconPreview32Folder;
IconView* fIconPreview32Desktop;
IconView* fIconPreview48;
IconView* fIconPreview64;
PathListView* fPathListView;
StyleListView* fStyleListView;
ShapeListView* fShapeListView;
TransformerListView* fTransformerListView;
IconObjectListView* fPropertyListView;
MultipleManipulatorState* fState;
};
#endif