mirror of
https://github.com/reactos/CMake.git
synced 2024-11-29 06:20:23 +00:00
ENH: Save and Load of recent Source and Binary directories added.
This commit is contained in:
parent
0136329482
commit
2f76c425ef
@ -2,6 +2,14 @@
|
||||
|
||||
#include "CMakeSetupGUI.h"
|
||||
|
||||
inline void CMakeSetupGUI::cb_dialogWindow_i(Fl_Window*, void*) {
|
||||
recentSourceDirectoriesBrowser->hide();
|
||||
recentBinaryDirectoriesBrowser->hide();
|
||||
}
|
||||
void CMakeSetupGUI::cb_dialogWindow(Fl_Window* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->user_data()))->cb_dialogWindow_i(o,v);
|
||||
}
|
||||
|
||||
inline void CMakeSetupGUI::cb_sourcePathTextInput_i(Fl_Input*, void*) {
|
||||
SetSourcePath( sourcePathTextInput->value() );
|
||||
}
|
||||
@ -44,18 +52,46 @@ void CMakeSetupGUI::cb_Build(Fl_Button* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_Build_i(o,v);
|
||||
}
|
||||
|
||||
inline void CMakeSetupGUI::cb_2_i(Fl_Button*, void*) {
|
||||
ShowRecentSourceDirectories();
|
||||
}
|
||||
void CMakeSetupGUI::cb_2(Fl_Button* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_2_i(o,v);
|
||||
}
|
||||
|
||||
inline void CMakeSetupGUI::cb_21_i(Fl_Button*, void*) {
|
||||
ShowRecentBinaryDirectories();
|
||||
}
|
||||
void CMakeSetupGUI::cb_21(Fl_Button* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_21_i(o,v);
|
||||
}
|
||||
|
||||
inline void CMakeSetupGUI::cb_recentSourceDirectoriesBrowser_i(Fl_Browser*, void*) {
|
||||
SelectOneRecentSourceDirectory();
|
||||
}
|
||||
void CMakeSetupGUI::cb_recentSourceDirectoriesBrowser(Fl_Browser* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_recentSourceDirectoriesBrowser_i(o,v);
|
||||
}
|
||||
|
||||
inline void CMakeSetupGUI::cb_recentBinaryDirectoriesBrowser_i(Fl_Browser*, void*) {
|
||||
SelectOneRecentBinaryDirectory();
|
||||
}
|
||||
void CMakeSetupGUI::cb_recentBinaryDirectoriesBrowser(Fl_Browser* o, void* v) {
|
||||
((CMakeSetupGUI*)(o->parent()->user_data()))->cb_recentBinaryDirectoriesBrowser_i(o,v);
|
||||
}
|
||||
|
||||
CMakeSetupGUI::CMakeSetupGUI() {
|
||||
Fl_Window* w;
|
||||
{ Fl_Window* o = dialogWindow = new Fl_Window(563, 363, "CMakeSetupDialog");
|
||||
w = o;
|
||||
o->user_data((void*)(this));
|
||||
o->callback((Fl_Callback*)cb_dialogWindow, (void*)(this));
|
||||
{ Fl_Input* o = sourcePathTextInput = new Fl_Input(219, 15, 200, 20, "Where is the source code: ");
|
||||
o->labelsize(11);
|
||||
o->textsize(11);
|
||||
o->callback((Fl_Callback*)cb_sourcePathTextInput);
|
||||
o->when(FL_WHEN_ENTER_KEY);
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(426, 14, 65, 22, "Browse...");
|
||||
{ Fl_Button* o = new Fl_Button(453, 14, 65, 22, "Browse...");
|
||||
o->shortcut(0x80073);
|
||||
o->labelsize(11);
|
||||
o->callback((Fl_Callback*)cb_Browse);
|
||||
@ -66,7 +102,7 @@ CMakeSetupGUI::CMakeSetupGUI() {
|
||||
o->callback((Fl_Callback*)cb_binaryPathTextInput);
|
||||
o->when(FL_WHEN_ENTER_KEY);
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(426, 50, 65, 22, "Browse...");
|
||||
{ Fl_Button* o = new Fl_Button(453, 49, 65, 22, "Browse...");
|
||||
o->shortcut(0x80062);
|
||||
o->labelsize(11);
|
||||
o->callback((Fl_Callback*)cb_Browse1);
|
||||
@ -104,6 +140,26 @@ CMakeSetupGUI::CMakeSetupGUI() {
|
||||
{ Fl_Box* o = new Fl_Box(141, 305, 275, 25, "Right click on cache entries for additional options");
|
||||
o->labelsize(11);
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(420, 15, 22, 21, "@#2>");
|
||||
o->labeltype(FL_SYMBOL_LABEL);
|
||||
o->callback((Fl_Callback*)cb_2);
|
||||
}
|
||||
{ Fl_Button* o = new Fl_Button(420, 50, 22, 21, "@#2>");
|
||||
o->labeltype(FL_SYMBOL_LABEL);
|
||||
o->callback((Fl_Callback*)cb_21);
|
||||
}
|
||||
{ Fl_Browser* o = recentSourceDirectoriesBrowser = new Fl_Browser(15, 35, 535, 115);
|
||||
o->type(2);
|
||||
o->box(FL_BORDER_BOX);
|
||||
o->callback((Fl_Callback*)cb_recentSourceDirectoriesBrowser);
|
||||
o->hide();
|
||||
}
|
||||
{ Fl_Browser* o = recentBinaryDirectoriesBrowser = new Fl_Browser(15, 70, 535, 115);
|
||||
o->type(2);
|
||||
o->box(FL_BORDER_BOX);
|
||||
o->callback((Fl_Callback*)cb_recentBinaryDirectoriesBrowser);
|
||||
o->hide();
|
||||
}
|
||||
o->end();
|
||||
}
|
||||
}
|
||||
@ -131,3 +187,15 @@ bool CMakeSetupGUI::SetBinaryPath(const char *) {
|
||||
|
||||
bool CMakeSetupGUI::SetSourcePath(const char *) {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::ShowRecentBinaryDirectories(void) {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::ShowRecentSourceDirectories(void) {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::SelectOneRecentBinaryDirectory(void) {
|
||||
}
|
||||
|
||||
void CMakeSetupGUI::SelectOneRecentSourceDirectory(void) {
|
||||
}
|
||||
|
@ -7,11 +7,13 @@ gridy 5
|
||||
snap 3
|
||||
class CMakeSetupGUI {open
|
||||
} {
|
||||
Function {CMakeSetupGUI()} {open selected
|
||||
Function {CMakeSetupGUI()} {open
|
||||
} {
|
||||
Fl_Window dialogWindow {
|
||||
label CMakeSetupDialog
|
||||
xywh {190 106 563 363} resizable visible
|
||||
callback {recentSourceDirectoriesBrowser->hide();
|
||||
recentBinaryDirectoriesBrowser->hide();} open selected
|
||||
xywh {645 144 563 363} resizable visible
|
||||
} {
|
||||
Fl_Input sourcePathTextInput {
|
||||
label {Where is the source code: }
|
||||
@ -21,7 +23,7 @@ class CMakeSetupGUI {open
|
||||
Fl_Button {} {
|
||||
label {Browse...}
|
||||
callback {BrowseForSourcePath();}
|
||||
xywh {426 14 65 22} shortcut 0x80073 labelsize 11
|
||||
xywh {453 14 65 22} shortcut 0x80073 labelsize 11
|
||||
}
|
||||
Fl_Input binaryPathTextInput {
|
||||
label {Where do you want to build the binaries: }
|
||||
@ -31,11 +33,11 @@ class CMakeSetupGUI {open
|
||||
Fl_Button {} {
|
||||
label {Browse...}
|
||||
callback {BrowseForBinaryPath();}
|
||||
xywh {426 50 65 22} shortcut 0x80062 labelsize 11
|
||||
xywh {453 49 65 22} shortcut 0x80062 labelsize 11
|
||||
}
|
||||
Fl_Button {} {
|
||||
label Close
|
||||
callback {Close()}
|
||||
callback {Close();}
|
||||
xywh {345 331 77 23} shortcut 0x80071 labelsize 11
|
||||
}
|
||||
Fl_Button {} {
|
||||
@ -43,7 +45,7 @@ class CMakeSetupGUI {open
|
||||
callback {BuildProjectFiles();}
|
||||
xywh {123 332 101 23} shortcut 0x8006d labelsize 11
|
||||
}
|
||||
Fl_Group {} {open
|
||||
Fl_Group {} {
|
||||
xywh {25 80 515 222} box ENGRAVED_BOX labelsize 11 align 0 resizable
|
||||
} {
|
||||
Fl_Scroll cacheValuesScroll {
|
||||
@ -59,6 +61,24 @@ class CMakeSetupGUI {open
|
||||
label {Right click on cache entries for additional options}
|
||||
xywh {141 305 275 25} labelsize 11
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {@\#2>}
|
||||
callback {ShowRecentSourceDirectories();}
|
||||
xywh {420 15 22 21} labeltype SYMBOL_LABEL
|
||||
}
|
||||
Fl_Button {} {
|
||||
label {@\#2>}
|
||||
callback {ShowRecentBinaryDirectories();}
|
||||
xywh {420 50 22 21} labeltype SYMBOL_LABEL
|
||||
}
|
||||
Fl_Browser recentSourceDirectoriesBrowser {
|
||||
callback {SelectOneRecentSourceDirectory();}
|
||||
xywh {15 35 535 115} type Hold box BORDER_BOX hide
|
||||
}
|
||||
Fl_Browser recentBinaryDirectoriesBrowser {
|
||||
callback {SelectOneRecentBinaryDirectory();}
|
||||
xywh {15 70 535 115} type Hold box BORDER_BOX hide
|
||||
}
|
||||
}
|
||||
}
|
||||
Function {~CMakeSetupGUI()} {} {}
|
||||
@ -76,4 +96,12 @@ class CMakeSetupGUI {open
|
||||
} {}
|
||||
Function {SetSourcePath(const char *)} {return_type {virtual bool}
|
||||
} {}
|
||||
Function {ShowRecentBinaryDirectories(void)} {return_type {virtual void}
|
||||
} {}
|
||||
Function {ShowRecentSourceDirectories(void)} {return_type {virtual void}
|
||||
} {}
|
||||
Function {SelectOneRecentBinaryDirectory(void)} {return_type {virtual void}
|
||||
} {}
|
||||
Function {SelectOneRecentSourceDirectory(void)} {return_type {virtual void}
|
||||
} {}
|
||||
}
|
||||
|
@ -10,11 +10,16 @@
|
||||
#include <FL/Fl_Scroll.H>
|
||||
#include <FL/Fl_Pack.H>
|
||||
#include <FL/Fl_Box.H>
|
||||
#include <FL/Fl_Browser.H>
|
||||
|
||||
class CMakeSetupGUI {
|
||||
public:
|
||||
CMakeSetupGUI();
|
||||
Fl_Window *dialogWindow;
|
||||
private:
|
||||
inline void cb_dialogWindow_i(Fl_Window*, void*);
|
||||
static void cb_dialogWindow(Fl_Window*, void*);
|
||||
public:
|
||||
Fl_Input *sourcePathTextInput;
|
||||
private:
|
||||
inline void cb_sourcePathTextInput_i(Fl_Input*, void*);
|
||||
@ -35,6 +40,22 @@ private:
|
||||
public:
|
||||
Fl_Scroll *cacheValuesScroll;
|
||||
Fl_Pack *propertyListPack;
|
||||
private:
|
||||
inline void cb_2_i(Fl_Button*, void*);
|
||||
static void cb_2(Fl_Button*, void*);
|
||||
inline void cb_21_i(Fl_Button*, void*);
|
||||
static void cb_21(Fl_Button*, void*);
|
||||
public:
|
||||
Fl_Browser *recentSourceDirectoriesBrowser;
|
||||
private:
|
||||
inline void cb_recentSourceDirectoriesBrowser_i(Fl_Browser*, void*);
|
||||
static void cb_recentSourceDirectoriesBrowser(Fl_Browser*, void*);
|
||||
public:
|
||||
Fl_Browser *recentBinaryDirectoriesBrowser;
|
||||
private:
|
||||
inline void cb_recentBinaryDirectoriesBrowser_i(Fl_Browser*, void*);
|
||||
static void cb_recentBinaryDirectoriesBrowser(Fl_Browser*, void*);
|
||||
public:
|
||||
~CMakeSetupGUI();
|
||||
virtual void Close(void);
|
||||
virtual void BuildProjectFiles(void);
|
||||
@ -43,5 +64,9 @@ public:
|
||||
virtual void Show(void);
|
||||
virtual bool SetBinaryPath(const char *);
|
||||
virtual bool SetSourcePath(const char *);
|
||||
virtual void ShowRecentBinaryDirectories(void);
|
||||
virtual void ShowRecentSourceDirectories(void);
|
||||
virtual void SelectOneRecentBinaryDirectory(void);
|
||||
virtual void SelectOneRecentSourceDirectory(void);
|
||||
};
|
||||
#endif
|
||||
|
@ -55,6 +55,7 @@ void
|
||||
CMakeSetupGUIImplementation
|
||||
::Close( void )
|
||||
{
|
||||
SaveRecentDirectories();
|
||||
dialogWindow->hide();
|
||||
}
|
||||
|
||||
@ -120,7 +121,6 @@ void
|
||||
CMakeSetupGUIImplementation
|
||||
::SetPathToExecutable( const char * path )
|
||||
{
|
||||
m_PathToExecutable = path;
|
||||
|
||||
char expandedPath[1024];
|
||||
filename_expand( expandedPath, path );
|
||||
@ -333,6 +333,9 @@ CMakeSetupGUIImplementation
|
||||
// Make sure we are working from the cache on disk
|
||||
this->LoadCacheFromDiskToGUI();
|
||||
|
||||
UpdateListOfRecentDirectories();
|
||||
SaveRecentDirectories();
|
||||
|
||||
// create a cmake object
|
||||
cmake make;
|
||||
// create the arguments for the cmake object
|
||||
@ -358,6 +361,7 @@ CMakeSetupGUIImplementation
|
||||
// path is up-to-date now
|
||||
m_BuildPathChanged = false;
|
||||
|
||||
|
||||
// put the cursor back
|
||||
fl_cursor(FL_CURSOR_DEFAULT,FL_BLACK,FL_WHITE);
|
||||
fl_message("Done !");
|
||||
@ -515,3 +519,204 @@ CMakeSetupGUIImplementation
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load Recent Directories
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::LoadRecentDirectories( void )
|
||||
{
|
||||
std::string home = getenv("HOME");
|
||||
std::string filename = home + "/.cmakerc";
|
||||
|
||||
std::ifstream input;
|
||||
input.open(filename.c_str());
|
||||
|
||||
if( input.fail() )
|
||||
{
|
||||
// probably the file doesn't exist
|
||||
return;
|
||||
}
|
||||
|
||||
m_RecentBinaryDirectories.clear();
|
||||
m_RecentSourceDirectories.clear();
|
||||
|
||||
std::string key;
|
||||
std::string onedirectory;
|
||||
|
||||
while( !input.eof() )
|
||||
{
|
||||
input >> key;
|
||||
|
||||
if( input.eof() ) break;
|
||||
|
||||
if( key == "MostRecentSource" )
|
||||
{
|
||||
input >> onedirectory;
|
||||
m_WhereSource = onedirectory;
|
||||
sourcePathTextInput->value( m_WhereSource.c_str() );
|
||||
} else
|
||||
if( key == "MostRecentBinary" )
|
||||
{
|
||||
input >> onedirectory;
|
||||
m_WhereBuild = onedirectory;
|
||||
binaryPathTextInput->value( m_WhereBuild.c_str() );
|
||||
} else
|
||||
if( key == "Binary" )
|
||||
{
|
||||
input >> onedirectory;
|
||||
// insert is only done if the directory doesn't exist
|
||||
m_RecentBinaryDirectories.insert( onedirectory );
|
||||
recentBinaryDirectoriesBrowser->add(
|
||||
(onedirectory.c_str()),
|
||||
(void*)(onedirectory.c_str()) );
|
||||
} else
|
||||
if( key == "Source" )
|
||||
{
|
||||
input >> onedirectory;
|
||||
// insert is only done if the directory doesn't exist
|
||||
m_RecentSourceDirectories.insert( onedirectory );
|
||||
recentSourceDirectoriesBrowser->add(
|
||||
(onedirectory.c_str()),
|
||||
(void*)(onedirectory.c_str()) );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
input.close();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Save Recent Directories
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::SaveRecentDirectories( void )
|
||||
{
|
||||
std::string home = getenv("HOME");
|
||||
|
||||
if( home.empty() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
std::string filename = home + "/.cmakerc";
|
||||
|
||||
std::ofstream output;
|
||||
output.open(filename.c_str());
|
||||
|
||||
output << "MostRecentBinary " << m_WhereBuild << std::endl;
|
||||
output << "MostRecentSource " << m_WhereSource << std::endl;
|
||||
|
||||
// Save Recent binary directories
|
||||
std::set< std::string >::iterator bindir =
|
||||
m_RecentBinaryDirectories.begin();
|
||||
|
||||
while( bindir != m_RecentBinaryDirectories.end() )
|
||||
{
|
||||
output << "Binary " << *bindir << std::endl;
|
||||
bindir++;
|
||||
}
|
||||
|
||||
|
||||
// Save Recent source directories
|
||||
std::set< std::string >::iterator srcdir =
|
||||
m_RecentSourceDirectories.begin();
|
||||
|
||||
while( srcdir != m_RecentSourceDirectories.end() )
|
||||
{
|
||||
output << "Source " << *srcdir << std::endl;
|
||||
srcdir++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show Recent Binary Directories
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::ShowRecentBinaryDirectories( void )
|
||||
{
|
||||
recentBinaryDirectoriesBrowser->Fl_Widget::show();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show Recent Source Directories
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::ShowRecentSourceDirectories( void )
|
||||
{
|
||||
recentSourceDirectoriesBrowser->Fl_Widget::show();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Select one Recent Binary Directory
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::SelectOneRecentBinaryDirectory( void )
|
||||
{
|
||||
const int selected = recentBinaryDirectoriesBrowser->value();
|
||||
if( selected == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_WhereBuild = static_cast<char *>(
|
||||
recentBinaryDirectoriesBrowser->data( selected ));
|
||||
binaryPathTextInput->value( m_WhereBuild.c_str() );
|
||||
recentBinaryDirectoriesBrowser->Fl_Widget::hide();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Select one Recent Source Directory
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::SelectOneRecentSourceDirectory( void )
|
||||
{
|
||||
const int selected = recentSourceDirectoriesBrowser->value();
|
||||
if( selected == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_WhereSource = static_cast< char * >(
|
||||
recentSourceDirectoriesBrowser->data( selected ));
|
||||
sourcePathTextInput->value( m_WhereSource.c_str() );
|
||||
recentSourceDirectoriesBrowser->Fl_Widget::hide();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Update List of Recent Directories
|
||||
*/
|
||||
void
|
||||
CMakeSetupGUIImplementation
|
||||
::UpdateListOfRecentDirectories( void )
|
||||
{
|
||||
|
||||
// Update Recent binary directories
|
||||
// insert is only done if the directory doesn't exist
|
||||
m_RecentBinaryDirectories.insert( m_WhereBuild );
|
||||
|
||||
// Update Recent source directories
|
||||
// insert is only done if the directory doesn't exist
|
||||
m_RecentSourceDirectories.insert( m_WhereSource );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
#include "CMakeSetupGUI.h"
|
||||
#include "FLTKPropertyList.h"
|
||||
#include <set>
|
||||
|
||||
|
||||
/**
|
||||
@ -33,6 +34,13 @@ public:
|
||||
virtual void FillCacheGUIFromCacheManager( void );
|
||||
virtual void FillCacheManagerFromCacheGUI( void );
|
||||
virtual void SetPathToExecutable( const char * path );
|
||||
virtual void LoadRecentDirectories(void);
|
||||
virtual void SaveRecentDirectories(void);
|
||||
virtual void ShowRecentBinaryDirectories(void);
|
||||
virtual void ShowRecentSourceDirectories(void);
|
||||
virtual void SelectOneRecentSourceDirectory(void);
|
||||
virtual void SelectOneRecentBinaryDirectory(void);
|
||||
virtual void UpdateListOfRecentDirectories(void);
|
||||
|
||||
private:
|
||||
virtual bool VerifyBinaryPath( const std::string & path ) const;
|
||||
@ -45,6 +53,10 @@ private:
|
||||
std::string m_WhereSource;
|
||||
std::string m_PathToExecutable;
|
||||
bool m_BuildPathChanged;
|
||||
|
||||
std::set< std::string > m_RecentBinaryDirectories;
|
||||
std::set< std::string > m_RecentSourceDirectories;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -13,6 +13,7 @@ int main(int argc, char * argv[] )
|
||||
|
||||
gui->SetPathToExecutable( argv[0] );
|
||||
gui->Show();
|
||||
gui->LoadRecentDirectories();
|
||||
gui->LoadCacheFromDiskToGUI();
|
||||
|
||||
Fl::run();
|
||||
|
Loading…
Reference in New Issue
Block a user