Remove "static" member functions from RecentFiles. Now App has a RecentFiles member and it must be accessed through the App singleton.

This commit is contained in:
David Capello 2010-09-18 00:28:24 -03:00
parent 99adf98c0f
commit 1f88934542
7 changed files with 44 additions and 33 deletions

View File

@ -88,7 +88,7 @@ public:
RasterModule m_raster;
CommandsModule m_commands_modules;
UIContext m_ui_context;
RecentFiles m_recent_files_module;
RecentFiles m_recent_files;
};
class TabsBarHandler : public ITabsHandler
@ -261,7 +261,7 @@ int App::run()
set_sprite_in_more_reliable_editor(context->get_first_sprite());
// Recent file
RecentFiles::addRecentFile(Vaca::convert_to<std::string>(option->data()).c_str());
getRecentFiles()->addRecentFile(Vaca::convert_to<std::string>(option->data()).c_str());
}
}
break;
@ -332,12 +332,18 @@ App::~App()
}
}
ToolBox* App::get_toolbox()
ToolBox* App::get_toolbox() const
{
ASSERT(m_modules != NULL);
return &m_modules->m_toolbox;
}
RecentFiles* App::getRecentFiles() const
{
ASSERT(m_modules != NULL);
return &m_modules->m_recent_files;
}
/**
* Updates palette and redraw the screen.
*/
@ -399,8 +405,8 @@ bool app_realloc_recent_list()
submenu = jmenu_new();
jmenuitem_set_submenu(list_menuitem, submenu);
RecentFiles::const_iterator it = RecentFiles::begin();
RecentFiles::const_iterator end = RecentFiles::end();
RecentFiles::const_iterator it = App::instance()->getRecentFiles()->begin();
RecentFiles::const_iterator end = App::instance()->getRecentFiles()->end();
if (it != end) {
Params params;

View File

@ -33,6 +33,7 @@ class ToolBox;
class ColorBar;
class StatusBar;
class Tabs;
class RecentFiles;
class App
{
@ -51,7 +52,8 @@ public:
int run();
ToolBox* get_toolbox();
ToolBox* get_toolbox() const;
RecentFiles* getRecentFiles() const;
// App Signals
Vaca::Signal0<void> Exit;

View File

@ -192,7 +192,7 @@ void OpenFileCommand::onExecute(Context* context)
if (sprite) {
UIContext* context = UIContext::instance();
RecentFiles::addRecentFile(fop->filename);
App::instance()->getRecentFiles()->addRecentFile(fop->filename);
context->add_sprite(sprite);
set_sprite_in_more_reliable_editor(sprite);
@ -214,7 +214,7 @@ void OpenFileCommand::onExecute(Context* context)
// The file was not found or was loaded loaded with errors,
// so we can remove it from the recent-file list
if (unrecent) {
RecentFiles::removeRecentFile(m_filename.c_str());
App::instance()->getRecentFiles()->removeRecentFile(m_filename.c_str());
}
}
else {

View File

@ -128,7 +128,7 @@ static void save_sprite_in_background(Sprite* sprite, bool mark_as_saved)
}
/* no error? */
else {
RecentFiles::addRecentFile(sprite->getFilename());
App::instance()->getRecentFiles()->addRecentFile(sprite->getFilename());
if (mark_as_saved)
sprite->markAsSaved();

View File

@ -427,8 +427,9 @@ static void update_location(JWidget window)
std::set<std::string> included;
// For each recent file...
RecentFiles::const_iterator it;
for (it = RecentFiles::begin(); it != RecentFiles::end(); ++it) {
RecentFiles::const_iterator it = App::instance()->getRecentFiles()->begin();
RecentFiles::const_iterator end = App::instance()->getRecentFiles()->end();
for (; it != end; ++it) {
// Get the path of the recent file
std::string path = jstring(*it).filepath();

View File

@ -27,16 +27,14 @@
#include "modules/gui.h"
#include "recent_files.h"
static RecentFiles::FilesList recent_files;
static int recent_files_limit = 16;
RecentFiles::RecentFiles()
: m_limit(16)
{
const char *filename;
const char* filename;
char buf[512];
int c;
for (c=recent_files_limit-1; c>=0; c--) {
for (c=m_limit-1; c>=0; c--) {
sprintf(buf, "Filename%02d", c);
filename = get_config_string("RecentFiles", buf, NULL);
@ -57,28 +55,28 @@ RecentFiles::~RecentFiles()
c++;
}
recent_files.clear();
m_files.clear();
}
RecentFiles::const_iterator RecentFiles::begin()
{
return recent_files.begin();
return m_files.begin();
}
RecentFiles::const_iterator RecentFiles::end()
{
return recent_files.end();
return m_files.end();
}
void RecentFiles::addRecentFile(const char* filename)
{
iterator it = std::find(recent_files.begin(), recent_files.end(), filename);
iterator it = std::find(m_files.begin(), m_files.end(), filename);
// If the filename already exist in the list...
if (it != recent_files.end()) {
if (it != m_files.end()) {
// Move it to the first position
recent_files.erase(it);
recent_files.insert(recent_files.begin(), filename);
m_files.erase(it);
m_files.insert(m_files.begin(), filename);
schedule_rebuild_recent_list();
return;
}
@ -86,21 +84,21 @@ void RecentFiles::addRecentFile(const char* filename)
// If the filename does not exist...
// Does the list is full?
if ((int)recent_files.size() == recent_files_limit) {
if ((int)m_files.size() == m_limit) {
// Remove the last entry
recent_files.erase(--recent_files.end());
m_files.erase(--m_files.end());
}
recent_files.insert(recent_files.begin(), filename);
m_files.insert(m_files.begin(), filename);
schedule_rebuild_recent_list();
}
void RecentFiles::removeRecentFile(const char* filename)
{
iterator it = std::find(recent_files.begin(), recent_files.end(), filename);
iterator it = std::find(m_files.begin(), m_files.end(), filename);
if (it != recent_files.end()) {
recent_files.erase(it);
if (it != m_files.end()) {
m_files.erase(it);
schedule_rebuild_recent_list();
}

View File

@ -29,14 +29,18 @@ public:
typedef FilesList::iterator iterator;
typedef FilesList::const_iterator const_iterator;
static const_iterator begin();
static const_iterator end();
const_iterator begin();
const_iterator end();
RecentFiles();
~RecentFiles();
static void addRecentFile(const char* filename);
static void removeRecentFile(const char* filename);
void addRecentFile(const char* filename);
void removeRecentFile(const char* filename);
private:
RecentFiles::FilesList m_files;
int m_limit;
};
#endif