/*
* This file is part of Code::Blocks Studio, an open-source cross-platform IDE
* Copyright (C) 2003 Yiannis An. Mandravellos
*
*/
#ifndef PERSONALITYMANAGER_H
#define PERSONALITYMANAGER_H
#include "settings.h"
#include <wx/dynarray.h>
/** @brief Manage different personalities.
*
* Personalities are different profiles of appearence for Code::Blocks.
* For instance, the default personality is the full IDE. You could create
* a "Text editor" personality that is light-weight, tailored to "simple" text editing.
* In this example "Text editor" personality, the manager windows would be hidden
* and no plugins would be loaded, making Code::Blocks perfect for text editing
* (with all the powerful features of its embedded editor).
*
* The user can create as many personalities as needed. The work-in-progress
* file associations manager (win32 only) will work with personalities so that
* different file types launch Code::Blocks using a different personality...
*
* To select the desired personality when launching Code::Blocks, the user can
* use the command-line switch "--personality". If "--personality=ask" is passed
* in the command line, a selection box will be displayed for the user to choose
* the desired personality.
*
* @note: This class must be initialized *after* ConfigManager and MessageManager...
*/
class DLLIMPORT PersonalityManager
{
public:
friend class Manager; // give Manager access to our private members
/// Use this once, on program startup to set the working personality
void SetPersonality(const wxString& personality, bool createIfNotExist = false);
/// Get the working personality string
const wxString& GetPersonality();
/// Get a list of all the known personalities
const wxArrayString& GetPersonalitiesList();
/// Get the root configuration for personalities
const wxString& GetPersonalitiesRoot();
/// Get the current personality's configuration key (includes root key)
const wxString& GetPersonalityKey();
protected:
void ReadPersonalities();
wxArrayString m_Personalities;
int m_CurrentPersonalityIdx; // index to array
private:
static PersonalityManager* Get();
static void Free();
PersonalityManager();
~PersonalityManager();
};
#endif // PERSONALITYMANAGER_H
syntax highlighted by Code2HTML, v. 0.9.1