summaryrefslogtreecommitdiffstats
path: root/Source/FLTKDialog
diff options
context:
space:
mode:
authorLuis Ibanez <luis.ibanez@kitware.com>2001-06-21 11:37:49 (GMT)
committerLuis Ibanez <luis.ibanez@kitware.com>2001-06-21 11:37:49 (GMT)
commit8fe1e1fcc6be2de71ebe3ce2e252c2e8bd75931b (patch)
treedc800ad187dcc2603f743f57f525679677974a60 /Source/FLTKDialog
parentd21fca47a968202aec241b60d0c44d367171c221 (diff)
downloadCMake-8fe1e1fcc6be2de71ebe3ce2e252c2e8bd75931b.zip
CMake-8fe1e1fcc6be2de71ebe3ce2e252c2e8bd75931b.tar.gz
CMake-8fe1e1fcc6be2de71ebe3ce2e252c2e8bd75931b.tar.bz2
ENH: PropertyNameButton was removed. PropertyRow manages all the callbacks now
Diffstat (limited to 'Source/FLTKDialog')
-rw-r--r--Source/FLTKDialog/CMakeLists.txt2
-rw-r--r--Source/FLTKDialog/CMakeSetupGUI.cxx4
-rw-r--r--Source/FLTKDialog/CMakeSetupGUI.fl8
-rw-r--r--Source/FLTKDialog/CMakeSetupGUI.h2
-rw-r--r--Source/FLTKDialog/CMakeSetupGUIImplementation.cxx21
-rw-r--r--Source/FLTKDialog/FLTKPropertyItemRow.cxx90
-rw-r--r--Source/FLTKDialog/FLTKPropertyItemRow.h9
7 files changed, 84 insertions, 52 deletions
diff --git a/Source/FLTKDialog/CMakeLists.txt b/Source/FLTKDialog/CMakeLists.txt
index 62bc6c9..cee4e77 100644
--- a/Source/FLTKDialog/CMakeLists.txt
+++ b/Source/FLTKDialog/CMakeLists.txt
@@ -4,10 +4,8 @@ CMakeSetupGUIImplementation.cxx
FLTKDialog.cxx
FLTKPropertyItemRow.cxx
FLTKPropertyList.cxx
-FLTKPropertyNameButtonWithHelp.cxx
)
-
LINK_LIBRARIES(${FLTK_LIBRARY})
IF(WIN32)
IF(NOT UNIX)
diff --git a/Source/FLTKDialog/CMakeSetupGUI.cxx b/Source/FLTKDialog/CMakeSetupGUI.cxx
index dac7f42..7855d36 100644
--- a/Source/FLTKDialog/CMakeSetupGUI.cxx
+++ b/Source/FLTKDialog/CMakeSetupGUI.cxx
@@ -127,7 +127,7 @@ void CMakeSetupGUI::Show(void) {
}
bool CMakeSetupGUI::SetBinaryPath(const char *) {
-return true;}
+}
bool CMakeSetupGUI::SetSourcePath(const char *) {
-return true;}
+}
diff --git a/Source/FLTKDialog/CMakeSetupGUI.fl b/Source/FLTKDialog/CMakeSetupGUI.fl
index a62adbc..1c6dc1e 100644
--- a/Source/FLTKDialog/CMakeSetupGUI.fl
+++ b/Source/FLTKDialog/CMakeSetupGUI.fl
@@ -7,11 +7,11 @@ gridy 5
snap 3
class CMakeSetupGUI {open
} {
- Function {CMakeSetupGUI()} {open
+ Function {CMakeSetupGUI()} {open selected
} {
Fl_Window dialogWindow {
- label CMakeSetupDialog open
- xywh {401 125 563 363} resizable visible
+ label CMakeSetupDialog
+ xywh {190 106 563 363} resizable visible
} {
Fl_Input sourcePathTextInput {
label {Where is the source code: }
@@ -25,7 +25,7 @@ class CMakeSetupGUI {open
}
Fl_Input binaryPathTextInput {
label {Where do you want to build the binaries: }
- callback {SetBinaryPath( binaryPathTextInput->value() );} selected
+ callback {SetBinaryPath( binaryPathTextInput->value() );}
xywh {219 50 200 20} labelsize 11 when 8 textsize 11
}
Fl_Button {} {
diff --git a/Source/FLTKDialog/CMakeSetupGUI.h b/Source/FLTKDialog/CMakeSetupGUI.h
index 7524e3c..1a35110 100644
--- a/Source/FLTKDialog/CMakeSetupGUI.h
+++ b/Source/FLTKDialog/CMakeSetupGUI.h
@@ -14,7 +14,6 @@
class CMakeSetupGUI {
public:
CMakeSetupGUI();
- virtual ~CMakeSetupGUI();
Fl_Window *dialogWindow;
Fl_Input *sourcePathTextInput;
private:
@@ -36,6 +35,7 @@ private:
public:
Fl_Scroll *cacheValuesScroll;
Fl_Pack *propertyListPack;
+ ~CMakeSetupGUI();
virtual void Close(void);
virtual void BuildProjectFiles(void);
virtual void BrowseForSourcePath(void);
diff --git a/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx b/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx
index 4206e57..5dca254 100644
--- a/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx
+++ b/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx
@@ -141,8 +141,6 @@ CMakeSetupGUIImplementation
}
*p = '\0';
- std::cout << "absolutePath = " << absolutePath << std::endl;
-
m_PathToExecutable = absolutePath;
#if defined(_WIN32)
@@ -150,7 +148,7 @@ CMakeSetupGUIImplementation
#else
m_PathToExecutable += "/cmake";
#endif
- std::cout << "Path to CMake executable = " << m_PathToExecutable << std::endl;
+
}
@@ -324,20 +322,15 @@ CMakeSetupGUIImplementation
}
- SaveCacheFromGUI();
-
// set the wait cursor
fl_cursor(FL_CURSOR_WAIT,FL_BLACK,FL_WHITE);
- // get all the info from the dialog
- // this->UpdateData();
- if(!m_BuildPathChanged)
- {
- // if the build path has not changed save the
- // current GUI values to the cache
- this->SaveCacheFromGUI();
- }
+
+ // save the current GUI values to the cache
+ this->SaveCacheFromGUI();
+
// Make sure we are working from the cache on disk
this->LoadCacheFromDiskToGUI();
+
// create a cmake object
cmake make;
// create the arguments for the cmake object
@@ -394,12 +387,14 @@ void
CMakeSetupGUIImplementation
::SaveCacheFromGUI( void )
{
+ std::cout << "Saving cache from GUI ...";
this->FillCacheManagerFromCacheGUI();
if( m_WhereBuild != "" )
{
cmCacheManager::GetInstance()->SaveCache(
m_WhereBuild.c_str() );
}
+ std::cout << " Done ! " << std::endl;
}
diff --git a/Source/FLTKDialog/FLTKPropertyItemRow.cxx b/Source/FLTKDialog/FLTKPropertyItemRow.cxx
index edafb4ed..2ce380a 100644
--- a/Source/FLTKDialog/FLTKPropertyItemRow.cxx
+++ b/Source/FLTKDialog/FLTKPropertyItemRow.cxx
@@ -8,6 +8,8 @@
#include <FL/fl_ask.H>
#include <FL/fl_file_chooser.H>
#include <FL/Fl_Color_Chooser.H>
+#include <FL/Fl_Menu_Button.H>
+#include "../cmCacheManager.h"
#include <cstdio>
namespace fltk {
@@ -38,14 +40,14 @@ PropertyItemRow::PropertyItemRow( PropertyItem * pItem ):Fl_Tile(0,0,10,10,"")
parent()->size( nameWidth + textWidth , rowHeight );
m_NameButton = new
- PropertyNameButtonWithHelp( firstColumn, 0, nameWidth, rowHeight,
+ Fl_Button( firstColumn, 0, nameWidth, rowHeight,
m_PropertyItem->m_propName.c_str() );
m_NameButton->align( FL_ALIGN_CLIP | FL_ALIGN_LEFT | FL_ALIGN_INSIDE );
m_NameButton->labelsize( fontsize );
m_NameButton->box( FL_DOWN_BOX );
- m_NameButton->SetHelpText( m_PropertyItem->m_HelpString.c_str() );
m_NameButton->size( secondColumn, rowHeight );
+ m_NameButton->callback( NameButtonCallback, (void *)m_PropertyItem );
switch( m_PropertyItem->m_nItemType )
{
@@ -164,6 +166,68 @@ PropertyItemRow::~PropertyItemRow( )
void
PropertyItemRow::
+NameButtonCallback( Fl_Widget * widget, void * data)
+{
+ Fl_Button * button = (Fl_Button *)widget;
+ PropertyItem * pItem = (PropertyItem *)data;
+
+ static Fl_Menu_Button * popupMenu = 0;
+ if( !popupMenu )
+ {
+ int lastMousePositionX = Fl::event_x_root();
+ int lastMousePositionY = Fl::event_y_root();
+ popupMenu = new Fl_Menu_Button(lastMousePositionX,
+ lastMousePositionY,100,200);
+ }
+
+ popupMenu->type( Fl_Menu_Button::POPUP3 );
+ popupMenu->add("Help|Remove|Properties...");
+ popupMenu->popup();
+
+ typedef enum {
+ HELP=0,
+ REMOVE,
+ PROPERTIES
+ } MenuOptions;
+
+
+ switch( popupMenu->value() )
+ {
+ case HELP:
+ fl_message( pItem->m_HelpString.c_str() );
+ break;
+ case REMOVE: // Remove
+ {
+ const char * propertyName = pItem->m_propName.c_str();
+ int answer = fl_ask( "Do you want to remove property %s", propertyName );
+ if( answer == 1 )
+ {
+ // Remove the entry from the cache
+ cmCacheManager::GetInstance()->RemoveCacheEntry( propertyName );
+ // Get the parent: Fl_Tile that manages the whole row in the GUI
+ Fl_Group * parentGroup = (Fl_Group *) (button->parent());
+ // Get the grandParent: Fl_Pack with the property list
+ Fl_Group * grandParentGroup = (Fl_Group *) parentGroup->parent();
+ // Remove the row from the list
+ grandParentGroup->remove( *parentGroup );
+ // Destroy the row
+ delete parentGroup; // Patricide... ?
+ // Redraw the list
+ grandParentGroup->redraw();
+ return;
+ }
+ break;
+ }
+ case PROPERTIES: // Properties
+ break;
+ }
+}
+
+
+
+
+void
+PropertyItemRow::
CheckButtonCallback( Fl_Widget * widget, void * data)
{
Fl_Button * button = (Fl_Button *)widget;
@@ -255,26 +319,4 @@ BrowsePathCallback( Fl_Widget * widget, void * data)
-int
-PropertyItemRow::
-handle(int event)
-{
-
- int status = Fl_Tile::handle( event );
- switch( event )
- {
- case FL_LEAVE:
- m_NameButton->HideHelp();
- status = 1;
- break;
- case FL_MOVE:
- m_NameButton->HideHelp();
- status = 1;
- break;
- }
-
- return status;
-}
-
-
} // end namespace fltk
diff --git a/Source/FLTKDialog/FLTKPropertyItemRow.h b/Source/FLTKDialog/FLTKPropertyItemRow.h
index 3934166..d7af02d 100644
--- a/Source/FLTKDialog/FLTKPropertyItemRow.h
+++ b/Source/FLTKDialog/FLTKPropertyItemRow.h
@@ -3,10 +3,10 @@
#define FLTKPropertyItemRow_h
#include "FLTKPropertyList.h"
-#include "FLTKPropertyNameButtonWithHelp.h"
#include <FL/Fl_Tile.H>
#include <FL/Fl_Input.H>
+#include <FL/Fl_Button.H>
namespace fltk {
@@ -32,19 +32,16 @@ class PropertyItemRow : public Fl_Tile
PropertyItemRow( PropertyItem * );
~PropertyItemRow();
- int handle(int event);
private:
PropertyItem * m_PropertyItem;
ItemValue * m_ItemValue;
-
- // Button that displays the property name and
- // manages the popup help blob
- PropertyNameButtonWithHelp * m_NameButton;
+ Fl_Button * m_NameButton;
static void CheckButtonCallback( Fl_Widget *, void *);
+ static void NameButtonCallback( Fl_Widget *, void *);
static void InputTextCallback( Fl_Widget *, void *);
static void BrowsePathCallback( Fl_Widget *, void *);
static void ColorSelectionCallback( Fl_Widget * widget, void * data);