Removing dependencies on MainWindow.

This commit is contained in:
Ben Vanik
2015-07-01 08:02:22 -07:00
parent 4732378ba9
commit 9efccc5f4a
17 changed files with 123 additions and 98 deletions

View File

@@ -14,6 +14,7 @@
#include "xenia/base/delegate.h"
#include "xenia/ui/control.h"
#include "xenia/ui/loop.h"
#include "xenia/ui/menu_item.h"
#include "xenia/ui/ui_event.h"
@@ -27,6 +28,8 @@ class Window : public T {
virtual bool Initialize() { return true; }
Loop* loop() const { return loop_; }
const std::wstring& title() const { return title_; }
virtual bool set_title(const std::wstring& title) {
if (title == title_) {
@@ -36,6 +39,15 @@ class Window : public T {
return true;
}
MenuItem* menu() const { return menu_; }
void set_menu(MenuItem* menu) {
if (menu == menu_) {
return;
}
menu_ = menu;
OnSetMenu(menu);
}
void Close() {
auto e = UIEvent(this);
on_closing(e);
@@ -46,13 +58,8 @@ class Window : public T {
on_closed(e);
}
virtual void SetMenu(MenuItem* menu) {
menu_ = menu;
OnSetMenu(menu);
}
virtual void SetFullscreen(bool fullscreen) {}
virtual bool is_fullscreen() const { return false; }
virtual void ToggleFullscreen(bool fullscreen) {}
public:
Delegate<UIEvent> on_shown;
@@ -61,7 +68,8 @@ class Window : public T {
Delegate<UIEvent> on_closed;
protected:
Window(const std::wstring& title) : T(0), title_(title) {}
Window(Loop* loop, const std::wstring& title)
: T(0), loop_(loop), title_(title) {}
void OnShow() {
if (is_visible_) {
@@ -87,8 +95,9 @@ class Window : public T {
virtual void OnCommand(int id) {}
MenuItem* menu_;
Loop* loop_ = nullptr;
std::wstring title_;
MenuItem* menu_ = nullptr;
};
} // namespace ui