| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360 |
- /*=========================================================================
- Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake
- Module: $RCSfile$
- Language: C++
- Date: $Date$
- Version: $Revision$
- Author: Jorgen Bodde
- Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
- See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notices for more information.
- =========================================================================*/
- #ifndef _CMAKESETUPFRAME_H_
- #define _CMAKESETUPFRAME_H_
- #if defined(__GNUG__) && !defined(__APPLE__)
- #pragma interface "CMakeSetupFrame.cpp"
- #endif
- /*!
- * Includes
- */
- ////@begin includes
- #include "wx/frame.h"
- #include "wx/splitter.h"
- #include "wx/grid.h"
- #include "wx/statline.h"
- #include "wx/statusbr.h"
- ////@end includes
- #include <wx/config.h>
- #include <wx/dataobj.h>
- #include <wx/dnd.h>
- #include "../cmake.h"
- #include "progressdlg.h"
- #include "optionsdlg.h"
- #include "CommandLineInfo.h"
- #include "config.h"
- // this ID should be taken as base to make sure they are unique
- // NOTE: DialogBlocks starts at 10100 so 10000 to 10099 are free
- #define CM_NEXT_USABLEID CM_RECENT_BUILD_ITEM + CM_MAX_RECENT_PATHS
- /*!
- * Forward declarations
- */
- ////@begin forward declarations
- class wxSplitterWindow;
- class wxPropertyList;
- ////@end forward declarations
- /*!
- * Control identifiers
- */
- ////@begin control identifiers
- #define ID_FRAME 10100
- #define SYMBOL_CMAKESETUPFRM_STYLE wxDEFAULT_FRAME_STYLE|wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxCLOSE_BOX|wxSUNKEN_BORDER
- #define SYMBOL_CMAKESETUPFRM_TITLE _("CMake Setup v2.0.x")
- #define SYMBOL_CMAKESETUPFRM_IDNAME ID_FRAME
- #define SYMBOL_CMAKESETUPFRM_SIZE wxSize(600, 550)
- #define SYMBOL_CMAKESETUPFRM_POSITION wxDefaultPosition
- #define ID_SPLITTERWINDOW 10101
- #define ID_MAINPANEL 10102
- #define ID_PROJECT_PATH 10103
- #define ID_BROWSE_PROJECT 10104
- #define ID_SOURCE_BUILD_PATH 10105
- #define ID_BROWSE_BUILD 10106
- #define ID_CHOOSE_GENERATOR 10107
- #define ID_SEARCHQUERY 10109
- #define ID_SHOW_ADVANCED 10108
- #define ID_OPTIONS 10110
- #define ID_LOGPANEL 10111
- #define ID_LOG_AREA 10112
- #define ID_DESCRIPTION 10113
- #define ID_DO_CONFIGURE 10114
- #define ID_DO_OK 10115
- #define ID_DO_CANCEL 10116
- #define ID_DO_DELETE_CACHE 10117
- #define ID_CLEAR_LOG 10118
- #define ID_BROWSE_GRID 10119
- #define ID_STATUSBAR 10120
- #define ID_MENU_RELOAD_CACHE 10122
- #define ID_MENU_DELETE_CACHE 10123
- #define ID_MENU_QUIT 10125
- #define ID_MENU_CONFIGURE 10126
- #define ID_MENU_EXITGENERATE 10127
- #define ID_MENU_TOGGLE_ADVANCED 10128
- #define ID_CMAKE_OPTIONS 10124
- #define ID_ABOUTDLG 10121
- ////@end control identifiers
- /*!
- * Compatibility
- */
- #ifndef wxCLOSE_BOX
- #define wxCLOSE_BOX 0x1000
- #endif
- #ifndef wxFIXED_MINSIZE
- #define wxFIXED_MINSIZE 0
- #endif
- class DnDFile : public wxFileDropTarget
- {
- public:
- DnDFile(wxTextCtrl *pOwner)
- : m_pOwner(pOwner)
- {
- };
- virtual bool OnDropFiles(wxCoord x, wxCoord y,
- const wxArrayString& filenames);
- private:
- wxTextCtrl *m_pOwner;
- };
- /*!
- * CMakeSetupFrm class declaration
- */
- class CMakeSetupFrm: public wxFrame
- {
- DECLARE_CLASS( CMakeSetupFrm )
- DECLARE_EVENT_TABLE()
- public:
- /// Constructors
- CMakeSetupFrm( );
- CMakeSetupFrm( wxWindow* parent, wxWindowID id = SYMBOL_CMAKESETUPFRM_IDNAME, const wxString& caption = SYMBOL_CMAKESETUPFRM_TITLE, const wxPoint& pos = SYMBOL_CMAKESETUPFRM_POSITION, const wxSize& size = SYMBOL_CMAKESETUPFRM_SIZE, long style = SYMBOL_CMAKESETUPFRM_STYLE );
- // Destructor
- virtual ~CMakeSetupFrm();
- bool Create( wxWindow* parent, wxWindowID id = SYMBOL_CMAKESETUPFRM_IDNAME, const wxString& caption = SYMBOL_CMAKESETUPFRM_TITLE, const wxPoint& pos = SYMBOL_CMAKESETUPFRM_POSITION, const wxSize& size = SYMBOL_CMAKESETUPFRM_SIZE, long style = SYMBOL_CMAKESETUPFRM_STYLE );
- /// Creates the controls and sizers
- void CreateControls();
- /** Logs a message. For the kind parameter use;
- 1 - neutral message
- 0 - warning message (blue text)
- -1 - error message (red text)
- */
- void LogMessage(int logkind, const char *msg);
- void UpdateProgress(float progress) {
- if(m_progressDlg)
- m_progressDlg->SetProgress(progress);
- // also show in the tiny field
- wxStatusBar *bar = GetStatusBar();
- if(bar)
- {
- wxString str;
- str.Printf("%2.1f %%", (progress * 100));
- bar->SetStatusText(str, 1);
- }
- };
- void IssueUpdate();
- /** Initialise all crap in the frame, like listing the make generators,
- selecting the best one to use, and loading the cache for the first time
- when the build paths were set */
- void DoInitFrame(cmCommandLineInfo &cm, const wxString &fn);
- ////@begin CMakeSetupFrm event handler declarations
- /// wxEVT_CLOSE_WINDOW event handler for ID_FRAME
- void OnCloseWindow( wxCloseEvent& event );
- /// wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING event handler for ID_SPLITTERWINDOW
- void OnSplitterPosChanging( wxSplitterEvent& event );
- /// wxEVT_COMMAND_SPLITTER_DOUBLECLICKED event handler for ID_SPLITTERWINDOW
- void OnSplitterwindowSashDClick( wxSplitterEvent& event );
- /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_PROJECT
- void OnButtonBrowseProject( wxCommandEvent& event );
- /// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_SOURCE_BUILD_PATH
- void OnSourceBuildPathUpdated( wxCommandEvent& event );
- /// wxEVT_COMMAND_TEXT_ENTER event handler for ID_SOURCE_BUILD_PATH
- void OnSourceBuildPathEnter( wxCommandEvent& event );
- /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_BUILD
- void OnButtonBrowseBuild( wxCommandEvent& event );
- /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_SEARCHQUERY
- void OnSearchquerySelected( wxCommandEvent& event );
- /// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_SEARCHQUERY
- void OnSearchqueryUpdated( wxCommandEvent& event );
- /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_SHOW_ADVANCED
- void OnShowAdvancedValues( wxCommandEvent& event );
- /// wxEVT_GRID_CELL_CHANGE event handler for ID_OPTIONS
- void OnCellChange( wxGridEvent& event );
- /// wxEVT_GRID_SELECT_CELL event handler for ID_OPTIONS
- void OnGridSelectCell( wxGridEvent& event );
- /// wxEVT_MOTION event handler for ID_OPTIONS
- void OnPropertyMotion( wxMouseEvent& event );
- /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_CONFIGURE
- void OnButtonConfigure( wxCommandEvent& event );
- /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_OK
- void OnButtonOk( wxCommandEvent& event );
- /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_CANCEL
- void OnButtonCancel( wxCommandEvent& event );
- /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_DELETE_CACHE
- void OnButtonDeleteCache( wxCommandEvent& event );
- /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CLEAR_LOG
- void OnClearLogClick( wxCommandEvent& event );
- /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_GRID
- void OnBrowseGridClick( wxCommandEvent& event );
- /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_RELOAD_CACHE
- void OnMenuReloadCacheClick( wxCommandEvent& event );
- /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_DELETE_CACHE
- void OnMenuDeleteCacheClick( wxCommandEvent& event );
- /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_QUIT
- void OnMenuQuitClick( wxCommandEvent& event );
- /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_CONFIGURE
- void OnMenuConfigureClick( wxCommandEvent& event );
- /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_EXITGENERATE
- void OnMenuGenerateClick( wxCommandEvent& event );
- /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_TOGGLE_ADVANCED
- void OnMenuToggleAdvancedClick( wxCommandEvent& event );
- /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_CMAKE_OPTIONS
- void OnOptionsClick( wxCommandEvent& event );
- /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_ABOUTDLG
- void OnAboutClick( wxCommandEvent& event );
- ////@end CMakeSetupFrm event handler declarations
- void OnRecentFileMenu( wxCommandEvent &event );
- void OnAddQuery ( wxCommandEvent &event );
- ////@begin CMakeSetupFrm member function declarations
- /// Retrieves bitmap resources
- wxBitmap GetBitmapResource( const wxString& name );
- /// Retrieves icon resources
- wxIcon GetIconResource( const wxString& name );
- ////@end CMakeSetupFrm member function declarations
- /// Should we show tooltips?
- static bool ShowToolTips();
- /** Load cache for the CMakeLists to the GUI */
- void LoadCacheFromDiskToGUI();
- /** Display the grid with the loaded cache. */
- void FillCacheGUIFromCacheManager();
- int RunCMake(bool generateProjectFiles);
- /** Save cache to disk from the GUI */
- void SaveCacheFromGUI();
- void FillCacheManagerFromCacheGUI();
- /** Update the cache and mark all the new items as old */
- bool PerformCacheRun();
- /** Shows the property matched by the row in the description area
- or nothing when the row is not correct */
- void ShowPropertyDescription(int row);
- /** Disable or enable controls based upon the internal state of the
- program */
- void UpdateWindowState();
- void AppendPathToRecentList(const wxString &p);
- /** Used to synchonise any options that have immediate effect on the GUI
- form, like clearing a search list, resetting a spitter perhaps, etc */
- void SyncFormOptions(CMOptionsDlg *dlg);
- void DoCancelButton();
- void DoReloadCache();
- void DoDeleteCache();
- void DoConfigure();
- void DoGenerate();
- void OnExitTimer(wxTimerEvent &event);
- ////@begin CMakeSetupFrm member variables
- wxSplitterWindow* m_splitter;
- wxTextCtrl* m_cmProjectPath;
- wxButton* m_BrowseProjectPathButton;
- wxTextCtrl* m_cmBuildPath;
- wxButton* m_BrowseSourcePathButton;
- wxComboBox* m_cmGeneratorChoice;
- wxComboBox* m_cmSearchQuery;
- wxCheckBox* m_cmShowAdvanced;
- wxPropertyList* m_cmOptions;
- wxTextCtrl* m_cmLog;
- wxTextCtrl* m_cmDescription;
- wxButton* m_ConfigureButton;
- wxButton* m_OkButton;
- wxButton* m_CancelButton;
- wxButton* m_DeleteCacheButton;
- wxButton* m_ClearLogButton;
- wxButton* m_cmBrowseCell;
- ////@end CMakeSetupFrm member variables
- // this is the cmake instance with which we will communicate
- // to generate our stuff, and get the info from.
- cmake *m_cmake;
- // the config class for project build dir and source path
- wxTimer *m_ExitTimer;
- wxConfig *m_config;
- wxString m_PathToExecutable;
- wxArrayString m_recentPaths;
- CMProgressDialog *m_progressDlg;
- bool m_RunningConfigure;
- bool m_noRefresh;
- bool m_quitAfterGenerating;
- };
- #endif
- // _CMAKESETUPFRAME_H_
|