361 lines
11 KiB
C
361 lines
11 KiB
C
|
/*=========================================================================
|
||
|
|
||
|
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_
|