summaryrefslogtreecommitdiff
path: root/src/gui/localbrowser
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2013-03-24 12:24:17 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2013-03-24 12:24:17 (GMT)
commit9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d (patch)
treeac7d040253b459ce102e476cb19ab59e3cfa90d7 /src/gui/localbrowser
parent6bf98ccdca39936a3c51367862eed7c49f8786ec (diff)
parentbdc69f31c0be94191015838886bdcc2bc67f1acb (diff)
downloadpowder-9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d.zip
powder-9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d.tar.gz
Merge branch 'reorganisation' of github.com:FacialTurd/The-Powder-Toy
Diffstat (limited to 'src/gui/localbrowser')
-rw-r--r--src/gui/localbrowser/LocalBrowserController.cpp176
-rw-r--r--src/gui/localbrowser/LocalBrowserController.h36
-rw-r--r--src/gui/localbrowser/LocalBrowserModel.cpp146
-rw-r--r--src/gui/localbrowser/LocalBrowserModel.h41
-rw-r--r--src/gui/localbrowser/LocalBrowserModelException.h16
-rw-r--r--src/gui/localbrowser/LocalBrowserView.cpp216
-rw-r--r--src/gui/localbrowser/LocalBrowserView.h37
7 files changed, 668 insertions, 0 deletions
diff --git a/src/gui/localbrowser/LocalBrowserController.cpp b/src/gui/localbrowser/LocalBrowserController.cpp
new file mode 100644
index 0000000..a1a01ed
--- /dev/null
+++ b/src/gui/localbrowser/LocalBrowserController.cpp
@@ -0,0 +1,176 @@
+#include <sstream>
+
+#include "client/Client.h"
+#include "LocalBrowserController.h"
+#include "gui/interface/Engine.h"
+#include "gui/dialogues/ConfirmPrompt.h"
+#include "tasks/TaskWindow.h"
+#include "tasks/Task.h"
+
+#include "LocalBrowserModel.h"
+#include "LocalBrowserView.h"
+
+LocalBrowserController::LocalBrowserController(ControllerCallback * callback):
+ HasDone(false)
+{
+ browserModel = new LocalBrowserModel();
+ browserView = new LocalBrowserView();
+ browserView->AttachController(this);
+ browserModel->AddObserver(browserView);
+
+ this->callback = callback;
+
+ browserModel->UpdateSavesList(1);
+}
+
+void LocalBrowserController::OpenSave(SaveFile * save)
+{
+ browserModel->SetSave(save);
+}
+
+SaveFile * LocalBrowserController::GetSave()
+{
+ return browserModel->GetSave();
+}
+
+void LocalBrowserController::RemoveSelected()
+{
+ class RemoveSelectedConfirmation: public ConfirmDialogueCallback {
+ public:
+ LocalBrowserController * c;
+ RemoveSelectedConfirmation(LocalBrowserController * c_) { c = c_; }
+ virtual void ConfirmCallback(ConfirmPrompt::DialogueResult result) {
+ if (result == ConfirmPrompt::ResultOkay)
+ c->removeSelectedC();
+ }
+ virtual ~RemoveSelectedConfirmation() { }
+ };
+
+ std::stringstream desc;
+ desc << "Are you sure you want to delete " << browserModel->GetSelected().size() << " stamp";
+ if(browserModel->GetSelected().size()>1)
+ desc << "s";
+ new ConfirmPrompt("Delete stamps", desc.str(), new RemoveSelectedConfirmation(this));
+}
+
+void LocalBrowserController::removeSelectedC()
+{
+ class RemoveSavesTask : public Task
+ {
+ std::vector<std::string> saves;
+ LocalBrowserController * c;
+ public:
+ RemoveSavesTask(LocalBrowserController * c, std::vector<std::string> saves_) : c(c) { saves = saves_; }
+ virtual bool doWork()
+ {
+ for(int i = 0; i < saves.size(); i++)
+ {
+ std::stringstream saveName;
+ saveName << "Deleting stamp [" << saves[i] << "] ...";
+ notifyStatus(saveName.str());
+ Client::Ref().DeleteStamp(saves[i]);
+ notifyProgress((float(i+1)/float(saves.size())*100));
+ }
+ return true;
+ }
+ virtual void after()
+ {
+ c->RefreshSavesList();
+ }
+ };
+
+ std::vector<std::string> selected = browserModel->GetSelected();
+ new TaskWindow("Removing stamps", new RemoveSavesTask(this, selected));
+}
+
+void LocalBrowserController::RescanStamps()
+{
+ class RescanConfirmation: public ConfirmDialogueCallback {
+ public:
+ LocalBrowserController * c;
+ RescanConfirmation(LocalBrowserController * c_) { c = c_; }
+ virtual void ConfirmCallback(ConfirmPrompt::DialogueResult result) {
+ if (result == ConfirmPrompt::ResultOkay)
+ c->rescanStampsC();
+ }
+ virtual ~RescanConfirmation() { }
+ };
+
+ std::stringstream desc;
+ desc << "Rescanning the stamps folder can find stamps added to the stamps folder or recover stamps when the stamps.def file has been lost or damaged. However, be warned that this will mess up the current sorting order";
+ new ConfirmPrompt("Rescan", desc.str(), new RescanConfirmation(this));
+}
+
+void LocalBrowserController::rescanStampsC()
+{
+ browserModel->RescanStamps();
+ browserModel->UpdateSavesList(browserModel->GetPageNum());
+}
+
+void LocalBrowserController::RefreshSavesList()
+{
+ ClearSelection();
+ browserModel->UpdateSavesList(browserModel->GetPageNum());
+}
+
+void LocalBrowserController::ClearSelection()
+{
+ browserModel->ClearSelected();
+}
+
+void LocalBrowserController::NextPage()
+{
+ if(browserModel->GetPageNum() < browserModel->GetPageCount())
+ browserModel->UpdateSavesList(browserModel->GetPageNum()+1);
+}
+
+void LocalBrowserController::PrevPage()
+{
+ if(browserModel->GetPageNum()>1)
+ browserModel->UpdateSavesList(browserModel->GetPageNum()-1);
+}
+
+void LocalBrowserController::Update()
+{
+ if(browserModel->GetSave())
+ {
+ Exit();
+ }
+}
+
+void LocalBrowserController::Selected(std::string saveName, bool selected)
+{
+ if(selected)
+ browserModel->SelectSave(saveName);
+ else
+ browserModel->DeselectSave(saveName);
+}
+
+bool LocalBrowserController::GetMoveToFront()
+{
+ return browserModel->GetMoveToFront();
+}
+
+void LocalBrowserController::SetMoveToFront(bool move)
+{
+ browserModel->SetMoveToFront(move);
+}
+
+void LocalBrowserController::Exit()
+{
+ if(ui::Engine::Ref().GetWindow() == browserView)
+ ui::Engine::Ref().CloseWindow();
+ if(callback)
+ callback->ControllerExit();
+ HasDone = true;
+}
+
+LocalBrowserController::~LocalBrowserController() {
+ if(ui::Engine::Ref().GetWindow() == browserView)
+ ui::Engine::Ref().CloseWindow();
+ if(callback)
+ delete callback;
+ delete browserModel;
+ delete browserView;
+}
+
diff --git a/src/gui/localbrowser/LocalBrowserController.h b/src/gui/localbrowser/LocalBrowserController.h
new file mode 100644
index 0000000..6dcf2a5
--- /dev/null
+++ b/src/gui/localbrowser/LocalBrowserController.h
@@ -0,0 +1,36 @@
+#ifndef STAMPSCONTROLLER_H_
+#define STAMPSCONTROLLER_H_
+
+#include "Controller.h"
+#include "LocalBrowserView.h"
+#include "client/SaveInfo.h"
+
+class LocalBrowserView;
+class LocalBrowserModel;
+class LocalBrowserController {
+ ControllerCallback * callback;
+ LocalBrowserView * browserView;
+ LocalBrowserModel * browserModel;
+public:
+ bool HasDone;
+ LocalBrowserController(ControllerCallback * callback);
+ LocalBrowserView * GetView() {return browserView;}
+ SaveFile * GetSave();
+ void RemoveSelected();
+ void removeSelectedC();
+ void ClearSelection();
+ void Selected(std::string stampID, bool selected);
+ void RescanStamps();
+ void rescanStampsC();
+ void RefreshSavesList();
+ void OpenSave(SaveFile * stamp);
+ bool GetMoveToFront();
+ void SetMoveToFront(bool move);
+ void NextPage();
+ void PrevPage();
+ void Update();
+ void Exit();
+ virtual ~LocalBrowserController();
+};
+
+#endif /* STAMPSCONTROLLER_H_ */
diff --git a/src/gui/localbrowser/LocalBrowserModel.cpp b/src/gui/localbrowser/LocalBrowserModel.cpp
new file mode 100644
index 0000000..333e845
--- /dev/null
+++ b/src/gui/localbrowser/LocalBrowserModel.cpp
@@ -0,0 +1,146 @@
+#include "LocalBrowserModel.h"
+#include "LocalBrowserView.h"
+#include "LocalBrowserModelException.h"
+#include "client/Client.h"
+#include "client/SaveFile.h"
+
+LocalBrowserModel::LocalBrowserModel():
+ stamp(NULL),
+ currentPage(1),
+ stampToFront(1)
+{
+ //stampIDs = Client::Ref().GetStamps();
+ stampIDs = Client::Ref().GetStamps(0, 16);
+}
+
+
+std::vector<SaveFile*> LocalBrowserModel::GetSavesList()
+{
+ return savesList;
+}
+
+void LocalBrowserModel::AddObserver(LocalBrowserView * observer)
+{
+ observers.push_back(observer);
+ observer->NotifySavesListChanged(this);
+ observer->NotifyPageChanged(this);
+}
+
+void LocalBrowserModel::notifySavesListChanged()
+{
+ for(int i = 0; i < observers.size(); i++)
+ {
+ observers[i]->NotifySavesListChanged(this);
+ }
+}
+
+void LocalBrowserModel::notifyPageChanged()
+{
+ for(int i = 0; i < observers.size(); i++)
+ {
+ observers[i]->NotifyPageChanged(this);
+ }
+}
+
+SaveFile * LocalBrowserModel::GetSave()
+{
+ return stamp;
+}
+
+void LocalBrowserModel::SetSave(SaveFile * newStamp)
+{
+ if(stamp)
+ delete stamp;
+ stamp = new SaveFile(*newStamp);
+}
+
+bool LocalBrowserModel::GetMoveToFront()
+{
+ return stampToFront;
+}
+
+void LocalBrowserModel::SetMoveToFront(bool move)
+{
+ stampToFront = move;
+}
+
+void LocalBrowserModel::UpdateSavesList(int pageNumber)
+{
+ std::vector<SaveFile*> tempSavesList = savesList;
+ savesList.clear();
+ currentPage = pageNumber;
+ notifyPageChanged();
+ notifySavesListChanged();
+ //notifyStampsListChanged();
+ /*for(int i = 0; i < tempSavesList.size(); i++)
+ {
+ delete tempSavesList[i];
+ }*/
+
+ stampIDs = Client::Ref().GetStamps((pageNumber-1)*20, 20);
+
+ for(int i = 0; i<stampIDs.size(); i++)
+ {
+ SaveFile * tempSave = Client::Ref().GetStamp(stampIDs[i]);
+ if(tempSave)
+ {
+ savesList.push_back(tempSave);
+ }
+ }
+ notifySavesListChanged();
+}
+
+void LocalBrowserModel::RescanStamps()
+{
+ Client::Ref().RescanStamps();
+}
+
+int LocalBrowserModel::GetPageCount()
+{
+ return std::max(1, (int)(std::ceil(float(Client::Ref().GetStampsCount())/20.0f)));
+}
+
+void LocalBrowserModel::SelectSave(std::string stampID)
+{
+ for(int i = 0; i < selected.size(); i++)
+ {
+ if(selected[i]==stampID)
+ {
+ return;
+ }
+ }
+ selected.push_back(stampID);
+ notifySelectedChanged();
+}
+
+void LocalBrowserModel::DeselectSave(std::string stampID)
+{
+ bool changed = false;
+restart:
+ for(int i = 0; i < selected.size(); i++)
+ {
+ if(selected[i]==stampID)
+ {
+ selected.erase(selected.begin()+i);
+ changed = true;
+ goto restart; //Just ensure all cases are removed.
+ }
+ }
+ if(changed)
+ notifySelectedChanged();
+}
+
+void LocalBrowserModel::notifySelectedChanged()
+{
+ for(int i = 0; i < observers.size(); i++)
+ {
+ LocalBrowserView* cObserver = observers[i];
+ cObserver->NotifySelectedChanged(this);
+ }
+}
+
+LocalBrowserModel::~LocalBrowserModel() {
+ if(stamp)
+ delete stamp;
+}
+
diff --git a/src/gui/localbrowser/LocalBrowserModel.h b/src/gui/localbrowser/LocalBrowserModel.h
new file mode 100644
index 0000000..75167d9
--- /dev/null
+++ b/src/gui/localbrowser/LocalBrowserModel.h
@@ -0,0 +1,41 @@
+#ifndef STAMPSMODEL_H_
+#define STAMPSMODEL_H_
+
+#include <vector>
+#include <string>
+#include <cmath>
+
+class SaveFile;
+
+class LocalBrowserView;
+class LocalBrowserModel {
+ std::vector<std::string> selected;
+ SaveFile * stamp;
+ std::vector<std::string> stampIDs;
+ std::vector<SaveFile*> savesList;
+ std::vector<LocalBrowserView*> observers;
+ int currentPage;
+ bool stampToFront;
+ void notifySavesListChanged();
+ void notifyPageChanged();
+ void notifySelectedChanged();
+public:
+ LocalBrowserModel();
+ int GetPageCount();
+ int GetPageNum() { return currentPage; }
+ void AddObserver(LocalBrowserView * observer);
+ std::vector<SaveFile *> GetSavesList();
+ void UpdateSavesList(int pageNumber);
+ void RescanStamps();
+ SaveFile * GetSave();
+ void SetSave(SaveFile * newStamp);
+ bool GetMoveToFront();
+ void SetMoveToFront(bool move);
+ std::vector<std::string> GetSelected() { return selected; }
+ void ClearSelected() { selected.clear(); notifySelectedChanged(); }
+ void SelectSave(std::string stampID);
+ void DeselectSave(std::string stampID);
+ virtual ~LocalBrowserModel();
+};
+
+#endif /* STAMPSMODEL_H_ */
diff --git a/src/gui/localbrowser/LocalBrowserModelException.h b/src/gui/localbrowser/LocalBrowserModelException.h
new file mode 100644
index 0000000..5146c53
--- /dev/null
+++ b/src/gui/localbrowser/LocalBrowserModelException.h
@@ -0,0 +1,16 @@
+#ifndef STAMPSMODELEXCEPTION_H_
+#define STAMPSMODELEXCEPTION_H_
+
+#include <string>
+#include <exception>
+using namespace std;
+
+class LocalBrowserModelException {
+ string message;
+public:
+ LocalBrowserModelException(string message_): message(message_) {};
+ const char * what() const throw() { return message.c_str(); };
+ ~LocalBrowserModelException() throw() {};
+};
+
+#endif /* STAMPSMODELEXCEPTION_H_ */
diff --git a/src/gui/localbrowser/LocalBrowserView.cpp b/src/gui/localbrowser/LocalBrowserView.cpp
new file mode 100644
index 0000000..a25c281
--- /dev/null
+++ b/src/gui/localbrowser/LocalBrowserView.cpp
@@ -0,0 +1,216 @@
+#include <sstream>
+#include "client/Client.h"
+#include "LocalBrowserView.h"
+
+#include "gui/interface/Button.h"
+#include "gui/interface/Textbox.h"
+#include "gui/interface/Label.h"
+#include "gui/interface/SaveButton.h"
+#include "gui/interface/Keys.h"
+
+#include "gui/dialogues/ErrorMessage.h"
+#include "gui/dialogues/ConfirmPrompt.h"
+#include "LocalBrowserController.h"
+#include "LocalBrowserModel.h"
+#include "LocalBrowserModelException.h"
+
+LocalBrowserView::LocalBrowserView():
+ ui::Window(ui::Point(0, 0), ui::Point(XRES+BARSIZE, YRES+MENUSIZE))
+{
+ nextButton = new ui::Button(ui::Point(XRES+BARSIZE-52, YRES+MENUSIZE-18), ui::Point(50, 16), "Next \x95");
+ previousButton = new ui::Button(ui::Point(1, YRES+MENUSIZE-18), ui::Point(50, 16), "\x96 Prev");
+ undeleteButton = new ui::Button(ui::Point(XRES+BARSIZE-122, YRES+MENUSIZE-18), ui::Point(60, 16), "Rescan");
+ infoLabel = new ui::Label(ui::Point(51, YRES+MENUSIZE-18), ui::Point(XRES+BARSIZE-102, 16), "Loading...");
+ AddComponent(infoLabel);
+ AddComponent(nextButton);
+ AddComponent(previousButton);
+ AddComponent(undeleteButton);
+
+ class NextPageAction : public ui::ButtonAction
+ {
+ LocalBrowserView * v;
+ public:
+ NextPageAction(LocalBrowserView * _v) { v = _v; }
+ void ActionCallback(ui::Button * sender)
+ {
+ v->c->NextPage();
+ }
+ };
+ nextButton->SetActionCallback(new NextPageAction(this));
+ nextButton->Appearance.HorizontalAlign = ui::Appearance::AlignRight;
+ nextButton->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
+
+ class PrevPageAction : public ui::ButtonAction
+ {
+ LocalBrowserView * v;
+ public:
+ PrevPageAction(LocalBrowserView * _v) { v = _v; }
+ void ActionCallback(ui::Button * sender)
+ {
+ v->c->PrevPage();
+ }
+ };
+ previousButton->SetActionCallback(new PrevPageAction(this));
+ previousButton->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
+ previousButton->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
+
+ class UndeleteAction : public ui::ButtonAction
+ {
+ LocalBrowserView * v;
+ public:
+ UndeleteAction(LocalBrowserView * _v) { v = _v; }
+ void ActionCallback(ui::Button * sender)
+ {
+ v->c->RescanStamps();
+ }
+ };
+ undeleteButton->SetActionCallback(new UndeleteAction(this));
+
+ class RemoveSelectedAction : public ui::ButtonAction
+ {
+ LocalBrowserView * v;
+ public:
+ RemoveSelectedAction(LocalBrowserView * _v) { v = _v; }
+ void ActionCallback(ui::Button * sender)
+ {
+ v->c->RemoveSelected();
+ }
+ };
+
+ removeSelected = new ui::Button(ui::Point((((XRES+BARSIZE)-100)/2), YRES+MENUSIZE-18), ui::Point(100, 16), "Delete");
+ removeSelected->Visible = false;
+ removeSelected->SetActionCallback(new RemoveSelectedAction(this));
+ AddComponent(removeSelected);
+}
+
+void LocalBrowserView::OnTick(float dt)
+{
+ c->Update();
+}
+
+void LocalBrowserView::NotifyPageChanged(LocalBrowserModel * sender)
+{
+ std::stringstream pageInfo;
+ pageInfo << "Page " << sender->GetPageNum() << " of " << sender->GetPageCount();
+ infoLabel->SetText(pageInfo.str());
+ if(sender->GetPageNum() == 1)
+ {
+ previousButton->Visible = false;
+ }
+ else
+ {
+ previousButton->Visible = true;
+ }
+ if(sender->GetPageNum() == sender->GetPageCount())
+ {
+ nextButton->Visible = false;
+ }
+ else
+ {
+ nextButton->Visible = true;
+ }
+}
+
+void LocalBrowserView::NotifySavesListChanged(LocalBrowserModel * sender)
+{
+ int i = 0;
+ int buttonWidth, buttonHeight, saveX = 0, saveY = 0, savesX = 5, savesY = 4, buttonPadding = 2;
+ int buttonAreaWidth, buttonAreaHeight, buttonXOffset, buttonYOffset;
+
+ vector<SaveFile*> saves = sender->GetSavesList();
+ for(i = 0; i < stampButtons.size(); i++)
+ {
+ RemoveComponent(stampButtons[i]);
+ delete stampButtons[i];
+ }
+ stampButtons.clear();
+ buttonXOffset = 0;
+ buttonYOffset = 50;
+ buttonAreaWidth = Size.X;
+ buttonAreaHeight = Size.Y - buttonYOffset - 18;
+ buttonWidth = (buttonAreaWidth/savesX) - buttonPadding*2;
+ buttonHeight = (buttonAreaHeight/savesY) - buttonPadding*2;
+ class SaveOpenAction: public ui::SaveButtonAction
+ {
+ LocalBrowserView * v;
+ public:
+ SaveOpenAction(LocalBrowserView * _v) { v = _v; }
+ virtual void ActionCallback(ui::SaveButton * sender)
+ {
+ if(sender->GetSaveFile())
+ v->c->OpenSave(sender->GetSaveFile());
+ }
+ virtual void SelectedCallback(ui::SaveButton * sender)
+ {
+ if(sender->GetSaveFile())
+ v->c->Selected(sender->GetSaveFile()->GetName(), sender->GetSelected());
+ }
+ };
+ for(i = 0; i < saves.size(); i++)
+ {
+ if(saveX == savesX)
+ {
+ if(saveY == savesY-1)
+ break;
+ saveX = 0;
+ saveY++;
+ }
+ ui::SaveButton * saveButton;
+ saveButton = new ui::SaveButton(
+ ui::Point(
+ buttonXOffset + buttonPadding + saveX*(buttonWidth+buttonPadding*2),
+ buttonYOffset + buttonPadding + saveY*(buttonHeight+buttonPadding*2)
+ ),
+ ui::Point(buttonWidth, buttonHeight),
+ saves[i]);
+ saveButton->SetSelectable(true);
+ saveButton->SetActionCallback(new SaveOpenAction(this));
+ stampButtons.push_back(saveButton);
+ AddComponent(saveButton);
+ saveX++;
+ }
+}
+
+void LocalBrowserView::NotifySelectedChanged(LocalBrowserModel * sender)
+{
+ vector<std::string> selected = sender->GetSelected();
+ for(int j = 0; j < stampButtons.size(); j++)
+ {
+ stampButtons[j]->SetSelected(false);
+ for(int i = 0; i < selected.size(); i++)
+ {
+ if(stampButtons[j]->GetSaveFile()->GetName()==selected[i])
+ stampButtons[j]->SetSelected(true);
+ }
+ }
+
+ if(selected.size())
+ {
+ removeSelected->Visible = true;
+ }
+ else
+ removeSelected->Visible = false;
+}
+
+void LocalBrowserView::OnMouseWheel(int x, int y, int d)
+{
+ if(!d)
+ return;
+ if(d<0)
+ c->NextPage();
+ else
+ c->PrevPage();
+}
+void LocalBrowserView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt)
+{
+ if(key == KEY_ESCAPE)
+ c->Exit();
+ if (key == KEY_CTRL)
+ c->SetMoveToFront(false);
+ else
+ c->SetMoveToFront(true);
+}
+
+LocalBrowserView::~LocalBrowserView() {
+}
+
diff --git a/src/gui/localbrowser/LocalBrowserView.h b/src/gui/localbrowser/LocalBrowserView.h
new file mode 100644
index 0000000..02aca28
--- /dev/null
+++ b/src/gui/localbrowser/LocalBrowserView.h
@@ -0,0 +1,37 @@
+#ifndef STAMPSVIEW_H_
+#define STAMPSVIEW_H_
+
+#include <vector>
+#include "gui/interface/Window.h"
+
+namespace ui
+{
+ class Label;
+ class Button;
+ class SaveButton;
+}
+
+class LocalBrowserController;
+class LocalBrowserModel;
+class LocalBrowserView: public ui::Window {
+ LocalBrowserController * c;
+ std::vector<ui::SaveButton*> stampButtons;
+ ui::Button * undeleteButton;
+ ui::Button * previousButton;
+ ui::Button * nextButton;
+ ui::Label * infoLabel;
+ ui::Button * removeSelected;
+public:
+ LocalBrowserView();
+ //virtual void OnDraw();
+ virtual void OnTick(float dt);
+ void AttachController(LocalBrowserController * c_) { c = c_; };
+ void NotifyPageChanged(LocalBrowserModel * sender);
+ void NotifySavesListChanged(LocalBrowserModel * sender);
+ void NotifySelectedChanged(LocalBrowserModel * sender);
+ virtual void OnMouseWheel(int x, int y, int d);
+ virtual void OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt);
+ virtual ~LocalBrowserView();
+};
+
+#endif /* STAMPSVIEW_H_ */