CMake/Source/CursesDialog/cmCursesMainForm.h

165 lines
4.7 KiB
C
Raw Normal View History

/*============================================================================
CMake - Cross Platform Makefile Generator
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
2002-01-21 23:30:43 +03:00
Distributed under the OSI-approved BSD License (the "License");
see accompanying file Copyright.txt for details.
2002-01-21 23:30:43 +03:00
This software is distributed WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License for more information.
============================================================================*/
#ifndef cmCursesMainForm_h
#define cmCursesMainForm_h
2001-11-05 02:05:21 +03:00
#include "../cmStandardIncludes.h"
2001-11-05 02:05:21 +03:00
#include "cmCursesForm.h"
2001-11-05 21:24:44 +03:00
#include "cmCursesStandardIncludes.h"
2001-11-05 02:05:21 +03:00
class cmCursesCacheEntryComposite;
2002-11-19 21:09:16 +03:00
class cmCursesWidget;
class cmake;
2001-11-05 02:05:21 +03:00
2001-12-13 21:28:41 +03:00
/** \class cmCursesMainForm
* \brief The main page of ccmake
*
* cmCursesMainForm is the main page of ccmake.
*/
2001-11-05 02:05:21 +03:00
class cmCursesMainForm : public cmCursesForm
{
public:
cmCursesMainForm(std::vector<std::string> const& args, int initwidth);
2001-11-05 02:05:21 +03:00
virtual ~cmCursesMainForm();
2001-12-13 21:28:41 +03:00
/**
* Set the widgets which represent the cache entries.
*/
2001-11-30 00:44:22 +03:00
void InitializeUI();
2001-12-13 21:28:41 +03:00
/**
* Handle user input.
*/
2001-11-05 02:05:21 +03:00
virtual void HandleInput();
2001-12-13 21:28:41 +03:00
/**
* Display form. Use a window of size width x height, starting
* at top, left.
*/
2001-11-05 02:05:21 +03:00
virtual void Render(int left, int top, int width, int height);
2001-12-13 21:28:41 +03:00
/**
* Returns true if an entry with the given key is in the
* list of current composites.
*/
bool LookForCacheEntry(const std::string& key);
2001-11-05 02:05:21 +03:00
enum {
MIN_WIDTH = 65,
MIN_HEIGHT = 6,
IDEAL_WIDTH = 80,
MAX_WIDTH = 512
};
2001-11-06 06:10:52 +03:00
2001-12-13 21:28:41 +03:00
/**
2002-11-19 21:09:16 +03:00
* This method should normally be called only by the form. The only
* exception is during a resize. The optional argument specifies the
* string to be displayed in the status bar.
2001-12-13 21:28:41 +03:00
*/
virtual void UpdateStatusBar() { this->UpdateStatusBar(0); }
2002-11-19 21:09:16 +03:00
virtual void UpdateStatusBar(const char* message);
2001-11-06 06:10:52 +03:00
2001-12-13 21:28:41 +03:00
/**
2002-11-19 21:09:16 +03:00
* Display current commands and their keys on the toolbar. This
* method should normally called only by the form. The only
* exception is during a resize. If the optional argument process is
* specified and is either 1 (configure) or 2 (generate), then keys
* will be displayed accordingly.
2001-12-13 21:28:41 +03:00
*/
2002-11-19 21:09:16 +03:00
void PrintKeys(int process = 0);
2001-11-06 06:10:52 +03:00
2001-12-13 21:28:41 +03:00
/**
* During a CMake run, an error handle should add errors
* to be displayed afterwards.
*/
2001-11-30 00:44:22 +03:00
virtual void AddError(const char* message, const char* title);
2001-12-13 21:28:41 +03:00
/**
* Used to do a configure. If argument is specified, it does only the check
* and not configure.
2001-12-13 21:28:41 +03:00
*/
int Configure(int noconfigure=0);
2002-09-06 21:00:12 +04:00
/**
* Used to generate
2002-09-06 21:00:12 +04:00
*/
int Generate();
2001-11-30 00:44:22 +03:00
/**
* Used by main program
*/
int LoadCache(const char *dir);
2002-11-19 00:29:14 +03:00
/**
* Progress callback
*/
2002-11-19 21:09:16 +03:00
static void UpdateProgressOld(const char *msg, float prog, void*);
2002-11-19 00:29:14 +03:00
static void UpdateProgress(const char *msg, float prog, void*);
2001-11-05 02:05:21 +03:00
protected:
cmCursesMainForm(const cmCursesMainForm& from);
void operator=(const cmCursesMainForm&);
2001-12-13 21:28:41 +03:00
// Copy the cache values from the user interface to the actual
// cache.
2001-11-05 02:05:21 +03:00
void FillCacheManagerFromUI();
// Fix formatting of values to a consistent form.
void FixValue(cmCacheManager::CacheEntryType type,
const std::string& in, std::string& out) const;
2001-12-13 21:28:41 +03:00
// Re-post the existing fields. Used to toggle between
// normal and advanced modes. Render() should be called
// afterwards.
2001-11-30 00:44:22 +03:00
void RePost();
2001-12-13 21:28:41 +03:00
// Remove an entry from the interface and the cache.
2001-11-30 00:44:22 +03:00
void RemoveEntry(const char* value);
2001-11-05 02:05:21 +03:00
// Jump to the cache entry whose name matches the string.
void JumpToCacheEntry(const char* str);
2003-03-07 19:27:28 +03:00
2001-12-13 21:28:41 +03:00
// Copies of cache entries stored in the user interface
2006-03-16 18:44:55 +03:00
std::vector<cmCursesCacheEntryComposite*>* Entries;
2001-12-13 21:28:41 +03:00
// Errors produced during last run of cmake
2006-03-16 18:44:55 +03:00
std::vector<std::string> Errors;
2001-12-13 21:28:41 +03:00
// Command line argumens to be passed to cmake each time
// it is run
2006-03-16 18:44:55 +03:00
std::vector<std::string> Args;
2001-12-13 21:28:41 +03:00
// Message displayed when user presses 'h'
// It is: Welcome + info about current entry + common help
2006-03-16 18:44:55 +03:00
std::vector<std::string> HelpMessage;
2001-11-30 00:44:22 +03:00
2001-12-13 21:28:41 +03:00
// Common help
2001-11-30 00:44:22 +03:00
static const char* s_ConstHelpMessage;
2001-12-13 21:28:41 +03:00
// Fields displayed. Includes labels, new entry markers, entries
2006-03-16 18:44:55 +03:00
FIELD** Fields;
2001-12-13 21:28:41 +03:00
// Where is source of current project
2006-03-16 18:44:55 +03:00
std::string WhereSource;
2001-12-13 21:28:41 +03:00
// Where is cmake executable
2006-03-16 18:44:55 +03:00
std::string WhereCMake;
2001-12-13 21:28:41 +03:00
// Number of entries shown (depends on mode -normal or advanced-)
size_t NumberOfVisibleEntries;
2006-03-16 18:44:55 +03:00
bool AdvancedMode;
2001-12-13 21:28:41 +03:00
// Did the iteration converge (no new entries) ?
2006-03-16 18:44:55 +03:00
bool OkToGenerate;
2001-12-13 21:28:41 +03:00
// Number of pages displayed
2006-03-16 18:44:55 +03:00
int NumberOfPages;
2001-11-06 06:10:52 +03:00
2006-03-16 18:44:55 +03:00
int InitialWidth;
cmake *CMakeInstance;
2003-03-07 19:27:28 +03:00
2006-03-16 18:44:55 +03:00
std::string SearchString;
std::string OldSearchString;
bool SearchMode;
2001-11-05 02:05:21 +03:00
};
#endif // cmCursesMainForm_h