kicad/eeschema/dialogs/dialog_eeschema_options.h

452 lines
15 KiB
C
Raw Normal View History

/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2009 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file dialog_eeschema_options.h
*
* Subclass of DIALOG_EESCHEMA_OPTIONS_BASE, which is generated by wxFormBuilder.
*/
#ifndef __dialog_eeschema_options__
#define __dialog_eeschema_options__
#include <dialog_eeschema_options_base.h>
2014-03-07 17:52:43 +00:00
#include <template_fieldnames.h>
class DIALOG_EESCHEMA_OPTIONS : public DIALOG_EESCHEMA_OPTIONS_BASE
{
2014-03-07 17:52:43 +00:00
protected:
2014-09-30 19:55:18 +00:00
/** @brief The template fieldnames for this dialog */
2014-03-07 17:52:43 +00:00
TEMPLATE_FIELDNAMES templateFields;
2014-09-30 19:55:18 +00:00
/** @brief The current row selected in the template fieldname wxListCtrl which is also in the
edit panel */
size_t selectedField;
/** @brief The selectedField value is only valid when this bool is set to true */
bool selectionValid;
2014-09-30 19:55:18 +00:00
/** @brief Set to true internally when OnTemplateFieldSelected() an event needs to be
ignored */
bool ignoreSelection;
/**
* Function OnAddButtonClick
* Process the wxWidgets @a event produced when the user presses the Add buton for the
* template fieldnames control
*
* @param event The wxWidgets produced event information
*
* Adds a new template fieldname (with default values) to the template fieldnames data
*/
2014-03-07 17:52:43 +00:00
void OnAddButtonClick( wxCommandEvent& event );
2014-09-30 19:55:18 +00:00
/**
* Function OnDeleteButtonClick
* Process the wxWidgets @a event produced when the user presses the Delete button for the
* template fieldnames control
*
* @param event The wxWidgets produced event information
*
* Deletes the selected template fieldname from the template fieldnames data
*/
void OnDeleteButtonClick( wxCommandEvent& event );
/**
* Function OnEditControlKillFocus
* This Focus Event Handler should be connected to any controls in the template field edit box
* so that any loss of focus results in the data being saved to the currently selected template
* field
*
* @param event The wxWidgets produced event information
*
* Copies data from the edit box to the selected field template
*/
2014-10-14 18:52:31 +00:00
void OnEditControlKillFocus( wxFocusEvent& event );
2014-09-30 19:55:18 +00:00
/**
* Function copyPanelToSelected
* Copies the data from the edit panel to the selected template fieldname
*/
2014-09-23 20:23:52 +00:00
void copyPanelToSelected( void );
2014-09-30 19:55:18 +00:00
/**
* Function copySelectedToPanel
* Copies the data from the selected template fieldname and fills in the edit panel
*/
2014-09-16 19:34:52 +00:00
void copySelectedToPanel( void );
2014-09-30 19:55:18 +00:00
/**
* Function OnTemplateFieldSelected
* Event handler for the wxListCtrl containing the template fieldnames
*
* @param event The event information provided by wxWidgets
*
* Processes data exchange between the edit panel and the selected template fieldname
*/
2014-09-16 19:34:52 +00:00
void OnTemplateFieldSelected( wxListEvent& event );
2014-09-30 19:55:18 +00:00
/**
* Function RefreshTemplateFieldView
* Refresh the template fieldname wxListCtrl
*
* Deletes all data from the wxListCtrl and then re-polpulates the control with the data in
* the template fieldnames.
*
* Use any time the template field data has changed
*/
2014-09-28 20:37:35 +00:00
void RefreshTemplateFieldView( void );
2014-09-30 19:55:18 +00:00
/**
* Function SelectTemplateField
* Selects @a aItem from the wxListCtrl populated with the template fieldnames
*
* @param aItem The item index of the row to be selected
*
* When RefreshTemplateFieldView() is used the selection is lost because all of the items are
* removed from the wxListCtrl and then the control is re-populated. This function can be used
* to re-select an item that was previously selected so that the selection is not lost.
*
* <b>NOTE:</b> This function first sets the ignoreSelection flag before making the selection.
* This means the class can select something in the wxListCtrl without causing further
* selection events.
*/
void SelectTemplateField( int aItem );
public:
/**
* Public constructor
*
* @param parent The dialog's parent
*/
DIALOG_EESCHEMA_OPTIONS( wxWindow* parent );
2014-09-30 19:55:18 +00:00
/**
* Function GetUnitsSelection
* Returns the currently selected grid size in the dialog
*/
int GetUnitsSelection( void ) { return m_choiceUnits->GetSelection(); }
2014-09-30 19:55:18 +00:00
/**
* Function SetUnits
* Set the unit options
*
* @param units The array of strings representing the unit options
* @param select The unit to select from the unit options
*
* Appends the @a units options to the list of unit options and selects the @a aSelect option
*/
void SetUnits( const wxArrayString& units, int aSelect = 0 );
/**
* Function GetGridSelection
* Returns the curent grid size selected in the dialog
*/
int GetGridSelection( void ) { return m_choiceGridSize->GetSelection(); }
2014-09-30 19:55:18 +00:00
/**
* Function SetGridSizes
* Sets the available grid size choices @a aGridSizes and selectd the current option @a aGridId
*
* @param aGridSizes The grid sizes that are able to be chosen from
* @param aGridId The grid size to select from the grid size options
*/
void SetGridSizes( const GRIDS& aGridSizes, int aGridId );
2014-09-30 19:55:18 +00:00
/**
* Function GetBusWidth
* Get the current bus width setting from the dialog
*/
int GetBusWidth( void ) { return m_spinBusWidth->GetValue(); }
/**
* Function SetBusWidth
* Sets the bus width setting in the dialog
*
* @param aWidth The bus width to set the dialog edit spinbox with
*/
void SetBusWidth( int aWidth ) { m_spinBusWidth->SetValue( aWidth ); }
/**
* Function SetLineWidth
* Sets the current LineWidth value in the dialog
* @param aWidth The line width to set in the dialog
*/
void SetLineWidth( int aWidth ) { m_spinLineWidth->SetValue( aWidth ); }
/**
* Function GetLineWidth
* Returns the current LineWidth value from the dialog
*/
int GetLineWidth( void ) { return m_spinLineWidth->GetValue(); }
/**
* Function SetTextSize
* Sets the current default TextSize value in the dialog
* @param text_size The text size to set in the dialog
*/
void SetTextSize( int text_size ) { m_spinTextSize->SetValue( text_size ); }
/**
* Function GetTextSize
* Returns the current default TextSize value from the dialog
*/
int GetTextSize( void ) { return m_spinTextSize->GetValue(); }
/**
* Function SetRepeatHorizontal
* Sets the current RepeatHorizontal displacement value in the dialog
* @param displacement The displacement to set in the dialog
*/
void SetRepeatHorizontal( int displacement )
{
m_spinRepeatHorizontal->SetValue( displacement );
}
/**
* Function GetRepeatHorizontal
* Returns the current RepeatHorizontal displacement value from the dialog
*/
int GetRepeatHorizontal( void ) { return m_spinRepeatHorizontal->GetValue(); }
/**
* Function SetRepeatVertical
* Sets the current RepeatVertical displacement value in the dialog
* @param displacement The displacement to set in the dialog
*/
void SetRepeatVertical( int displacement ) { m_spinRepeatVertical->SetValue( displacement ); }
/**
* Function GetRepeatVertical
* Returns the current RepeatVertical displacement value from the dialog
*/
int GetRepeatVertical( void ) { return m_spinRepeatVertical->GetValue(); }
/**
* Function SetRepeatLabel
* Sets the current RepeatLabel increment value in the dialog
* @param increment The increment to set in the dialog
*/
void SetRepeatLabel( int increment ) { m_spinRepeatLabel->SetValue( increment ); }
/**
* Function GetRepeatLabel
* Returns the current RepeatLabel increment value from the dialog
*/
int GetRepeatLabel( void ) { return m_spinRepeatLabel->GetValue(); }
/**
* Function SetAutoSaveInterval
* Sets the current AutoSaveInterval value in the dialog
* @param aInterval The interval to set in the dialog
*/
void SetAutoSaveInterval( int aInterval ) { m_spinAutoSaveInterval->SetValue( aInterval ); }
/**
* Function GetAutoSaveInterval
* Returns the current AutoSaveInterval value from the dialog
*/
int GetAutoSaveInterval() const { return m_spinAutoSaveInterval->GetValue(); }
/**
* Function SetRefIdSeparator
* Sets the current RefIdSeparator value in the dialog
* @param aSep The seperator to use between the reference and the part ID
* @param aFirstId The first part ID, currently either 'A' or '1'
*/
void SetRefIdSeparator( wxChar aSep, wxChar aFirstId);
/**
* Function GetRefIdSeparator
* Returns the current RefIdSeparator value from the dialog
* @param aSep The OUTPUT seperator value
* @param aFirstId The OUTPUT reference first ID
*/
void GetRefIdSeparator( int& aSep, int& aFirstId);
/**
* Function SetShowGrid
* Sets the current ShowGrid value in the dialog
* @param show The ShowGrid value to set in the dialog
*/
void SetShowGrid( bool show ) { m_checkShowGrid->SetValue( show ); }
/**
* Function GetShowGrid
* Returns the current ShowGrid value from the dialog
*/
bool GetShowGrid( void ) { return m_checkShowGrid->GetValue(); }
/**
* Function SetShowHiddenPins
* Sets the current ShowHiddenPins value in the dialog
* @param show The ShowHiddenPins value to set in the dialog
*/
void SetShowHiddenPins( bool show ) { m_checkShowHiddenPins->SetValue( show ); }
/**
* Function GetShowHiddenPins
* Returns the current ShowHiddenPins value from the dialog
*/
bool GetShowHiddenPins( void ) { return m_checkShowHiddenPins->GetValue(); }
/**
* Function SetEnableZoomNoCenter
* Sets the current ZoomNoCenter value in the dialog
* @param enable The ZoomNoCenter value to set in the dialog
*/
void SetEnableZoomNoCenter( bool enable )
{
m_checkEnableZoomNoCenter->SetValue( enable );
}
/**
* Function GetEnableZoomNoCenter
* Returns the current ZoomNoCenter value from the dialog
*/
bool GetEnableZoomNoCenter( void )
{
return m_checkEnableZoomNoCenter->GetValue();
}
/**
* Function SetEnableMiddleButtonPan
* Sets the current MiddleButtonPan value in the dialog
*
* @param enable The boolean value to set the MiddleButtonPan value in the dialog
*/
void SetEnableMiddleButtonPan( bool enable )
{
m_checkEnableMiddleButtonPan->SetValue( enable );
m_checkMiddleButtonPanLimited->Enable( enable );
}
/**
* Function GetEnableMiddleButtonPan
* Returns the current MiddleButtonPan setting from the dialog
*/
bool GetEnableMiddleButtonPan( void )
{
return m_checkEnableMiddleButtonPan->GetValue();
}
/**
* Function SetMiddleButtonPanLimited
* Sets the MiddleButtonPanLimited value in the dialog
*
* @param enable The boolean value to set the MiddleButtonPanLimted value in the dialog
*/
void SetMiddleButtonPanLimited( bool enable )
{
m_checkMiddleButtonPanLimited->SetValue( enable );
}
/**
* Function GetMiddleButtonPanLimited
* Returns the MiddleButtonPanLimited setting from the dialog
*/
bool GetMiddleButtonPanLimited( void )
{
return m_checkMiddleButtonPanLimited->GetValue();
}
- Changed mousewheel handling to pan more smoothly rather than in larger steps to better support devices with precise scrolling deltas (trackpads). Scrolling is done in the handler rather than creating and firing cmd events. This is intended to support two-finger scrolling on the Magic Trackpad. - Added a preference, 'Use mousewheel to pan', to allow panning by default on mousewheel events. This reverses the existing behavior where unmodified mousewheel zooms and Shift/Cmd modified pans. The old behavior was: - Unmodified scrollwheel performed zoom in/out - Shift modified scrollwheel performed pan up/down - Cmd modified scrollwheel performed pan left/right - Shift+Cmd modified scrollwheel performed zoom in/out with no cursor warp With the new preference checked, this changes to: - Unmodified scrollwheel performs pan up/down - Shift modified scrollwheel performs pan left/right - Cmd modified scrollwheel performs zoom in/out - Shift+Cmd modified scrollwheel performs zoom in/out with no cursor warp With the preference unchecked, this is now: - Unmodified scrollwheel performed zoom in/out - Shift modified scrollwheel performed pan left/right - Cmd modified scrollwheel performed pan up/down - Shift+Cmd modified scrollwheel performed zoom in/out with no cursor warp It should be noted that for the last case, the behavior has changed. This is not arbitrary. This now matches expected behavior for an OS X application. This also matches what wxWidgets expects on this platform as wxWidgets changes the axis of mousewheel events to horizontal when the event is shift-modified. The preference is added everwhere that mouse preferences previously existed, i.e., eeschema, pcbnew and gerbview. The 3D Viewer does not yet honor this preference, but behaves as if it was checked. The pl_editor does not currently have any preferences to honor. As with the magnify event support, this covers canvases for all current tools, EDA_DRAW_PANEL, EDA_3D_CANVAS and EDA_DRAW_PANEL_GAL. This does NOT modify the behavior of mousewheel zooming, though it probably should. This remains unsuitable for use with a trackpad, use pinch-to-zoom instead.
2014-10-30 18:53:08 +00:00
/**
* Function SetEnableMousewheelPan
* Sets the MousewheelPan setting in the dialog
*
* @param enable The boolean value to set the AutoPan value in the dialog
*/
void SetEnableMousewheelPan( bool enable ) { m_checkEnableMousewheelPan->SetValue( enable ); }
/**
* Function GetEnableMousewheelPan
* Return the MousewheelPan setting from the dialog
*/
bool GetEnableMousewheelPan( void ) { return m_checkEnableMousewheelPan->GetValue(); }
/**
* Function SetEnableAutoPan
* Sets the AutoPan setting in the dialog
*
* @param enable The boolean value to set the AutoPan value in the dialog
*/
void SetEnableAutoPan( bool enable ) { m_checkAutoPan->SetValue( enable ); }
/**
* Function GetEnableAutoPan
* Return the AutoPan setting from the dialog
*/
bool GetEnableAutoPan( void ) { return m_checkAutoPan->GetValue(); }
/**
* Function SetEnableHVBusOrientation
* Set the HVBusOrientation setting in the dialog
*
* @param enable The boolean value to set the HVBusOrientation value in the dialog
*/
void SetEnableHVBusOrientation( bool enable ) { m_checkHVOrientation->SetValue( enable ); }
/**
* Function GetEnableHVBusOrientation
* Get the HVBusOrientation setting from the dialog
*/
bool GetEnableHVBusOrientation( void ) { return m_checkHVOrientation->GetValue(); }
/**
* Function
* Set the ShowPageLimits setting in the dialog
*/
void SetShowPageLimits( bool show ) { m_checkPageLimits->SetValue( show ); }
/**
* Function
* Return the current ShowPageLimits setting from the dialog
*/
bool GetShowPageLimits( void ) { return m_checkPageLimits->GetValue(); }
/**
* Function SetTemplateFields
* Set the template field data in the dialog
*
* @param aFields The template fieldnames that the dialog should start with before any editing
*/
2014-03-07 17:52:43 +00:00
void SetTemplateFields( const TEMPLATE_FIELDNAMES& aFields );
/**
* Function GetTemplateFields
* Get the dialog's template field data
*
*/
2014-09-16 19:34:52 +00:00
TEMPLATE_FIELDNAMES GetTemplateFields( void );
private:
void OnMiddleBtnPanEnbl( wxCommandEvent& event )
{
m_checkMiddleButtonPanLimited->Enable( GetEnableMiddleButtonPan() );
}
};
#endif // __dialog_eeschema_options__