2012-03-20 01:57:42 +01:00
# include "lc_global.h"
2013-08-16 03:25:51 +02:00
# include "lc_mainwindow.h"
2015-02-01 03:33:42 +01:00
# include <QPrintDialog>
# include <QPrintPreviewDialog>
2016-12-16 18:14:19 +01:00
# include "lc_partselectionwidget.h"
2015-03-04 21:37:09 +01:00
# include "lc_timelinewidget.h"
2015-01-26 00:04:39 +01:00
# include "lc_qglwidget.h"
# include "lc_qcolorlist.h"
# include "lc_qpropertiestree.h"
# include "lc_qutils.h"
2017-11-19 23:12:27 +01:00
# include "lc_qfinddialog.h"
2016-08-01 05:44:15 +02:00
# include "lc_qupdatedialog.h"
# include "lc_qaboutdialog.h"
2017-08-20 22:47:53 +02:00
# include "lc_setsdatabasedialog.h"
2017-12-11 03:12:31 +01:00
# include "lc_qhtmldialog.h"
2017-09-22 19:08:02 +02:00
# include "lc_renderdialog.h"
2013-08-09 06:57:18 +02:00
# include "lc_profile.h"
2014-05-03 23:16:48 +02:00
# include "view.h"
2014-12-08 08:32:39 +01:00
# include "project.h"
2015-01-26 00:04:39 +01:00
# include "piece.h"
# include "group.h"
# include "pieceinf.h"
# include "lc_library.h"
2014-12-08 08:32:39 +01:00
# include "lc_colors.h"
2011-09-07 23:06:51 +02:00
2018-08-20 20:47:46 +02:00
# if LC_ENABLE_GAMEPAD
2018-05-14 02:09:06 +02:00
# include <QtGamepad/QGamepad>
# endif
2013-08-09 06:57:18 +02:00
lcMainWindow * gMainWindow ;
2018-01-07 00:01:04 +01:00
# define LC_TAB_LAYOUT_VERSION 0x0001
2011-09-07 23:06:51 +02:00
2019-07-01 23:38:10 +02:00
void lcTabBar : : mousePressEvent ( QMouseEvent * Event )
2019-07-01 23:11:47 +02:00
{
2019-07-01 23:38:10 +02:00
if ( Event - > button ( ) = = Qt : : MidButton )
mMousePressTab = tabAt ( Event - > pos ( ) ) ;
2019-07-01 23:11:47 +02:00
else
2019-07-01 23:38:10 +02:00
QTabBar : : mousePressEvent ( Event ) ;
2019-07-01 23:11:47 +02:00
}
2019-07-01 23:38:10 +02:00
void lcTabBar : : mouseReleaseEvent ( QMouseEvent * Event )
2019-07-01 23:11:47 +02:00
{
2019-07-01 23:38:10 +02:00
if ( Event - > button ( ) = = Qt : : MidButton & & tabAt ( Event - > pos ( ) ) = = mMousePressTab )
tabCloseRequested ( mMousePressTab ) ;
else
QTabBar : : mouseReleaseEvent ( Event ) ;
2019-07-01 23:11:47 +02:00
}
2019-07-01 23:38:10 +02:00
lcTabWidget : : lcTabWidget ( )
: QTabWidget ( )
2019-07-01 23:11:47 +02:00
{
2019-07-01 23:38:10 +02:00
lcTabBar * TabBar = new lcTabBar ( this ) ;
setTabBar ( TabBar ) ;
TabBar - > setDrawBase ( false ) ;
2019-07-01 23:11:47 +02:00
}
2017-03-26 19:28:58 +02:00
void lcModelTabWidget : : ResetLayout ( )
{
QLayout * TabLayout = layout ( ) ;
QWidget * TopWidget = TabLayout - > itemAt ( 0 ) - > widget ( ) ;
if ( TopWidget - > metaObject ( ) = = & lcQGLWidget : : staticMetaObject )
return ;
QWidget * Widget = GetAnyViewWidget ( ) ;
TabLayout - > addWidget ( Widget ) ;
TabLayout - > removeWidget ( TopWidget ) ;
TopWidget - > deleteLater ( ) ;
Widget - > setFocus ( ) ;
SetActiveView ( ( View * ) ( ( lcQGLWidget * ) Widget ) - > widget ) ;
}
2017-03-27 03:14:08 +02:00
void lcModelTabWidget : : Clear ( )
{
ResetLayout ( ) ;
2017-04-14 02:26:40 +02:00
mModel = nullptr ;
2018-01-07 00:01:04 +01:00
for ( View * View : mViews )
2018-03-29 19:20:36 +02:00
View - > Clear ( ) ;
2017-03-27 03:14:08 +02:00
mViews . RemoveAll ( ) ;
2017-04-14 02:26:40 +02:00
mActiveView = nullptr ;
2017-03-27 03:14:08 +02:00
lcQGLWidget * Widget = ( lcQGLWidget * ) layout ( ) - > itemAt ( 0 ) - > widget ( ) ;
delete Widget - > widget ;
2017-04-14 02:26:40 +02:00
Widget - > widget = nullptr ;
2017-03-27 03:14:08 +02:00
}
2013-08-09 06:57:18 +02:00
lcMainWindow : : lcMainWindow ( )
2014-05-03 23:16:48 +02:00
{
2015-01-26 00:04:39 +01:00
memset ( mActions , 0 , sizeof ( mActions ) ) ;
2014-08-27 18:17:09 +02:00
mTransformType = LC_TRANSFORM_RELATIVE_TRANSLATION ;
2011-09-07 23:06:51 +02:00
2014-12-08 08:32:39 +01:00
mColorIndex = lcGetColorIndex ( 4 ) ;
mTool = LC_TOOL_SELECT ;
2014-05-21 00:15:42 +02:00
mAddKeys = false ;
2015-04-25 00:11:50 +02:00
mMoveSnapEnabled = true ;
mAngleSnapEnabled = true ;
2014-10-05 07:21:51 +02:00
mMoveXYSnapIndex = 4 ;
mMoveZSnapIndex = 3 ;
mAngleSnapIndex = 5 ;
2015-01-18 06:36:14 +01:00
mRelativeTransform = true ;
2017-04-14 02:26:40 +02:00
mCurrentPieceInfo = nullptr ;
2017-11-22 02:58:36 +01:00
mSelectionMode = lcSelectionMode : : SINGLE ;
2018-09-26 23:56:58 +02:00
mModelTabWidget = nullptr ;
2014-10-05 07:21:51 +02:00
2014-09-21 03:31:01 +02:00
memset ( & mSearchOptions , 0 , sizeof ( mSearchOptions ) ) ;
2014-05-21 00:15:42 +02:00
2013-08-09 06:57:18 +02:00
for ( int FileIdx = 0 ; FileIdx < LC_MAX_RECENT_FILES ; FileIdx + + )
2014-10-12 19:34:18 +02:00
mRecentFiles [ FileIdx ] = lcGetProfileString ( ( LC_PROFILE_KEY ) ( LC_PROFILE_RECENT_FILE1 + FileIdx ) ) ;
2011-09-07 23:06:51 +02:00
2018-05-14 02:37:02 +02:00
# if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
2018-05-14 02:09:06 +02:00
connect ( & mGamepadTimer , & QTimer : : timeout , this , & lcMainWindow : : UpdateGamepads ) ;
mLastGamepadUpdate = QDateTime : : currentDateTime ( ) ;
mGamepadTimer . start ( 33 ) ;
# endif
2013-08-09 06:57:18 +02:00
gMainWindow = this ;
2011-09-07 23:06:51 +02:00
}
2013-08-09 06:57:18 +02:00
lcMainWindow : : ~ lcMainWindow ( )
2011-09-07 23:06:51 +02:00
{
2016-12-16 18:14:19 +01:00
if ( mCurrentPieceInfo )
{
2017-01-23 04:28:05 +01:00
lcPiecesLibrary * Library = lcGetPiecesLibrary ( ) ;
Library - > ReleasePieceInfo ( mCurrentPieceInfo ) ;
2017-04-14 02:26:40 +02:00
mCurrentPieceInfo = nullptr ;
2016-12-16 18:14:19 +01:00
}
2013-08-09 06:57:18 +02:00
for ( int FileIdx = 0 ; FileIdx < LC_MAX_RECENT_FILES ; FileIdx + + )
lcSetProfileString ( ( LC_PROFILE_KEY ) ( LC_PROFILE_RECENT_FILE1 + FileIdx ) , mRecentFiles [ FileIdx ] ) ;
2011-09-07 23:06:51 +02:00
2017-04-14 02:26:40 +02:00
gMainWindow = nullptr ;
2013-08-09 06:57:18 +02:00
}
2011-09-07 23:06:51 +02:00
2015-01-26 00:04:39 +01:00
void lcMainWindow : : CreateWidgets ( )
{
2016-10-15 21:13:31 +02:00
setAcceptDrops ( true ) ;
2017-03-29 20:04:04 +02:00
setWindowIcon ( QIcon ( " :/resources/leocad.png " ) ) ;
2015-01-26 00:04:39 +01:00
setWindowFilePath ( QString ( ) ) ;
CreateActions ( ) ;
CreateToolBars ( ) ;
CreateMenus ( ) ;
CreateStatusBar ( ) ;
2017-03-27 08:12:05 +02:00
int AASamples = lcGetProfileInt ( LC_PROFILE_ANTIALIASING_SAMPLES ) ;
if ( AASamples > 1 )
{
QGLFormat format ;
format . setSampleBuffers ( true ) ;
format . setSamples ( AASamples ) ;
QGLFormat : : setDefaultFormat ( format ) ;
}
2018-01-07 17:59:05 +01:00
mModelTabWidget = new lcTabWidget ( ) ;
2016-03-06 21:07:39 +01:00
# if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
2018-01-07 17:59:05 +01:00
mModelTabWidget - > tabBar ( ) - > setMovable ( true ) ;
2016-03-06 02:47:00 +01:00
mModelTabWidget - > tabBar ( ) - > setTabsClosable ( true ) ;
2018-01-07 00:22:40 +01:00
mModelTabWidget - > tabBar ( ) - > setContextMenuPolicy ( Qt : : CustomContextMenu ) ;
connect ( mModelTabWidget - > tabBar ( ) , SIGNAL ( tabCloseRequested ( int ) ) , this , SLOT ( ModelTabClosed ( int ) ) ) ;
connect ( mModelTabWidget - > tabBar ( ) , SIGNAL ( customContextMenuRequested ( const QPoint & ) ) , this , SLOT ( ModelTabContextMenuRequested ( const QPoint & ) ) ) ;
2016-03-06 21:07:39 +01:00
# else
mModelTabWidget - > setMovable ( true ) ;
mModelTabWidget - > setTabsClosable ( true ) ;
2018-01-07 00:22:40 +01:00
connect ( mModelTabWidget , SIGNAL ( tabCloseRequested ( int ) ) , this , SLOT ( ModelTabClosed ( int ) ) ) ;
2016-03-06 21:07:39 +01:00
# endif
2016-03-06 02:47:00 +01:00
setCentralWidget ( mModelTabWidget ) ;
connect ( mModelTabWidget , SIGNAL ( currentChanged ( int ) ) , this , SLOT ( ModelTabChanged ( int ) ) ) ;
2015-01-26 00:04:39 +01:00
connect ( QApplication : : clipboard ( ) , SIGNAL ( dataChanged ( ) ) , this , SLOT ( ClipboardChanged ( ) ) ) ;
ClipboardChanged ( ) ;
QSettings Settings ;
Settings . beginGroup ( " MainWindow " ) ;
resize ( QSize ( 800 , 600 ) ) ;
move ( QPoint ( 200 , 200 ) ) ;
restoreGeometry ( Settings . value ( " Geometry " ) . toByteArray ( ) ) ;
restoreState ( Settings . value ( " State " ) . toByteArray ( ) ) ;
2017-02-06 18:06:52 +01:00
mPartSelectionWidget - > LoadState ( Settings ) ;
2015-01-26 00:04:39 +01:00
Settings . endGroup ( ) ;
}
void lcMainWindow : : CreateActions ( )
{
for ( int CommandIdx = 0 ; CommandIdx < LC_NUM_COMMANDS ; CommandIdx + + )
{
2015-09-25 08:03:30 +02:00
QAction * Action = new QAction ( qApp - > translate ( " Menu " , gCommands [ CommandIdx ] . MenuName ) , this ) ;
Action - > setStatusTip ( qApp - > translate ( " Status " , gCommands [ CommandIdx ] . StatusText ) ) ;
2015-01-26 00:04:39 +01:00
connect ( Action , SIGNAL ( triggered ( ) ) , this , SLOT ( ActionTriggered ( ) ) ) ;
addAction ( Action ) ;
mActions [ CommandIdx ] = Action ;
}
2017-12-11 00:01:12 +01:00
mActions [ LC_FILE_NEW ] - > setToolTip ( tr ( " New Model " ) ) ;
mActions [ LC_FILE_OPEN ] - > setToolTip ( tr ( " Open Model " ) ) ;
mActions [ LC_FILE_SAVE ] - > setToolTip ( tr ( " Save Model " ) ) ;
2015-01-26 00:04:39 +01:00
2015-10-03 20:57:59 +02:00
QIcon FileNewIcon ;
FileNewIcon . addFile ( " :/resources/file_new.png " ) ;
FileNewIcon . addFile ( " :/resources/file_new_16.png " ) ;
mActions [ LC_FILE_NEW ] - > setIcon ( FileNewIcon ) ;
QIcon FileSaveIcon ;
FileSaveIcon . addFile ( " :/resources/file_save.png " ) ;
FileSaveIcon . addFile ( " :/resources/file_save_16.png " ) ;
mActions [ LC_FILE_SAVE ] - > setIcon ( FileSaveIcon ) ;
QIcon FileOpenIcon ;
FileOpenIcon . addFile ( " :/resources/file_open.png " ) ;
FileOpenIcon . addFile ( " :/resources/file_open_16.png " ) ;
mActions [ LC_FILE_OPEN ] - > setIcon ( FileOpenIcon ) ;
QIcon FilePrintIcon ;
FilePrintIcon . addFile ( " :/resources/file_print.png " ) ;
FilePrintIcon . addFile ( " :/resources/file_print_16.png " ) ;
mActions [ LC_FILE_PRINT ] - > setIcon ( FilePrintIcon ) ;
QIcon FilePrintPreviewIcon ;
FilePrintPreviewIcon . addFile ( " :/resources/file_print_preview.png " ) ;
FilePrintPreviewIcon . addFile ( " :/resources/file_print_preview_16.png " ) ;
mActions [ LC_FILE_PRINT_PREVIEW ] - > setIcon ( FilePrintPreviewIcon ) ;
QIcon EditUndoIcon ;
EditUndoIcon . addFile ( " :/resources/edit_undo.png " ) ;
EditUndoIcon . addFile ( " :/resources/edit_undo_16.png " ) ;
mActions [ LC_EDIT_UNDO ] - > setIcon ( EditUndoIcon ) ;
QIcon EditRedoIcon ;
EditRedoIcon . addFile ( " :/resources/edit_redo.png " ) ;
EditRedoIcon . addFile ( " :/resources/edit_redo_16.png " ) ;
mActions [ LC_EDIT_REDO ] - > setIcon ( EditRedoIcon ) ;
QIcon EditCutIcon ;
EditCutIcon . addFile ( " :/resources/edit_cut.png " ) ;
EditCutIcon . addFile ( " :/resources/edit_cut_16.png " ) ;
mActions [ LC_EDIT_CUT ] - > setIcon ( EditCutIcon ) ;
QIcon EditCopyIcon ;
EditCopyIcon . addFile ( " :/resources/edit_copy.png " ) ;
EditCopyIcon . addFile ( " :/resources/edit_copy_16.png " ) ;
mActions [ LC_EDIT_COPY ] - > setIcon ( EditCopyIcon ) ;
QIcon EditPasteIcon ;
EditPasteIcon . addFile ( " :/resources/edit_paste.png " ) ;
EditPasteIcon . addFile ( " :/resources/edit_paste_16.png " ) ;
mActions [ LC_EDIT_PASTE ] - > setIcon ( EditPasteIcon ) ;
QIcon EditActionInsertIcon ;
EditActionInsertIcon . addFile ( " :/resources/action_insert.png " ) ;
EditActionInsertIcon . addFile ( " :/resources/action_insert_16.png " ) ;
mActions [ LC_EDIT_ACTION_INSERT ] - > setIcon ( EditActionInsertIcon ) ;
QIcon EditActionLightIcon ;
EditActionLightIcon . addFile ( " :/resources/action_light.png " ) ;
EditActionLightIcon . addFile ( " :/resources/action_light_16.png " ) ;
mActions [ LC_EDIT_ACTION_LIGHT ] - > setIcon ( EditActionLightIcon ) ;
QIcon EditActionSpotLightIcon ;
EditActionSpotLightIcon . addFile ( " :/resources/action_spotlight.png " ) ;
EditActionSpotLightIcon . addFile ( " :/resources/action_spotlight_16.png " ) ;
mActions [ LC_EDIT_ACTION_SPOTLIGHT ] - > setIcon ( EditActionSpotLightIcon ) ;
QIcon EditActionSelectIcon ;
EditActionSelectIcon . addFile ( " :/resources/action_select.png " ) ;
EditActionSelectIcon . addFile ( " :/resources/action_select_16.png " ) ;
mActions [ LC_EDIT_ACTION_SELECT ] - > setIcon ( EditActionSelectIcon ) ;
QIcon EditActionMoveIcon ;
EditActionMoveIcon . addFile ( " :/resources/action_move.png " ) ;
EditActionMoveIcon . addFile ( " :/resources/action_move_16.png " ) ;
mActions [ LC_EDIT_ACTION_MOVE ] - > setIcon ( EditActionMoveIcon ) ;
QIcon EditActionRotateIcon ;
EditActionRotateIcon . addFile ( " :/resources/action_rotate.png " ) ;
EditActionRotateIcon . addFile ( " :/resources/action_rotate_16.png " ) ;
mActions [ LC_EDIT_ACTION_ROTATE ] - > setIcon ( EditActionRotateIcon ) ;
QIcon EditActionDeleteIcon ;
EditActionDeleteIcon . addFile ( " :/resources/action_delete.png " ) ;
EditActionDeleteIcon . addFile ( " :/resources/action_delete_16.png " ) ;
mActions [ LC_EDIT_ACTION_DELETE ] - > setIcon ( EditActionDeleteIcon ) ;
QIcon EditActionPaintIcon ;
EditActionPaintIcon . addFile ( " :/resources/action_paint.png " ) ;
EditActionPaintIcon . addFile ( " :/resources/action_paint_16.png " ) ;
mActions [ LC_EDIT_ACTION_PAINT ] - > setIcon ( EditActionPaintIcon ) ;
QIcon EditActionZoomIcon ;
EditActionZoomIcon . addFile ( " :/resources/action_zoom.png " ) ;
EditActionZoomIcon . addFile ( " :/resources/action_zoom_16.png " ) ;
mActions [ LC_EDIT_ACTION_ZOOM ] - > setIcon ( EditActionZoomIcon ) ;
QIcon EditActionPanIcon ;
EditActionPanIcon . addFile ( " :/resources/action_pan.png " ) ;
EditActionPanIcon . addFile ( " :/resources/action_pan_16.png " ) ;
mActions [ LC_EDIT_ACTION_PAN ] - > setIcon ( EditActionPanIcon ) ;
2015-01-26 00:04:39 +01:00
mActions [ LC_EDIT_ACTION_CAMERA ] - > setIcon ( QIcon ( " :/resources/action_camera.png " ) ) ;
mActions [ LC_EDIT_ACTION_ROTATE_VIEW ] - > setIcon ( QIcon ( " :/resources/action_rotate_view.png " ) ) ;
mActions [ LC_EDIT_ACTION_ROLL ] - > setIcon ( QIcon ( " :/resources/action_roll.png " ) ) ;
mActions [ LC_EDIT_ACTION_ZOOM_REGION ] - > setIcon ( QIcon ( " :/resources/action_zoom_region.png " ) ) ;
2017-11-24 03:31:55 +01:00
mActions [ LC_EDIT_FIND ] - > setIcon ( QIcon ( " :/resources/edit_find.png " ) ) ;
2015-01-26 00:04:39 +01:00
mActions [ LC_EDIT_TRANSFORM_RELATIVE ] - > setIcon ( QIcon ( " :/resources/edit_transform_relative.png " ) ) ;
mActions [ LC_PIECE_SHOW_EARLIER ] - > setIcon ( QIcon ( " :/resources/piece_show_earlier.png " ) ) ;
mActions [ LC_PIECE_SHOW_LATER ] - > setIcon ( QIcon ( " :/resources/piece_show_later.png " ) ) ;
mActions [ LC_VIEW_SPLIT_HORIZONTAL ] - > setIcon ( QIcon ( " :/resources/view_split_horizontal.png " ) ) ;
mActions [ LC_VIEW_SPLIT_VERTICAL ] - > setIcon ( QIcon ( " :/resources/view_split_vertical.png " ) ) ;
mActions [ LC_VIEW_ZOOM_IN ] - > setIcon ( QIcon ( " :/resources/view_zoomin.png " ) ) ;
mActions [ LC_VIEW_ZOOM_OUT ] - > setIcon ( QIcon ( " :/resources/view_zoomout.png " ) ) ;
mActions [ LC_VIEW_ZOOM_EXTENTS ] - > setIcon ( QIcon ( " :/resources/view_zoomextents.png " ) ) ;
mActions [ LC_VIEW_TIME_FIRST ] - > setIcon ( QIcon ( " :/resources/time_first.png " ) ) ;
mActions [ LC_VIEW_TIME_PREVIOUS ] - > setIcon ( QIcon ( " :/resources/time_previous.png " ) ) ;
mActions [ LC_VIEW_TIME_NEXT ] - > setIcon ( QIcon ( " :/resources/time_next.png " ) ) ;
mActions [ LC_VIEW_TIME_LAST ] - > setIcon ( QIcon ( " :/resources/time_last.png " ) ) ;
mActions [ LC_VIEW_TIME_ADD_KEYS ] - > setIcon ( QIcon ( " :/resources/time_add_keys.png " ) ) ;
mActions [ LC_HELP_HOMEPAGE ] - > setIcon ( QIcon ( " :/resources/help_homepage.png " ) ) ;
mActions [ LC_EDIT_TRANSFORM_RELATIVE ] - > setCheckable ( true ) ;
2015-04-25 00:11:50 +02:00
mActions [ LC_EDIT_SNAP_MOVE_TOGGLE ] - > setCheckable ( true ) ;
mActions [ LC_EDIT_SNAP_ANGLE_TOGGLE ] - > setCheckable ( true ) ;
2015-01-26 00:04:39 +01:00
mActions [ LC_VIEW_CAMERA_NONE ] - > setCheckable ( true ) ;
mActions [ LC_VIEW_TIME_ADD_KEYS ] - > setCheckable ( true ) ;
QActionGroup * ActionSnapXYGroup = new QActionGroup ( this ) ;
for ( int ActionIdx = LC_EDIT_SNAP_MOVE_XY0 ; ActionIdx < = LC_EDIT_SNAP_MOVE_XY9 ; ActionIdx + + )
{
mActions [ ActionIdx ] - > setCheckable ( true ) ;
ActionSnapXYGroup - > addAction ( mActions [ ActionIdx ] ) ;
}
QActionGroup * ActionSnapZGroup = new QActionGroup ( this ) ;
for ( int ActionIdx = LC_EDIT_SNAP_MOVE_Z0 ; ActionIdx < = LC_EDIT_SNAP_MOVE_Z9 ; ActionIdx + + )
{
mActions [ ActionIdx ] - > setCheckable ( true ) ;
ActionSnapZGroup - > addAction ( mActions [ ActionIdx ] ) ;
}
QActionGroup * ActionSnapAngleGroup = new QActionGroup ( this ) ;
for ( int ActionIdx = LC_EDIT_SNAP_ANGLE0 ; ActionIdx < = LC_EDIT_SNAP_ANGLE9 ; ActionIdx + + )
{
mActions [ ActionIdx ] - > setCheckable ( true ) ;
ActionSnapAngleGroup - > addAction ( mActions [ ActionIdx ] ) ;
}
QActionGroup * ActionTransformTypeGroup = new QActionGroup ( this ) ;
for ( int ActionIdx = LC_EDIT_TRANSFORM_ABSOLUTE_TRANSLATION ; ActionIdx < = LC_EDIT_TRANSFORM_RELATIVE_ROTATION ; ActionIdx + + )
{
mActions [ ActionIdx ] - > setCheckable ( true ) ;
ActionTransformTypeGroup - > addAction ( mActions [ ActionIdx ] ) ;
}
QActionGroup * ActionToolGroup = new QActionGroup ( this ) ;
for ( int ActionIdx = LC_EDIT_ACTION_FIRST ; ActionIdx < = LC_EDIT_ACTION_LAST ; ActionIdx + + )
{
mActions [ ActionIdx ] - > setCheckable ( true ) ;
ActionToolGroup - > addAction ( mActions [ ActionIdx ] ) ;
}
QActionGroup * ActionCameraGroup = new QActionGroup ( this ) ;
ActionCameraGroup - > addAction ( mActions [ LC_VIEW_CAMERA_NONE ] ) ;
for ( int ActionIdx = LC_VIEW_CAMERA_FIRST ; ActionIdx < = LC_VIEW_CAMERA_LAST ; ActionIdx + + )
{
mActions [ ActionIdx ] - > setCheckable ( true ) ;
ActionCameraGroup - > addAction ( mActions [ ActionIdx ] ) ;
}
QActionGroup * ActionPerspectiveGroup = new QActionGroup ( this ) ;
for ( int ActionIdx = LC_VIEW_PROJECTION_FIRST ; ActionIdx < = LC_VIEW_PROJECTION_LAST ; ActionIdx + + )
{
mActions [ ActionIdx ] - > setCheckable ( true ) ;
ActionPerspectiveGroup - > addAction ( mActions [ ActionIdx ] ) ;
}
2017-08-25 21:57:14 +02:00
QActionGroup * ActionShadingGroup = new QActionGroup ( this ) ;
for ( int ActionIdx = LC_VIEW_SHADING_FIRST ; ActionIdx < = LC_VIEW_SHADING_LAST ; ActionIdx + + )
{
mActions [ ActionIdx ] - > setCheckable ( true ) ;
ActionShadingGroup - > addAction ( mActions [ ActionIdx ] ) ;
}
2017-11-22 02:58:36 +01:00
QActionGroup * SelectionModeGroup = new QActionGroup ( this ) ;
for ( int ActionIdx = LC_EDIT_SELECTION_MODE_FIRST ; ActionIdx < = LC_EDIT_SELECTION_MODE_LAST ; ActionIdx + + )
{
mActions [ ActionIdx ] - > setCheckable ( true ) ;
SelectionModeGroup - > addAction ( mActions [ ActionIdx ] ) ;
}
2015-01-26 00:04:39 +01:00
QActionGroup * ModelGroup = new QActionGroup ( this ) ;
for ( int ActionIdx = LC_MODEL_FIRST ; ActionIdx < = LC_MODEL_LAST ; ActionIdx + + )
{
mActions [ ActionIdx ] - > setCheckable ( true ) ;
ModelGroup - > addAction ( mActions [ ActionIdx ] ) ;
}
UpdateShortcuts ( ) ;
}
void lcMainWindow : : CreateMenus ( )
{
QMenu * TransformMenu = new QMenu ( tr ( " Transform " ) , this ) ;
TransformMenu - > addAction ( mActions [ LC_EDIT_TRANSFORM_RELATIVE_TRANSLATION ] ) ;
TransformMenu - > addAction ( mActions [ LC_EDIT_TRANSFORM_ABSOLUTE_TRANSLATION ] ) ;
TransformMenu - > addAction ( mActions [ LC_EDIT_TRANSFORM_RELATIVE_ROTATION ] ) ;
TransformMenu - > addAction ( mActions [ LC_EDIT_TRANSFORM_ABSOLUTE_ROTATION ] ) ;
mActions [ LC_EDIT_TRANSFORM ] - > setMenu ( TransformMenu ) ;
2015-12-04 21:32:10 +01:00
mCameraMenu = new QMenu ( tr ( " C&ameras " ) , this ) ;
mCameraMenu - > addAction ( mActions [ LC_VIEW_CAMERA_NONE ] ) ;
2015-01-26 00:04:39 +01:00
for ( int actionIdx = LC_VIEW_CAMERA_FIRST ; actionIdx < = LC_VIEW_CAMERA_LAST ; actionIdx + + )
2015-12-04 21:32:10 +01:00
mCameraMenu - > addAction ( mActions [ actionIdx ] ) ;
2015-01-26 00:04:39 +01:00
2015-12-04 21:32:10 +01:00
mCameraMenu - > addSeparator ( ) ;
mCameraMenu - > addAction ( mActions [ LC_VIEW_CAMERA_RESET ] ) ;
mViewpointMenu = new QMenu ( tr ( " &Viewpoints " ) , this ) ;
mViewpointMenu - > addAction ( mActions [ LC_VIEW_VIEWPOINT_FRONT ] ) ;
mViewpointMenu - > addAction ( mActions [ LC_VIEW_VIEWPOINT_BACK ] ) ;
mViewpointMenu - > addAction ( mActions [ LC_VIEW_VIEWPOINT_LEFT ] ) ;
mViewpointMenu - > addAction ( mActions [ LC_VIEW_VIEWPOINT_RIGHT ] ) ;
mViewpointMenu - > addAction ( mActions [ LC_VIEW_VIEWPOINT_TOP ] ) ;
mViewpointMenu - > addAction ( mActions [ LC_VIEW_VIEWPOINT_BOTTOM ] ) ;
mViewpointMenu - > addAction ( mActions [ LC_VIEW_VIEWPOINT_HOME ] ) ;
2015-01-26 00:04:39 +01:00
2017-10-31 20:33:35 +01:00
mProjectionMenu = new QMenu ( tr ( " Projection " ) , this ) ;
mProjectionMenu - > addAction ( mActions [ LC_VIEW_PROJECTION_PERSPECTIVE ] ) ;
mProjectionMenu - > addAction ( mActions [ LC_VIEW_PROJECTION_ORTHO ] ) ;
mShadingMenu = new QMenu ( tr ( " Sh&ading " ) , this ) ;
mShadingMenu - > addAction ( mActions [ LC_VIEW_SHADING_WIREFRAME ] ) ;
mShadingMenu - > addAction ( mActions [ LC_VIEW_SHADING_FLAT ] ) ;
mShadingMenu - > addAction ( mActions [ LC_VIEW_SHADING_DEFAULT_LIGHTS ] ) ;
2017-11-14 23:56:37 +01:00
mToolsMenu = new QMenu ( tr ( " Tools " ) , this ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_INSERT ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_LIGHT ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_SPOTLIGHT ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_CAMERA ] ) ;
mToolsMenu - > addSeparator ( ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_SELECT ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_MOVE ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_ROTATE ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_DELETE ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_PAINT ] ) ;
mToolsMenu - > addSeparator ( ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_ZOOM ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_PAN ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_ROTATE_VIEW ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_ROLL ] ) ;
mToolsMenu - > addAction ( mActions [ LC_EDIT_ACTION_ZOOM_REGION ] ) ;
2015-01-26 00:04:39 +01:00
QMenu * FileMenu = menuBar ( ) - > addMenu ( tr ( " &File " ) ) ;
FileMenu - > addAction ( mActions [ LC_FILE_NEW ] ) ;
FileMenu - > addAction ( mActions [ LC_FILE_OPEN ] ) ;
FileMenu - > addAction ( mActions [ LC_FILE_MERGE ] ) ;
FileMenu - > addSeparator ( ) ;
FileMenu - > addAction ( mActions [ LC_FILE_SAVE ] ) ;
FileMenu - > addAction ( mActions [ LC_FILE_SAVEAS ] ) ;
FileMenu - > addAction ( mActions [ LC_FILE_SAVE_IMAGE ] ) ;
2017-06-26 03:20:34 +02:00
QMenu * ImportMenu = FileMenu - > addMenu ( tr ( " &Import " ) ) ;
ImportMenu - > addAction ( mActions [ LC_FILE_IMPORT_LDD ] ) ;
2017-08-20 23:06:13 +02:00
# if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
2017-08-20 22:47:53 +02:00
ImportMenu - > addAction ( mActions [ LC_FILE_IMPORT_INVENTORY ] ) ;
2017-08-20 23:06:13 +02:00
# endif
2015-01-26 00:04:39 +01:00
QMenu * ExportMenu = FileMenu - > addMenu ( tr ( " &Export " ) ) ;
ExportMenu - > addAction ( mActions [ LC_FILE_EXPORT_3DS ] ) ;
ExportMenu - > addAction ( mActions [ LC_FILE_EXPORT_BRICKLINK ] ) ;
2017-08-11 03:40:43 +02:00
ExportMenu - > addAction ( mActions [ LC_FILE_EXPORT_COLLADA ] ) ;
2015-01-26 00:04:39 +01:00
ExportMenu - > addAction ( mActions [ LC_FILE_EXPORT_CSV ] ) ;
ExportMenu - > addAction ( mActions [ LC_FILE_EXPORT_HTML ] ) ;
ExportMenu - > addAction ( mActions [ LC_FILE_EXPORT_POVRAY ] ) ;
ExportMenu - > addAction ( mActions [ LC_FILE_EXPORT_WAVEFRONT ] ) ;
FileMenu - > addSeparator ( ) ;
2017-09-22 19:08:02 +02:00
FileMenu - > addAction ( mActions [ LC_FILE_RENDER ] ) ;
2015-01-26 00:04:39 +01:00
FileMenu - > addAction ( mActions [ LC_FILE_PRINT ] ) ;
FileMenu - > addAction ( mActions [ LC_FILE_PRINT_PREVIEW ] ) ;
// FileMenu->addAction(mActions[LC_FILE_PRINT_BOM]);
FileMenu - > addSeparator ( ) ;
FileMenu - > addAction ( mActions [ LC_FILE_RECENT1 ] ) ;
FileMenu - > addAction ( mActions [ LC_FILE_RECENT2 ] ) ;
FileMenu - > addAction ( mActions [ LC_FILE_RECENT3 ] ) ;
FileMenu - > addAction ( mActions [ LC_FILE_RECENT4 ] ) ;
mActionFileRecentSeparator = FileMenu - > addSeparator ( ) ;
FileMenu - > addAction ( mActions [ LC_FILE_EXIT ] ) ;
QMenu * EditMenu = menuBar ( ) - > addMenu ( tr ( " &Edit " ) ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_UNDO ] ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_REDO ] ) ;
EditMenu - > addSeparator ( ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_CUT ] ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_COPY ] ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_PASTE ] ) ;
EditMenu - > addSeparator ( ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_FIND ] ) ;
2015-10-03 20:57:59 +02:00
2015-01-26 00:04:39 +01:00
EditMenu - > addAction ( mActions [ LC_EDIT_FIND_NEXT ] ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_FIND_PREVIOUS ] ) ;
EditMenu - > addSeparator ( ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_SELECT_ALL ] ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_SELECT_NONE ] ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_SELECT_INVERT ] ) ;
EditMenu - > addAction ( mActions [ LC_EDIT_SELECT_BY_NAME ] ) ;
2017-02-17 07:57:11 +01:00
EditMenu - > addAction ( mActions [ LC_EDIT_SELECT_BY_COLOR ] ) ;
2017-11-24 03:31:55 +01:00
EditMenu - > addMenu ( mSelectionModeMenu ) ;
2017-11-14 23:56:37 +01:00
EditMenu - > addSeparator ( ) ;
EditMenu - > addMenu ( mToolsMenu ) ;
2015-01-26 00:04:39 +01:00
QMenu * ViewMenu = menuBar ( ) - > addMenu ( tr ( " &View " ) ) ;
ViewMenu - > addAction ( mActions [ LC_VIEW_PREFERENCES ] ) ;
ViewMenu - > addSeparator ( ) ;
ViewMenu - > addAction ( mActions [ LC_VIEW_ZOOM_EXTENTS ] ) ;
ViewMenu - > addAction ( mActions [ LC_VIEW_LOOK_AT ] ) ;
2015-12-04 21:32:10 +01:00
ViewMenu - > addMenu ( mViewpointMenu ) ;
ViewMenu - > addMenu ( mCameraMenu ) ;
2017-10-31 20:33:35 +01:00
ViewMenu - > addMenu ( mProjectionMenu ) ;
ViewMenu - > addMenu ( mShadingMenu ) ;
2015-01-26 00:04:39 +01:00
QMenu * StepMenu = ViewMenu - > addMenu ( tr ( " Ste&p " ) ) ;
StepMenu - > addAction ( mActions [ LC_VIEW_TIME_FIRST ] ) ;
StepMenu - > addAction ( mActions [ LC_VIEW_TIME_PREVIOUS ] ) ;
StepMenu - > addAction ( mActions [ LC_VIEW_TIME_NEXT ] ) ;
StepMenu - > addAction ( mActions [ LC_VIEW_TIME_LAST ] ) ;
StepMenu - > addSeparator ( ) ;
StepMenu - > addAction ( mActions [ LC_VIEW_TIME_INSERT ] ) ;
StepMenu - > addAction ( mActions [ LC_VIEW_TIME_DELETE ] ) ;
ViewMenu - > addSeparator ( ) ;
ViewMenu - > addAction ( mActions [ LC_VIEW_SPLIT_HORIZONTAL ] ) ;
ViewMenu - > addAction ( mActions [ LC_VIEW_SPLIT_VERTICAL ] ) ;
ViewMenu - > addAction ( mActions [ LC_VIEW_REMOVE_VIEW ] ) ;
ViewMenu - > addAction ( mActions [ LC_VIEW_RESET_VIEWS ] ) ;
ViewMenu - > addSeparator ( ) ;
QMenu * ToolBarsMenu = ViewMenu - > addMenu ( tr ( " T&oolbars " ) ) ;
ToolBarsMenu - > addAction ( mPartsToolBar - > toggleViewAction ( ) ) ;
2016-12-20 23:11:19 +01:00
ToolBarsMenu - > addAction ( mColorsToolBar - > toggleViewAction ( ) ) ;
2015-01-26 00:04:39 +01:00
ToolBarsMenu - > addAction ( mPropertiesToolBar - > toggleViewAction ( ) ) ;
2015-03-04 21:37:09 +01:00
ToolBarsMenu - > addAction ( mTimelineToolBar - > toggleViewAction ( ) ) ;
2015-01-26 00:04:39 +01:00
ToolBarsMenu - > addSeparator ( ) ;
ToolBarsMenu - > addAction ( mStandardToolBar - > toggleViewAction ( ) ) ;
ToolBarsMenu - > addAction ( mToolsToolBar - > toggleViewAction ( ) ) ;
ToolBarsMenu - > addAction ( mTimeToolBar - > toggleViewAction ( ) ) ;
ViewMenu - > addAction ( mActions [ LC_VIEW_FULLSCREEN ] ) ;
QMenu * PieceMenu = menuBar ( ) - > addMenu ( tr ( " &Piece " ) ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_INSERT ] ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_DELETE ] ) ;
2017-03-09 00:55:38 +01:00
PieceMenu - > addAction ( mActions [ LC_PIECE_DUPLICATE ] ) ;
2015-01-26 00:04:39 +01:00
PieceMenu - > addAction ( mActions [ LC_PIECE_ARRAY ] ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_MINIFIG_WIZARD ] ) ;
2018-02-24 21:47:19 +01:00
PieceMenu - > addAction ( mActions [ LC_PIECE_RESET_PIVOT_POINT ] ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_REMOVE_KEY_FRAMES ] ) ;
2015-01-26 00:04:39 +01:00
PieceMenu - > addSeparator ( ) ;
2018-05-07 03:26:17 +02:00
PieceMenu - > addAction ( mActions [ LC_PIECE_EDIT_SELECTED_SUBMODEL ] ) ;
2018-10-14 17:47:28 +02:00
PieceMenu - > addAction ( mActions [ LC_PIECE_EDIT_END_SUBMODEL ] ) ;
2015-12-04 23:41:08 +01:00
PieceMenu - > addAction ( mActions [ LC_PIECE_VIEW_SELECTED_MODEL ] ) ;
2015-12-02 00:31:28 +01:00
PieceMenu - > addAction ( mActions [ LC_PIECE_INLINE_SELECTED_MODELS ] ) ;
2015-12-04 23:41:08 +01:00
PieceMenu - > addAction ( mActions [ LC_PIECE_MOVE_SELECTION_TO_MODEL ] ) ;
2015-12-02 00:31:28 +01:00
PieceMenu - > addSeparator ( ) ;
2015-01-26 00:04:39 +01:00
PieceMenu - > addAction ( mActions [ LC_PIECE_GROUP ] ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_UNGROUP ] ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_GROUP_REMOVE ] ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_GROUP_ADD ] ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_GROUP_EDIT ] ) ;
PieceMenu - > addSeparator ( ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_HIDE_SELECTED ] ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_HIDE_UNSELECTED ] ) ;
PieceMenu - > addAction ( mActions [ LC_PIECE_UNHIDE_ALL ] ) ;
2017-12-11 00:01:12 +01:00
QMenu * ModelMenu = menuBar ( ) - > addMenu ( tr ( " Sub&model " ) ) ;
2015-01-26 00:04:39 +01:00
ModelMenu - > addAction ( mActions [ LC_MODEL_PROPERTIES ] ) ;
ModelMenu - > addAction ( mActions [ LC_MODEL_NEW ] ) ;
2019-03-10 15:51:49 +01:00
ModelMenu - > addAction ( mActions [ LC_MODEL_LIST ] ) ;
2015-01-26 00:04:39 +01:00
ModelMenu - > addSeparator ( ) ;
2016-02-25 02:44:12 +01:00
for ( int ModelIdx = LC_MODEL_FIRST ; ModelIdx < = LC_MODEL_LAST ; ModelIdx + + )
ModelMenu - > addAction ( mActions [ ModelIdx ] ) ;
2015-01-26 00:04:39 +01:00
QMenu * HelpMenu = menuBar ( ) - > addMenu ( tr ( " &Help " ) ) ;
HelpMenu - > addAction ( mActions [ LC_HELP_HOMEPAGE ] ) ;
2018-02-19 01:17:48 +01:00
HelpMenu - > addAction ( mActions [ LC_HELP_BUG_REPORT ] ) ;
2015-01-26 00:04:39 +01:00
# if !LC_DISABLE_UPDATE_CHECK
HelpMenu - > addAction ( mActions [ LC_HELP_UPDATES ] ) ;
# endif
2018-02-19 01:17:48 +01:00
# ifndef Q_OS_MACOS
2015-01-26 00:04:39 +01:00
HelpMenu - > addSeparator ( ) ;
2018-02-19 01:17:48 +01:00
# endif
2015-01-26 00:04:39 +01:00
HelpMenu - > addAction ( mActions [ LC_HELP_ABOUT ] ) ;
}
void lcMainWindow : : CreateToolBars ( )
{
2017-11-24 03:31:55 +01:00
mSelectionModeMenu = new QMenu ( tr ( " Selection Mode " ) , this ) ;
for ( int ModeIdx = LC_EDIT_SELECTION_MODE_FIRST ; ModeIdx < = LC_EDIT_SELECTION_MODE_LAST ; ModeIdx + + )
mSelectionModeMenu - > addAction ( mActions [ ModeIdx ] ) ;
QAction * SelectionModeAction = new QAction ( tr ( " Selection Mode " ) , this ) ;
SelectionModeAction - > setStatusTip ( tr ( " Change selection mode " ) ) ;
SelectionModeAction - > setIcon ( QIcon ( " :/resources/action_select.png " ) ) ;
SelectionModeAction - > setMenu ( mSelectionModeMenu ) ;
2015-01-26 00:04:39 +01:00
QMenu * SnapXYMenu = new QMenu ( tr ( " Snap XY " ) , this ) ;
for ( int actionIdx = LC_EDIT_SNAP_MOVE_XY0 ; actionIdx < = LC_EDIT_SNAP_MOVE_XY9 ; actionIdx + + )
SnapXYMenu - > addAction ( mActions [ actionIdx ] ) ;
QMenu * SnapZMenu = new QMenu ( tr ( " Snap Z " ) , this ) ;
for ( int actionIdx = LC_EDIT_SNAP_MOVE_Z0 ; actionIdx < = LC_EDIT_SNAP_MOVE_Z9 ; actionIdx + + )
SnapZMenu - > addAction ( mActions [ actionIdx ] ) ;
QMenu * SnapMenu = new QMenu ( tr ( " Snap Menu " ) , this ) ;
2015-04-25 00:11:50 +02:00
SnapMenu - > addAction ( mActions [ LC_EDIT_SNAP_MOVE_TOGGLE ] ) ;
SnapMenu - > addSeparator ( ) ;
2015-01-26 00:04:39 +01:00
SnapMenu - > addMenu ( SnapXYMenu ) ;
SnapMenu - > addMenu ( SnapZMenu ) ;
2015-04-25 00:11:50 +02:00
QAction * MoveAction = new QAction ( tr ( " Movement Snap " ) , this ) ;
2015-01-26 00:04:39 +01:00
MoveAction - > setStatusTip ( tr ( " Snap translations to fixed intervals " ) ) ;
MoveAction - > setIcon ( QIcon ( " :/resources/edit_snap_move.png " ) ) ;
MoveAction - > setMenu ( SnapMenu ) ;
QMenu * SnapAngleMenu = new QMenu ( tr ( " Snap Angle Menu " ) , this ) ;
2015-04-25 00:11:50 +02:00
SnapAngleMenu - > addAction ( mActions [ LC_EDIT_SNAP_ANGLE_TOGGLE ] ) ;
SnapAngleMenu - > addSeparator ( ) ;
2015-01-26 00:04:39 +01:00
for ( int actionIdx = LC_EDIT_SNAP_ANGLE0 ; actionIdx < = LC_EDIT_SNAP_ANGLE9 ; actionIdx + + )
SnapAngleMenu - > addAction ( mActions [ actionIdx ] ) ;
2015-04-25 00:11:50 +02:00
QAction * AngleAction = new QAction ( tr ( " Rotation Snap " ) , this ) ;
2015-01-26 00:04:39 +01:00
AngleAction - > setStatusTip ( tr ( " Snap rotations to fixed intervals " ) ) ;
AngleAction - > setIcon ( QIcon ( " :/resources/edit_snap_angle.png " ) ) ;
AngleAction - > setMenu ( SnapAngleMenu ) ;
mStandardToolBar = addToolBar ( tr ( " Standard " ) ) ;
mStandardToolBar - > setObjectName ( " StandardToolbar " ) ;
mStandardToolBar - > addAction ( mActions [ LC_FILE_NEW ] ) ;
mStandardToolBar - > addAction ( mActions [ LC_FILE_OPEN ] ) ;
mStandardToolBar - > addAction ( mActions [ LC_FILE_SAVE ] ) ;
mStandardToolBar - > addSeparator ( ) ;
mStandardToolBar - > addAction ( mActions [ LC_EDIT_UNDO ] ) ;
mStandardToolBar - > addAction ( mActions [ LC_EDIT_REDO ] ) ;
mStandardToolBar - > addSeparator ( ) ;
2017-11-24 03:31:55 +01:00
mStandardToolBar - > addAction ( SelectionModeAction ) ;
2015-01-26 00:04:39 +01:00
mStandardToolBar - > addAction ( mActions [ LC_EDIT_TRANSFORM_RELATIVE ] ) ;
mStandardToolBar - > addAction ( MoveAction ) ;
mStandardToolBar - > addAction ( AngleAction ) ;
2017-11-24 03:31:55 +01:00
( ( QToolButton * ) mStandardToolBar - > widgetForAction ( SelectionModeAction ) ) - > setPopupMode ( QToolButton : : InstantPopup ) ;
2015-01-26 00:04:39 +01:00
( ( QToolButton * ) mStandardToolBar - > widgetForAction ( MoveAction ) ) - > setPopupMode ( QToolButton : : InstantPopup ) ;
( ( QToolButton * ) mStandardToolBar - > widgetForAction ( AngleAction ) ) - > setPopupMode ( QToolButton : : InstantPopup ) ;
2017-11-14 01:54:14 +01:00
mTimeToolBar = addToolBar ( tr ( " Time " ) ) ;
mTimeToolBar - > setObjectName ( " TimeToolbar " ) ;
mTimeToolBar - > addAction ( mActions [ LC_VIEW_TIME_FIRST ] ) ;
mTimeToolBar - > addAction ( mActions [ LC_VIEW_TIME_PREVIOUS ] ) ;
mTimeToolBar - > addAction ( mActions [ LC_VIEW_TIME_NEXT ] ) ;
mTimeToolBar - > addAction ( mActions [ LC_VIEW_TIME_LAST ] ) ;
mTimeToolBar - > addAction ( mActions [ LC_VIEW_TIME_ADD_KEYS ] ) ;
2015-01-26 00:04:39 +01:00
mToolsToolBar = addToolBar ( tr ( " Tools " ) ) ;
mToolsToolBar - > setObjectName ( " ToolsToolbar " ) ;
insertToolBarBreak ( mToolsToolBar ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_INSERT ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_LIGHT ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_SPOTLIGHT ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_CAMERA ] ) ;
mToolsToolBar - > addSeparator ( ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_SELECT ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_MOVE ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_ROTATE ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_DELETE ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_PAINT ] ) ;
mToolsToolBar - > addSeparator ( ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_ZOOM ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_PAN ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_ROTATE_VIEW ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_ROLL ] ) ;
mToolsToolBar - > addAction ( mActions [ LC_EDIT_ACTION_ZOOM_REGION ] ) ;
2017-11-14 01:54:14 +01:00
mToolsToolBar - > hide ( ) ;
2015-01-26 00:04:39 +01:00
mPartsToolBar = new QDockWidget ( tr ( " Parts " ) , this ) ;
mPartsToolBar - > setObjectName ( " PartsToolbar " ) ;
2017-02-06 18:06:52 +01:00
mPartSelectionWidget = new lcPartSelectionWidget ( mPartsToolBar ) ;
2016-12-20 23:11:19 +01:00
mPartsToolBar - > setWidget ( mPartSelectionWidget ) ;
addDockWidget ( Qt : : RightDockWidgetArea , mPartsToolBar ) ;
mColorsToolBar = new QDockWidget ( tr ( " Colors " ) , this ) ;
mColorsToolBar - > setObjectName ( " ColorsToolbar " ) ;
2017-03-19 02:31:04 +01:00
mColorsToolBar - > setSizePolicy ( QSizePolicy : : Maximum , QSizePolicy : : Maximum ) ;
2015-01-26 00:04:39 +01:00
2016-12-29 16:37:24 +01:00
QFrame * ColorFrame = new QFrame ( mColorsToolBar ) ;
ColorFrame - > setFrameShape ( QFrame : : StyledPanel ) ;
ColorFrame - > setFrameShadow ( QFrame : : Sunken ) ;
QGridLayout * ColorLayout = new QGridLayout ( ColorFrame ) ;
ColorLayout - > setContentsMargins ( 0 , 0 , 0 , 0 ) ;
mColorList = new lcQColorList ( ColorFrame ) ;
ColorLayout - > addWidget ( mColorList ) ;
2015-01-26 00:04:39 +01:00
connect ( mColorList , SIGNAL ( colorChanged ( int ) ) , this , SLOT ( ColorChanged ( int ) ) ) ;
2016-12-29 16:37:24 +01:00
mColorsToolBar - > setWidget ( ColorFrame ) ;
2016-12-20 23:11:19 +01:00
addDockWidget ( Qt : : RightDockWidgetArea , mColorsToolBar ) ;
2015-01-26 00:04:39 +01:00
mPropertiesToolBar = new QDockWidget ( tr ( " Properties " ) , this ) ;
mPropertiesToolBar - > setObjectName ( " PropertiesToolbar " ) ;
2017-11-14 01:54:14 +01:00
QWidget * PropertiesWidget = new QWidget ( mPropertiesToolBar ) ;
QVBoxLayout * PropertiesLayout = new QVBoxLayout ( PropertiesWidget ) ;
mPropertiesWidget = new lcQPropertiesTree ( PropertiesWidget ) ;
PropertiesLayout - > addWidget ( mPropertiesWidget ) ;
QHBoxLayout * TransformLayout = new QHBoxLayout ;
QWidget * TransformWidget = new QWidget ( ) ;
TransformWidget - > setLayout ( TransformLayout ) ;
QToolButton * TransformButton = new QToolButton ( TransformWidget ) ;
TransformButton - > setDefaultAction ( mActions [ LC_EDIT_TRANSFORM ] ) ;
TransformButton - > setPopupMode ( QToolButton : : InstantPopup ) ;
TransformLayout - > addWidget ( TransformButton ) ;
2017-11-14 02:24:36 +01:00
mTransformXEdit = new lcTransformLineEdit ( ) ;
2017-11-14 01:54:14 +01:00
TransformLayout - > addWidget ( mTransformXEdit ) ;
2017-11-14 02:24:36 +01:00
mTransformYEdit = new lcTransformLineEdit ( ) ;
2017-11-14 01:54:14 +01:00
TransformLayout - > addWidget ( mTransformYEdit ) ;
2017-11-14 02:24:36 +01:00
mTransformZEdit = new lcTransformLineEdit ( ) ;
2017-11-14 01:54:14 +01:00
TransformLayout - > addWidget ( mTransformZEdit ) ;
2017-11-14 02:24:36 +01:00
2017-11-14 01:54:14 +01:00
PropertiesLayout - > addWidget ( TransformWidget ) ;
2017-11-14 02:24:36 +01:00
2017-11-14 01:54:14 +01:00
connect ( mTransformXEdit , SIGNAL ( returnPressed ( ) ) , mActions [ LC_EDIT_TRANSFORM ] , SIGNAL ( triggered ( ) ) ) ;
connect ( mTransformYEdit , SIGNAL ( returnPressed ( ) ) , mActions [ LC_EDIT_TRANSFORM ] , SIGNAL ( triggered ( ) ) ) ;
connect ( mTransformZEdit , SIGNAL ( returnPressed ( ) ) , mActions [ LC_EDIT_TRANSFORM ] , SIGNAL ( triggered ( ) ) ) ;
2015-01-26 00:04:39 +01:00
2017-11-14 01:54:14 +01:00
mPropertiesToolBar - > setWidget ( PropertiesWidget ) ;
2015-01-26 00:04:39 +01:00
addDockWidget ( Qt : : RightDockWidgetArea , mPropertiesToolBar ) ;
2015-03-04 21:37:09 +01:00
mTimelineToolBar = new QDockWidget ( tr ( " Timeline " ) , this ) ;
mTimelineToolBar - > setObjectName ( " TimelineToolbar " ) ;
2015-03-08 01:27:11 +01:00
mTimelineToolBar - > setAcceptDrops ( true ) ;
2015-03-04 21:37:09 +01:00
mTimelineWidget = new lcTimelineWidget ( mTimelineToolBar ) ;
mTimelineToolBar - > setWidget ( mTimelineWidget ) ;
addDockWidget ( Qt : : RightDockWidgetArea , mTimelineToolBar ) ;
2017-02-06 18:06:52 +01:00
tabifyDockWidget ( mPartsToolBar , mPropertiesToolBar ) ;
2015-03-04 21:37:09 +01:00
tabifyDockWidget ( mPropertiesToolBar , mTimelineToolBar ) ;
2017-02-06 18:06:52 +01:00
mPartsToolBar - > raise ( ) ;
2015-01-26 00:04:39 +01:00
}
void lcMainWindow : : CreateStatusBar ( )
{
QStatusBar * StatusBar = new QStatusBar ( this ) ;
setStatusBar ( StatusBar ) ;
mStatusBarLabel = new QLabel ( ) ;
StatusBar - > addWidget ( mStatusBarLabel ) ;
mStatusPositionLabel = new QLabel ( ) ;
StatusBar - > addPermanentWidget ( mStatusPositionLabel ) ;
mStatusSnapLabel = new QLabel ( ) ;
StatusBar - > addPermanentWidget ( mStatusSnapLabel ) ;
mStatusTimeLabel = new QLabel ( ) ;
StatusBar - > addPermanentWidget ( mStatusTimeLabel ) ;
}
2017-02-06 18:06:52 +01:00
void lcMainWindow : : closeEvent ( QCloseEvent * Event )
2015-01-26 00:04:39 +01:00
{
if ( SaveProjectIfModified ( ) )
{
2017-02-06 18:06:52 +01:00
Event - > accept ( ) ;
QSettings Settings ;
Settings . beginGroup ( " MainWindow " ) ;
Settings . setValue ( " Geometry " , saveGeometry ( ) ) ;
Settings . setValue ( " State " , saveState ( ) ) ;
mPartSelectionWidget - > SaveState ( Settings ) ;
Settings . endGroup ( ) ;
2018-01-07 00:01:04 +01:00
gApplication - > SaveTabLayout ( ) ;
2015-01-26 00:04:39 +01:00
}
else
2017-02-06 18:06:52 +01:00
Event - > ignore ( ) ;
2015-01-26 00:04:39 +01:00
}
2016-10-15 21:13:31 +02:00
void lcMainWindow : : dragEnterEvent ( QDragEnterEvent * Event )
{
if ( Event - > mimeData ( ) - > hasUrls ( ) )
Event - > acceptProposedAction ( ) ;
}
void lcMainWindow : : dropEvent ( QDropEvent * Event )
{
const QMimeData * MimeData = Event - > mimeData ( ) ;
2018-02-22 02:27:24 +01:00
const QList < QUrl > Urls = MimeData - > urls ( ) ;
for ( const QUrl & Url : Urls )
2016-10-15 21:13:31 +02:00
if ( OpenProject ( Url . toLocalFile ( ) ) )
break ;
}
2015-01-26 00:04:39 +01:00
QMenu * lcMainWindow : : createPopupMenu ( )
{
QMenu * Menu = new QMenu ( this ) ;
Menu - > addAction ( mPartsToolBar - > toggleViewAction ( ) ) ;
2016-12-20 23:11:19 +01:00
Menu - > addAction ( mColorsToolBar - > toggleViewAction ( ) ) ;
2015-01-26 00:04:39 +01:00
Menu - > addAction ( mPropertiesToolBar - > toggleViewAction ( ) ) ;
2015-03-04 21:37:09 +01:00
Menu - > addAction ( mTimelineToolBar - > toggleViewAction ( ) ) ;
2015-01-26 00:04:39 +01:00
Menu - > addSeparator ( ) ;
Menu - > addAction ( mStandardToolBar - > toggleViewAction ( ) ) ;
Menu - > addAction ( mToolsToolBar - > toggleViewAction ( ) ) ;
Menu - > addAction ( mTimeToolBar - > toggleViewAction ( ) ) ;
return Menu ;
}
2018-05-14 02:09:06 +02:00
void lcMainWindow : : UpdateGamepads ( )
{
2018-08-20 20:47:46 +02:00
# if LC_ENABLE_GAMEPAD
2018-05-14 02:09:06 +02:00
QDateTime Now = QDateTime : : currentDateTime ( ) ;
quint64 Elapsed = mLastGamepadUpdate . msecsTo ( Now ) ;
mLastGamepadUpdate = Now ;
if ( ! gMainWindow )
return ;
View * ActiveView = GetActiveView ( ) ;
if ( ! ActiveView )
return ;
const QList < int > Gamepads = QGamepadManager : : instance ( ) - > connectedGamepads ( ) ;
if ( Gamepads . isEmpty ( ) )
return ;
QGamepad Gamepad ( Gamepads [ 0 ] ) ;
float Scale = ( float ) Elapsed / 20.0f ;
lcVector3 Distance ( Scale * Gamepad . axisLeftX ( ) , 0.0f , - Scale * Gamepad . axisLeftY ( ) ) ;
if ( fabsf ( Distance . LengthSquared ( ) ) > 0.01f )
ActiveView - > MoveCamera ( Distance ) ;
# endif
}
2018-01-07 00:22:40 +01:00
void lcMainWindow : : ModelTabContextMenuRequested ( const QPoint & Point )
{
QMenu * Menu = new QMenu ;
mModelTabWidgetContextMenuIndex = mModelTabWidget - > tabBar ( ) - > tabAt ( Point ) ;
if ( mModelTabWidget - > count ( ) > 1 )
Menu - > addAction ( tr ( " Close Other Tabs " ) , this , SLOT ( ModelTabCloseOtherTabs ( ) ) ) ;
if ( mModelTabWidgetContextMenuIndex = = mModelTabWidget - > currentIndex ( ) )
Menu - > addAction ( tr ( " Reset Views " ) , this , SLOT ( ModelTabResetViews ( ) ) ) ;
Menu - > exec ( QCursor : : pos ( ) ) ;
2019-06-23 22:15:12 +02:00
delete Menu ;
2018-01-07 00:22:40 +01:00
}
void lcMainWindow : : ModelTabCloseOtherTabs ( )
{
if ( mModelTabWidgetContextMenuIndex = = - 1 )
return ;
while ( mModelTabWidget - > count ( ) - 1 > mModelTabWidgetContextMenuIndex )
delete mModelTabWidget - > widget ( mModelTabWidgetContextMenuIndex + 1 ) ;
while ( mModelTabWidget - > count ( ) > 1 )
delete mModelTabWidget - > widget ( 0 ) ;
}
void lcMainWindow : : ModelTabResetViews ( )
{
ResetViews ( ) ;
}
2016-03-06 02:47:00 +01:00
void lcMainWindow : : ModelTabClosed ( int Index )
{
2016-12-28 22:30:31 +01:00
if ( mModelTabWidget - > count ( ) ! = 1 )
delete mModelTabWidget - > widget ( Index ) ;
2016-03-06 02:47:00 +01:00
}
void lcMainWindow : : ModelTabChanged ( int Index )
{
Project * Project = lcGetActiveProject ( ) ;
lcModelTabWidget * CurrentTab = ( lcModelTabWidget * ) mModelTabWidget - > widget ( Index ) ;
2017-04-14 02:26:40 +02:00
Project - > SetActiveModel ( Project - > GetModels ( ) . FindIndex ( CurrentTab ? CurrentTab - > GetModel ( ) : nullptr ) ) ;
2016-03-06 02:47:00 +01:00
}
2015-01-26 00:04:39 +01:00
void lcMainWindow : : ClipboardChanged ( )
{
const QString MimeType = QLatin1String ( " application/vnd.leocad-clipboard " ) ;
const QMimeData * MimeData = QApplication : : clipboard ( ) - > mimeData ( ) ;
QByteArray ClipboardData ;
2019-04-02 20:19:23 +02:00
if ( MimeData & & MimeData - > hasFormat ( MimeType ) )
2015-01-26 00:04:39 +01:00
ClipboardData = MimeData - > data ( MimeType ) ;
2017-12-03 04:42:42 +01:00
gApplication - > SetClipboard ( ClipboardData ) ;
2015-01-26 00:04:39 +01:00
}
void lcMainWindow : : ActionTriggered ( )
{
QObject * Action = sender ( ) ;
for ( int CommandIdx = 0 ; CommandIdx < LC_NUM_COMMANDS ; CommandIdx + + )
{
if ( Action = = mActions [ CommandIdx ] )
{
HandleCommand ( ( lcCommandId ) CommandIdx ) ;
break ;
}
}
}
void lcMainWindow : : ColorChanged ( int ColorIndex )
{
SetColorIndex ( ColorIndex ) ;
}
2018-01-03 04:46:50 +01:00
void lcMainWindow : : ProjectFileChanged ( const QString & Path )
{
static bool Ignore ;
if ( Ignore )
return ;
2018-01-06 19:15:24 +01:00
QString Text = tr ( " The file '%1' has been modified by another application, do you want to reload it? " ) . arg ( QDir : : toNativeSeparators ( Path ) ) ;
2018-01-03 04:46:50 +01:00
2019-03-08 19:54:58 +01:00
Project * CurrentProject = lcGetActiveProject ( ) ;
2018-01-03 04:46:50 +01:00
Ignore = true ;
if ( QMessageBox : : question ( this , tr ( " File Changed " ) , Text , QMessageBox : : Yes | QMessageBox : : No ) ! = QMessageBox : : Yes )
{
Ignore = false ;
2019-03-08 19:54:58 +01:00
CurrentProject - > MarkAsModified ( ) ;
UpdateTitle ( ) ;
2018-01-03 04:46:50 +01:00
return ;
}
Ignore = false ;
2018-01-06 19:15:24 +01:00
QFileInfo FileInfo ( Path ) ;
2018-01-03 04:46:50 +01:00
2018-01-06 19:15:24 +01:00
if ( FileInfo = = QFileInfo ( CurrentProject - > GetFileName ( ) ) )
2018-01-03 04:46:50 +01:00
{
2018-01-06 19:15:24 +01:00
Project * NewProject = new Project ;
if ( NewProject - > Load ( Path ) )
{
2018-01-07 00:01:04 +01:00
QByteArray TabLayout = GetTabLayout ( ) ;
2018-01-06 19:15:24 +01:00
gApplication - > SetProject ( NewProject ) ;
RestoreTabLayout ( TabLayout ) ;
UpdateAllViews ( ) ;
}
2018-01-03 04:46:50 +01:00
}
else
{
2018-01-06 19:15:24 +01:00
PieceInfo * Info = lcGetPiecesLibrary ( ) - > FindPiece ( FileInfo . fileName ( ) . toLatin1 ( ) , CurrentProject , false , true ) ;
2018-11-01 00:16:45 +01:00
if ( Info & & Info - > IsProject ( ) )
2018-01-06 19:15:24 +01:00
Info - > GetProject ( ) - > Load ( Path ) ;
2018-01-03 04:46:50 +01:00
}
}
2015-01-26 00:04:39 +01:00
void lcMainWindow : : Print ( QPrinter * Printer )
{
2017-02-11 21:41:00 +01:00
# ifndef QT_NO_PRINTER
2015-01-26 00:04:39 +01:00
lcModel * Model = lcGetActiveModel ( ) ;
int DocCopies ;
int PageCopies ;
int Rows = lcGetProfileInt ( LC_PROFILE_PRINT_ROWS ) ;
int Columns = lcGetProfileInt ( LC_PROFILE_PRINT_COLUMNS ) ;
int StepsPerPage = Rows * Columns ;
int PageCount = ( Model - > GetLastStep ( ) + StepsPerPage - 1 ) / StepsPerPage ;
if ( Printer - > collateCopies ( ) )
{
DocCopies = 1 ;
2016-09-22 17:04:51 +02:00
# if (QT_VERSION >= QT_VERSION_CHECK(4, 7, 0))
2015-01-26 00:04:39 +01:00
PageCopies = Printer - > supportsMultipleCopies ( ) ? 1 : Printer - > copyCount ( ) ;
2016-09-22 17:04:51 +02:00
# endif
2015-01-26 00:04:39 +01:00
}
else
{
2016-09-22 17:04:51 +02:00
# if (QT_VERSION >= QT_VERSION_CHECK(4, 7, 0))
2015-01-26 00:04:39 +01:00
DocCopies = Printer - > supportsMultipleCopies ( ) ? 1 : Printer - > copyCount ( ) ;
2016-09-22 17:04:51 +02:00
# endif
2015-01-26 00:04:39 +01:00
PageCopies = 1 ;
}
int FromPage = Printer - > fromPage ( ) ;
int ToPage = Printer - > toPage ( ) ;
bool Ascending = true ;
if ( FromPage = = 0 & & ToPage = = 0 )
{
FromPage = 1 ;
ToPage = PageCount ;
}
FromPage = qMax ( 1 , FromPage ) ;
ToPage = qMin ( PageCount , ToPage ) ;
if ( ToPage < FromPage )
return ;
if ( Printer - > pageOrder ( ) = = QPrinter : : LastPageFirst )
{
int Tmp = FromPage ;
FromPage = ToPage ;
ToPage = Tmp ;
Ascending = false ;
}
2016-12-28 22:30:31 +01:00
GetActiveView ( ) - > MakeCurrent ( ) ;
lcContext * Context = GetActiveView ( ) - > mContext ;
2015-01-26 00:04:39 +01:00
QRect PageRect = Printer - > pageRect ( ) ;
int StepWidth = PageRect . width ( ) / Columns ;
int StepHeight = PageRect . height ( ) / Rows ;
View View ( Model ) ;
View . SetCamera ( GetActiveView ( ) - > mCamera , false ) ;
View . SetContext ( Context ) ;
2017-07-30 23:18:57 +02:00
View . BeginRenderToImage ( StepWidth , StepHeight ) ;
2015-01-26 00:04:39 +01:00
lcStep PreviousTime = Model - > GetCurrentStep ( ) ;
QPainter Painter ( Printer ) ;
// TODO: option to print background
for ( int DocCopy = 0 ; DocCopy < DocCopies ; DocCopy + + )
{
int Page = FromPage ;
for ( ; ; )
{
for ( int PageCopy = 0 ; PageCopy < PageCopies ; PageCopy + + )
{
if ( Printer - > printerState ( ) = = QPrinter : : Aborted | | Printer - > printerState ( ) = = QPrinter : : Error )
{
2015-03-15 20:42:11 +01:00
Model - > SetTemporaryStep ( PreviousTime ) ;
2017-07-30 23:18:57 +02:00
View . EndRenderToImage ( ) ;
2017-03-25 20:29:28 +01:00
Context - > ClearResources ( ) ;
2015-01-26 00:04:39 +01:00
return ;
}
lcStep CurrentStep = 1 + ( ( Page - 1 ) * Rows * Columns ) ;
for ( int Row = 0 ; Row < Rows ; Row + + )
{
for ( int Column = 0 ; Column < Columns ; Column + + )
{
if ( CurrentStep > Model - > GetLastStep ( ) )
break ;
2015-03-15 20:42:11 +01:00
Model - > SetTemporaryStep ( CurrentStep ) ;
2015-01-26 00:04:39 +01:00
2017-07-30 23:18:57 +02:00
View . OnDraw ( ) ;
2015-01-26 00:04:39 +01:00
2017-07-30 23:18:57 +02:00
QRect rect = Painter . viewport ( ) ;
int left = rect . x ( ) + ( StepWidth * Column ) ;
int bottom = rect . y ( ) + ( StepHeight * Row ) ;
2015-01-26 00:04:39 +01:00
2017-07-30 23:18:57 +02:00
Painter . drawImage ( left , bottom , View . GetRenderImage ( ) ) ;
2015-01-26 00:04:39 +01:00
// TODO: add print options somewhere but Qt doesn't allow changes to the page setup dialog
// DWORD dwPrint = theApp.GetProfileInt("Settings","Print", PRINT_NUMBERS|PRINT_BORDER);
QRect Rect = Painter . viewport ( ) ;
int Left = Rect . x ( ) + ( StepWidth * Column ) ;
int Right = Rect . x ( ) + ( StepWidth * ( Column + 1 ) ) ;
int Top = Rect . y ( ) + ( StepHeight * Row ) ;
int Bottom = Rect . y ( ) + ( StepHeight * ( Row + 1 ) ) ;
// if (print text)
{
QFont Font ( " Helvetica " , Printer - > resolution ( ) ) ;
Painter . setFont ( Font ) ;
QFontMetrics FontMetrics ( Font ) ;
int TextTop = Top + Printer - > resolution ( ) / 2 + FontMetrics . ascent ( ) ;
int TextLeft = Left + Printer - > resolution ( ) / 2 ;
Painter . drawText ( TextLeft , TextTop , QString : : number ( CurrentStep ) ) ;
}
// if (print border)
{
QPen BlackPen ( Qt : : black , 2 ) ;
Painter . setPen ( BlackPen ) ;
if ( Row = = 0 )
Painter . drawLine ( Left , Top , Right , Top ) ;
if ( Column = = 0 )
Painter . drawLine ( Left , Top , Left , Bottom ) ;
Painter . drawLine ( Left , Bottom , Right , Bottom ) ;
Painter . drawLine ( Right , Top , Right , Bottom ) ;
}
CurrentStep + + ;
}
}
// TODO: print header and footer
if ( PageCopy < PageCopies - 1 )
Printer - > newPage ( ) ;
}
if ( Page = = ToPage )
break ;
if ( Ascending )
Page + + ;
else
Page - - ;
Printer - > newPage ( ) ;
}
if ( DocCopy < DocCopies - 1 )
Printer - > newPage ( ) ;
}
2015-03-15 20:42:11 +01:00
Model - > SetTemporaryStep ( PreviousTime ) ;
2015-01-26 00:04:39 +01:00
2017-07-30 23:18:57 +02:00
View . EndRenderToImage ( ) ;
2017-03-25 20:29:28 +01:00
Context - > ClearResources ( ) ;
2017-02-11 21:41:00 +01:00
# endif
2015-01-26 00:04:39 +01:00
}
2017-11-19 23:12:27 +01:00
void lcMainWindow : : ShowSearchDialog ( )
{
2018-05-12 01:23:43 +02:00
lcModel * Model = GetActiveModel ( ) ;
2017-11-19 23:12:27 +01:00
if ( ! mSearchOptions . SearchValid )
{
lcObject * Focus = Model - > GetFocusObject ( ) ;
if ( Focus & & Focus - > IsPiece ( ) )
mSearchOptions . Info = ( ( lcPiece * ) Focus ) - > mPieceInfo ;
}
2018-05-12 01:23:43 +02:00
lcQFindDialog Dialog ( this , & mSearchOptions , Model ) ;
2017-11-19 23:12:27 +01:00
if ( Dialog . exec ( ) = = QDialog : : Accepted )
Model - > FindPiece ( true , true ) ;
}
2016-08-01 05:44:15 +02:00
void lcMainWindow : : ShowUpdatesDialog ( )
{
lcQUpdateDialog Dialog ( this , false ) ;
Dialog . exec ( ) ;
}
void lcMainWindow : : ShowAboutDialog ( )
{
lcQAboutDialog Dialog ( this ) ;
Dialog . exec ( ) ;
}
2017-12-11 03:12:31 +01:00
void lcMainWindow : : ShowHTMLDialog ( )
{
2017-12-11 20:14:37 +01:00
lcHTMLExportOptions Options ( lcGetActiveProject ( ) ) ;
2017-12-11 03:12:31 +01:00
lcQHTMLDialog Dialog ( this , & Options ) ;
if ( Dialog . exec ( ) ! = QDialog : : Accepted )
return ;
2017-12-11 20:14:37 +01:00
Options . SaveDefaults ( ) ;
2017-12-11 03:12:31 +01:00
lcGetActiveProject ( ) - > ExportHTML ( Options ) ;
}
2017-09-22 19:08:02 +02:00
void lcMainWindow : : ShowRenderDialog ( )
{
lcRenderDialog Dialog ( this ) ;
Dialog . exec ( ) ;
}
2015-01-26 00:04:39 +01:00
void lcMainWindow : : ShowPrintDialog ( )
{
2017-02-11 21:41:00 +01:00
# ifndef QT_NO_PRINTER
2015-01-26 00:04:39 +01:00
lcModel * Model = lcGetActiveModel ( ) ;
int Rows = lcGetProfileInt ( LC_PROFILE_PRINT_ROWS ) ;
int Columns = lcGetProfileInt ( LC_PROFILE_PRINT_COLUMNS ) ;
int StepsPerPage = Rows * Columns ;
int PageCount = ( Model - > GetLastStep ( ) + StepsPerPage - 1 ) / StepsPerPage ;
QPrinter Printer ( QPrinter : : HighResolution ) ;
Printer . setFromTo ( 1 , PageCount + 1 ) ;
QPrintDialog PrintDialog ( & Printer , this ) ;
if ( PrintDialog . exec ( ) = = QDialog : : Accepted )
Print ( & Printer ) ;
2017-02-11 21:41:00 +01:00
# endif
2015-01-26 00:04:39 +01:00
}
2017-08-26 17:37:52 +02:00
void lcMainWindow : : SetShadingMode ( lcShadingMode ShadingMode )
{
lcGetPreferences ( ) . mShadingMode = ShadingMode ;
UpdateShadingMode ( ) ;
UpdateAllViews ( ) ;
if ( mPartSelectionWidget )
mPartSelectionWidget - > Redraw ( ) ;
}
2017-11-22 02:58:36 +01:00
void lcMainWindow : : SetSelectionMode ( lcSelectionMode SelectionMode )
{
mSelectionMode = SelectionMode ;
UpdateSelectionMode ( ) ;
}
2018-01-07 00:01:04 +01:00
QByteArray lcMainWindow : : GetTabLayout ( )
2018-01-03 04:46:50 +01:00
{
2019-05-18 20:33:27 +02:00
QByteArray TabLayoutData ;
QDataStream DataStream ( & TabLayoutData , QIODevice : : WriteOnly ) ;
2018-01-03 04:46:50 +01:00
2018-01-07 00:01:04 +01:00
DataStream < < ( quint32 ) LC_TAB_LAYOUT_VERSION ;
2018-01-03 04:46:50 +01:00
qint32 NumTabs = mModelTabWidget - > count ( ) ;
DataStream < < NumTabs ;
DataStream < < ( ( lcModelTabWidget * ) mModelTabWidget - > currentWidget ( ) ) - > GetModel ( ) - > GetProperties ( ) . mName ;
for ( int TabIdx = 0 ; TabIdx < NumTabs ; TabIdx + + )
{
lcModelTabWidget * TabWidget = ( lcModelTabWidget * ) mModelTabWidget - > widget ( TabIdx ) ;
DataStream < < TabWidget - > GetModel ( ) - > GetProperties ( ) . mName ;
2018-01-07 00:01:04 +01:00
std : : function < void ( QWidget * ) > SaveWidget = [ & DataStream , & SaveWidget , & TabWidget ] ( QWidget * Widget )
2018-01-03 04:46:50 +01:00
{
if ( Widget - > metaObject ( ) = = & lcQGLWidget : : staticMetaObject )
{
2018-01-07 00:01:04 +01:00
View * CurrentView = ( View * ) ( ( lcQGLWidget * ) Widget ) - > widget ;
2018-01-03 04:46:50 +01:00
DataStream < < ( qint32 ) 0 ;
2018-01-07 00:01:04 +01:00
DataStream < < ( qint32 ) ( TabWidget - > GetActiveView ( ) = = CurrentView ? 1 : 0 ) ;
2018-01-03 04:46:50 +01:00
2018-01-07 00:01:04 +01:00
lcCamera * Camera = CurrentView - > mCamera ;
2018-01-03 04:46:50 +01:00
if ( Camera - > IsSimple ( ) )
{
DataStream < < ( qint32 ) 0 ;
DataStream < < Camera - > m_fovy ;
DataStream < < Camera - > m_zNear ;
DataStream < < Camera - > m_zFar ;
DataStream < < Camera - > mPosition ;
DataStream < < Camera - > mTargetPosition ;
DataStream < < Camera - > mUpVector ;
}
else
{
DataStream < < ( qint32 ) 1 ;
DataStream < < QByteArray : : fromRawData ( Camera - > m_strName , sizeof ( Camera - > m_strName ) ) ;
}
}
else
{
QSplitter * Splitter = ( QSplitter * ) Widget ;
DataStream < < ( qint32 ) ( Splitter - > orientation ( ) = = Qt : : Horizontal ? 1 : 2 ) ;
DataStream < < Splitter - > sizes ( ) ;
SaveWidget ( Splitter - > widget ( 0 ) ) ;
SaveWidget ( Splitter - > widget ( 1 ) ) ;
}
} ;
QLayout * TabLayout = TabWidget - > layout ( ) ;
SaveWidget ( TabLayout - > itemAt ( 0 ) - > widget ( ) ) ;
}
2019-05-18 20:33:27 +02:00
return TabLayoutData ;
2018-01-03 04:46:50 +01:00
}
void lcMainWindow : : RestoreTabLayout ( const QByteArray & TabLayout )
{
2018-01-07 00:01:04 +01:00
if ( TabLayout . isEmpty ( ) )
return ;
2018-01-03 04:46:50 +01:00
QDataStream DataStream ( TabLayout ) ;
2018-01-07 00:01:04 +01:00
quint32 Version ;
DataStream > > Version ;
if ( Version ! = LC_TAB_LAYOUT_VERSION )
return ;
2018-01-03 04:46:50 +01:00
qint32 NumTabs ;
DataStream > > NumTabs ;
QString CurrentTabName ;
DataStream > > CurrentTabName ;
RemoveAllModelTabs ( ) ;
2018-01-16 01:36:50 +01:00
bool ModelAdded = false ;
2018-01-03 04:46:50 +01:00
for ( int TabIdx = 0 ; TabIdx < NumTabs ; TabIdx + + )
{
QString ModelName ;
DataStream > > ModelName ;
lcModel * Model = lcGetActiveProject ( ) - > GetModel ( ModelName ) ;
lcModelTabWidget * TabWidget = nullptr ;
if ( Model )
{
SetCurrentModelTab ( Model ) ;
TabWidget = ( lcModelTabWidget * ) mModelTabWidget - > widget ( mModelTabWidget - > count ( ) - 1 ) ;
2018-01-16 01:36:50 +01:00
ModelAdded = true ;
2018-01-03 04:46:50 +01:00
}
2018-01-16 02:03:08 +01:00
QWidget * ActiveWidget = nullptr ;
2018-01-07 00:01:04 +01:00
2019-03-11 21:04:31 +01:00
std : : function < void ( QWidget * ) > LoadWidget = [ & DataStream , & LoadWidget , & ActiveWidget , this ] ( QWidget * ParentWidget )
2018-01-03 04:46:50 +01:00
{
qint32 WidgetType ;
DataStream > > WidgetType ;
if ( WidgetType = = 0 )
{
2018-01-07 00:01:04 +01:00
qint32 IsActive ;
DataStream > > IsActive ;
if ( IsActive )
ActiveWidget = ParentWidget ;
2018-01-03 04:46:50 +01:00
qint32 CameraType ;
DataStream > > CameraType ;
View * CurrentView = nullptr ;
if ( ParentWidget )
CurrentView = ( View * ) ( ( lcQGLWidget * ) ParentWidget ) - > widget ;
if ( CameraType = = 0 )
{
float FoV , ZNear , ZFar ;
lcVector3 Position , TargetPosition , UpVector ;
DataStream > > FoV ;
DataStream > > ZNear ;
DataStream > > ZFar ;
DataStream > > Position ;
DataStream > > TargetPosition ;
DataStream > > UpVector ;
if ( CurrentView )
{
lcCamera * Camera = CurrentView - > mCamera ;
2019-07-13 17:58:31 +02:00
if ( ! std : : isnan ( FoV ) )
Camera - > m_fovy = FoV ;
if ( ! std : : isnan ( ZNear ) )
Camera - > m_zNear = ZNear ;
if ( ! std : : isnan ( ZFar ) )
Camera - > m_zFar = ZFar ;
if ( ! Position . IsNan ( ) & & ! TargetPosition . IsNan ( ) & & ! UpVector . IsNan ( ) )
{
Camera - > mPosition = Position ;
Camera - > mTargetPosition = TargetPosition ;
Camera - > mUpVector = UpVector ;
}
2018-01-03 04:46:50 +01:00
Camera - > UpdatePosition ( 1 ) ;
}
}
else
{
QByteArray CameraName ;
DataStream > > CameraName ;
if ( CurrentView )
CurrentView - > SetCamera ( CameraName ) ;
}
}
else
{
QList < int > Sizes ;
DataStream > > Sizes ;
if ( ParentWidget )
{
ParentWidget - > setFocus ( ) ;
if ( WidgetType = = 1 )
SplitVertical ( ) ;
else
SplitHorizontal ( ) ;
QSplitter * Splitter = ( QSplitter * ) ParentWidget - > parentWidget ( ) ;
Splitter - > setSizes ( Sizes ) ;
LoadWidget ( Splitter - > widget ( 0 ) ) ;
LoadWidget ( Splitter - > widget ( 1 ) ) ;
}
else
{
LoadWidget ( nullptr ) ;
LoadWidget ( nullptr ) ;
}
}
} ;
2018-01-06 19:15:24 +01:00
LoadWidget ( TabWidget ? TabWidget - > layout ( ) - > itemAt ( 0 ) - > widget ( ) : nullptr ) ;
2018-01-07 00:01:04 +01:00
2018-01-16 02:03:08 +01:00
if ( ActiveWidget & & TabWidget )
2018-01-07 00:01:04 +01:00
{
View * ActiveView = ( View * ) ( ( lcQGLWidget * ) ActiveWidget ) - > widget ;
TabWidget - > SetActiveView ( ActiveView ) ;
}
2018-01-03 04:46:50 +01:00
}
2018-01-16 01:36:50 +01:00
if ( ! ModelAdded )
2018-01-03 04:46:50 +01:00
lcGetActiveProject ( ) - > SetActiveModel ( 0 ) ;
else
lcGetActiveProject ( ) - > SetActiveModel ( CurrentTabName ) ;
}
2016-03-06 02:47:00 +01:00
void lcMainWindow : : RemoveAllModelTabs ( )
{
2017-03-27 03:14:08 +02:00
while ( mModelTabWidget - > count ( ) > 1 )
2016-03-06 02:47:00 +01:00
{
QWidget * TabWidget = mModelTabWidget - > widget ( 0 ) ;
delete TabWidget ;
}
2017-03-27 03:14:08 +02:00
if ( mModelTabWidget - > count ( ) )
{
lcModelTabWidget * TabWidget = ( lcModelTabWidget * ) mModelTabWidget - > widget ( 0 ) ;
TabWidget - > Clear ( ) ;
}
2016-03-06 02:47:00 +01:00
}
2019-01-21 01:36:59 +01:00
void lcMainWindow : : CloseCurrentModelTab ( )
{
if ( mModelTabWidget - > count ( ) > 1 )
delete mModelTabWidget - > currentWidget ( ) ;
}
2016-03-06 02:47:00 +01:00
void lcMainWindow : : SetCurrentModelTab ( lcModel * Model )
{
2017-04-14 02:26:40 +02:00
lcModelTabWidget * EmptyWidget = nullptr ;
2017-03-27 03:14:08 +02:00
2016-03-06 02:47:00 +01:00
for ( int TabIdx = 0 ; TabIdx < mModelTabWidget - > count ( ) ; TabIdx + + )
{
lcModelTabWidget * TabWidget = ( lcModelTabWidget * ) mModelTabWidget - > widget ( TabIdx ) ;
if ( TabWidget - > GetModel ( ) = = Model )
{
mModelTabWidget - > setCurrentIndex ( TabIdx ) ;
return ;
}
2017-03-27 03:14:08 +02:00
if ( ! TabWidget - > GetModel ( ) )
EmptyWidget = TabWidget ;
2016-03-06 02:47:00 +01:00
}
2017-03-27 03:14:08 +02:00
lcModelTabWidget * TabWidget ;
lcQGLWidget * ViewWidget ;
View * NewView ;
2016-03-06 02:47:00 +01:00
2017-03-27 03:14:08 +02:00
if ( ! EmptyWidget )
{
TabWidget = new lcModelTabWidget ( Model ) ;
mModelTabWidget - > addTab ( TabWidget , Model - > GetProperties ( ) . mName ) ;
QGridLayout * CentralLayout = new QGridLayout ( TabWidget ) ;
CentralLayout - > setContentsMargins ( 0 , 0 , 0 , 0 ) ;
NewView = new View ( Model ) ;
ViewWidget = new lcQGLWidget ( TabWidget , NewView , true ) ;
CentralLayout - > addWidget ( ViewWidget , 0 , 0 , 1 , 1 ) ;
2019-03-11 00:26:30 +01:00
mModelTabWidget - > setCurrentWidget ( TabWidget ) ;
2017-03-27 03:14:08 +02:00
}
else
{
TabWidget = EmptyWidget ;
TabWidget - > SetModel ( Model ) ;
NewView = new View ( Model ) ;
ViewWidget = ( lcQGLWidget * ) TabWidget - > layout ( ) - > itemAt ( 0 ) - > widget ( ) ;
ViewWidget - > widget = NewView ;
NewView - > mWidget = ViewWidget ;
NewView - > mWidth = ViewWidget - > width ( ) ;
NewView - > mHeight = ViewWidget - > height ( ) ;
AddView ( NewView ) ;
2019-03-11 00:26:30 +01:00
mModelTabWidget - > setCurrentWidget ( TabWidget ) ;
2017-03-27 03:14:08 +02:00
}
2016-03-06 02:47:00 +01:00
2016-03-08 01:30:00 +01:00
ViewWidget - > show ( ) ;
2016-03-06 02:47:00 +01:00
ViewWidget - > setFocus ( ) ;
NewView - > ZoomExtents ( ) ;
SetActiveView ( NewView ) ;
}
2015-01-16 03:07:31 +01:00
void lcMainWindow : : ResetCameras ( )
{
2016-03-06 02:47:00 +01:00
lcModelTabWidget * CurrentTab = ( lcModelTabWidget * ) mModelTabWidget - > currentWidget ( ) ;
if ( ! CurrentTab )
return ;
const lcArray < View * > * Views = CurrentTab - > GetViews ( ) ;
for ( int ViewIdx = 0 ; ViewIdx < Views - > GetSize ( ) ; ViewIdx + + )
( * Views ) [ ViewIdx ] - > SetDefaultCamera ( ) ;
2015-01-16 03:07:31 +01:00
lcGetActiveModel ( ) - > DeleteAllCameras ( ) ;
}
2014-05-03 23:16:48 +02:00
void lcMainWindow : : AddView ( View * View )
{
2018-03-29 19:20:36 +02:00
lcModelTabWidget * TabWidget = GetTabWidgetForModel ( View - > GetModel ( ) ) ;
2016-03-06 02:47:00 +01:00
if ( ! TabWidget )
return ;
TabWidget - > AddView ( View ) ;
2014-05-03 23:16:48 +02:00
View - > MakeCurrent ( ) ;
2016-03-06 02:47:00 +01:00
if ( ! TabWidget - > GetActiveView ( ) )
2014-05-03 23:16:48 +02:00
{
2016-03-06 02:47:00 +01:00
TabWidget - > SetActiveView ( View ) ;
2014-05-03 23:16:48 +02:00
UpdatePerspective ( ) ;
}
}
void lcMainWindow : : RemoveView ( View * View )
{
2016-03-06 02:47:00 +01:00
lcModelTabWidget * TabWidget = GetTabForView ( View ) ;
2014-05-03 23:16:48 +02:00
2016-03-06 02:47:00 +01:00
if ( TabWidget )
TabWidget - > RemoveView ( View ) ;
2014-05-03 23:16:48 +02:00
}
void lcMainWindow : : SetActiveView ( View * ActiveView )
{
2016-03-06 02:47:00 +01:00
lcModelTabWidget * TabWidget = GetTabForView ( ActiveView ) ;
2019-02-10 01:43:39 +01:00
View * CurrentActiveView = TabWidget - > GetActiveView ( ) ;
2016-03-06 02:47:00 +01:00
2019-02-10 01:43:39 +01:00
if ( ! TabWidget | | CurrentActiveView = = ActiveView )
2014-05-03 23:16:48 +02:00
return ;
2019-02-10 01:43:39 +01:00
if ( CurrentActiveView )
CurrentActiveView - > SetTopSubmodelActive ( ) ;
2016-03-06 02:47:00 +01:00
TabWidget - > SetActiveView ( ActiveView ) ;
2014-05-03 23:16:48 +02:00
UpdateCameraMenu ( ) ;
UpdatePerspective ( ) ;
}
void lcMainWindow : : UpdateAllViews ( )
{
2016-03-06 02:47:00 +01:00
lcModelTabWidget * CurrentTab = ( lcModelTabWidget * ) mModelTabWidget - > currentWidget ( ) ;
if ( CurrentTab )
{
const lcArray < View * > * Views = CurrentTab - > GetViews ( ) ;
for ( int ViewIdx = 0 ; ViewIdx < Views - > GetSize ( ) ; ViewIdx + + )
( * Views ) [ ViewIdx ] - > Redraw ( ) ;
}
2014-05-03 23:16:48 +02:00
}
2014-05-23 02:02:21 +02:00
void lcMainWindow : : SetTool ( lcTool Tool )
{
mTool = Tool ;
2015-01-26 00:04:39 +01:00
QAction * Action = mActions [ LC_EDIT_ACTION_FIRST + mTool ] ;
if ( Action )
Action - > setChecked ( true ) ;
2014-05-23 02:02:21 +02:00
UpdateAllViews ( ) ;
}
2013-08-09 06:57:18 +02:00
void lcMainWindow : : SetColorIndex ( int ColorIndex )
2014-05-03 23:16:48 +02:00
{
2013-08-09 06:57:18 +02:00
mColorIndex = ColorIndex ;
2016-12-28 22:30:31 +01:00
if ( mPartSelectionWidget )
2017-02-04 22:14:41 +01:00
mPartSelectionWidget - > SetColorIndex ( ColorIndex ) ;
2015-01-17 03:02:30 +01:00
UpdateColor ( ) ;
2011-09-07 23:06:51 +02:00
}
2015-04-25 00:11:50 +02:00
void lcMainWindow : : SetMoveSnapEnabled ( bool Enabled )
{
mMoveSnapEnabled = Enabled ;
UpdateSnap ( ) ;
}
void lcMainWindow : : SetAngleSnapEnabled ( bool Enabled )
{
mAngleSnapEnabled = Enabled ;
UpdateSnap ( ) ;
}
2014-10-05 07:21:51 +02:00
void lcMainWindow : : SetMoveXYSnapIndex ( int Index )
{
mMoveXYSnapIndex = Index ;
UpdateSnap ( ) ;
}
void lcMainWindow : : SetMoveZSnapIndex ( int Index )
{
mMoveZSnapIndex = Index ;
UpdateSnap ( ) ;
}
void lcMainWindow : : SetAngleSnapIndex ( int Index )
{
mAngleSnapIndex = Index ;
UpdateSnap ( ) ;
}
2015-01-18 06:36:14 +01:00
void lcMainWindow : : SetRelativeTransform ( bool RelativeTransform )
{
mRelativeTransform = RelativeTransform ;
UpdateLockSnap ( ) ;
UpdateAllViews ( ) ;
}
2015-01-26 00:04:39 +01:00
void lcMainWindow : : SetTransformType ( lcTransformType TransformType )
{
mTransformType = TransformType ;
const char * IconNames [ ] =
{
" :/resources/edit_transform_absolute_translation.png " ,
" :/resources/edit_transform_relative_translation.png " ,
" :/resources/edit_transform_absolute_rotation.png " ,
" :/resources/edit_transform_relative_rotation.png "
} ;
if ( TransformType > = 0 & & TransformType < = 3 )
{
mActions [ LC_EDIT_TRANSFORM_ABSOLUTE_TRANSLATION + TransformType ] - > setChecked ( true ) ;
mActions [ LC_EDIT_TRANSFORM ] - > setIcon ( QIcon ( IconNames [ TransformType ] ) ) ;
}
}
2016-12-16 18:14:19 +01:00
void lcMainWindow : : SetCurrentPieceInfo ( PieceInfo * Info )
{
2017-01-23 04:28:05 +01:00
lcPiecesLibrary * Library = lcGetPiecesLibrary ( ) ;
2016-12-16 18:14:19 +01:00
if ( mCurrentPieceInfo )
2017-01-23 04:28:05 +01:00
Library - > ReleasePieceInfo ( mCurrentPieceInfo ) ;
2016-12-16 18:14:19 +01:00
mCurrentPieceInfo = Info ;
if ( mCurrentPieceInfo )
2017-01-23 04:28:05 +01:00
Library - > LoadPieceInfo ( mCurrentPieceInfo , true , true ) ;
2016-12-16 18:14:19 +01:00
}
2015-01-26 00:04:39 +01:00
lcVector3 lcMainWindow : : GetTransformAmount ( )
{
lcVector3 Transform ;
2016-06-14 01:57:31 +02:00
Transform . x = lcParseValueLocalized ( mTransformXEdit - > text ( ) ) ;
Transform . y = lcParseValueLocalized ( mTransformYEdit - > text ( ) ) ;
Transform . z = lcParseValueLocalized ( mTransformZEdit - > text ( ) ) ;
2015-01-26 00:04:39 +01:00
return Transform ;
}
void lcMainWindow : : SplitView ( Qt : : Orientation Orientation )
{
QWidget * Focus = focusWidget ( ) ;
2015-02-02 07:00:21 +01:00
if ( Focus - > metaObject ( ) ! = & lcQGLWidget : : staticMetaObject )
2015-01-26 00:04:39 +01:00
return ;
QWidget * Parent = Focus - > parentWidget ( ) ;
QSplitter * Splitter ;
QList < int > Sizes ;
2016-03-07 19:30:25 +01:00
if ( Parent - > metaObject ( ) = = & lcModelTabWidget : : staticMetaObject )
2015-01-26 00:04:39 +01:00
{
Splitter = new QSplitter ( Orientation , Parent ) ;
Parent - > layout ( ) - > addWidget ( Splitter ) ;
Splitter - > addWidget ( Focus ) ;
2018-05-12 01:23:43 +02:00
Splitter - > addWidget ( new lcQGLWidget ( mModelTabWidget - > currentWidget ( ) , new View ( GetCurrentTabModel ( ) ) , true ) ) ;
2015-01-26 00:04:39 +01:00
}
else
{
QSplitter * ParentSplitter = ( QSplitter * ) Parent ;
Sizes = ParentSplitter - > sizes ( ) ;
int FocusIndex = ParentSplitter - > indexOf ( Focus ) ;
Splitter = new QSplitter ( Orientation , Parent ) ;
ParentSplitter - > insertWidget ( FocusIndex , Splitter ) ;
Splitter - > addWidget ( Focus ) ;
2018-05-12 01:23:43 +02:00
Splitter - > addWidget ( new lcQGLWidget ( mModelTabWidget - > currentWidget ( ) , new View ( GetCurrentTabModel ( ) ) , true ) ) ;
2015-01-26 00:04:39 +01:00
ParentSplitter - > setSizes ( Sizes ) ;
}
Sizes . clear ( ) ;
Sizes . append ( 10 ) ;
Sizes . append ( 10 ) ;
Splitter - > setSizes ( Sizes ) ;
2017-03-26 19:28:58 +02:00
Focus - > setFocus ( ) ;
2015-01-26 00:04:39 +01:00
}
void lcMainWindow : : SplitHorizontal ( )
{
SplitView ( Qt : : Vertical ) ;
}
void lcMainWindow : : SplitVertical ( )
{
SplitView ( Qt : : Horizontal ) ;
}
void lcMainWindow : : RemoveActiveView ( )
{
QWidget * Focus = focusWidget ( ) ;
2015-02-02 07:00:21 +01:00
if ( Focus - > metaObject ( ) ! = & lcQGLWidget : : staticMetaObject )
2015-01-26 00:04:39 +01:00
return ;
QWidget * Parent = Focus - > parentWidget ( ) ;
2016-03-07 19:30:25 +01:00
if ( Parent - > metaObject ( ) = = & lcModelTabWidget : : staticMetaObject )
2015-01-26 00:04:39 +01:00
return ;
QWidget * ParentParentWidget = Parent - > parentWidget ( ) ;
QSplitter * ParentSplitter = ( QSplitter * ) Parent ;
int FocusIndex = ParentSplitter - > indexOf ( Focus ) ;
2017-03-26 19:28:58 +02:00
QWidget * OtherWidget = ParentSplitter - > widget ( ! FocusIndex ) ;
2015-01-26 00:04:39 +01:00
2016-03-07 19:30:25 +01:00
if ( ParentParentWidget - > metaObject ( ) = = & lcModelTabWidget : : staticMetaObject )
2015-01-26 00:04:39 +01:00
{
QLayout * CentralLayout = ParentParentWidget - > layout ( ) ;
2017-03-26 19:28:58 +02:00
CentralLayout - > addWidget ( OtherWidget ) ;
2015-01-26 00:04:39 +01:00
CentralLayout - > removeWidget ( Parent ) ;
2017-03-26 19:28:58 +02:00
}
else
{
QSplitter * ParentParentSplitter = ( QSplitter * ) ParentParentWidget ;
QList < int > Sizes = ParentParentSplitter - > sizes ( ) ;
2015-01-26 00:04:39 +01:00
2017-03-26 19:28:58 +02:00
int ParentIndex = ParentParentSplitter - > indexOf ( Parent ) ;
2018-02-18 02:28:53 +01:00
Parent - > setParent ( nullptr ) ;
2017-03-26 19:28:58 +02:00
ParentParentSplitter - > insertWidget ( ParentIndex , OtherWidget ) ;
ParentParentSplitter - > setSizes ( Sizes ) ;
2015-01-26 00:04:39 +01:00
}
2017-03-26 19:28:58 +02:00
Parent - > deleteLater ( ) ;
2015-01-26 00:04:39 +01:00
2017-03-26 19:28:58 +02:00
if ( OtherWidget - > metaObject ( ) ! = & lcQGLWidget : : staticMetaObject )
{
lcModelTabWidget * TabWidget = ( lcModelTabWidget * ) mModelTabWidget - > currentWidget ( ) ;
2015-01-26 00:04:39 +01:00
2017-03-26 19:28:58 +02:00
if ( TabWidget )
OtherWidget = TabWidget - > GetAnyViewWidget ( ) ;
}
2015-01-26 00:04:39 +01:00
2017-03-26 19:28:58 +02:00
OtherWidget - > setFocus ( ) ;
SetActiveView ( ( View * ) ( ( lcQGLWidget * ) OtherWidget ) - > widget ) ;
2015-01-26 00:04:39 +01:00
}
void lcMainWindow : : ResetViews ( )
{
2017-03-26 19:28:58 +02:00
lcModelTabWidget * TabWidget = ( lcModelTabWidget * ) mModelTabWidget - > currentWidget ( ) ;
2016-03-07 19:30:25 +01:00
if ( ! TabWidget )
return ;
2017-03-26 19:28:58 +02:00
TabWidget - > ResetLayout ( ) ;
TabWidget - > GetActiveView ( ) - > SetViewpoint ( LC_VIEWPOINT_HOME ) ;
2015-01-26 00:04:39 +01:00
}
void lcMainWindow : : TogglePrintPreview ( )
{
2017-02-11 21:41:00 +01:00
# ifndef QT_NO_PRINTER
2015-01-26 00:04:39 +01:00
// todo: print preview inside main window
lcModel * Model = lcGetActiveModel ( ) ;
int Rows = lcGetProfileInt ( LC_PROFILE_PRINT_ROWS ) ;
int Columns = lcGetProfileInt ( LC_PROFILE_PRINT_COLUMNS ) ;
int StepsPerPage = Rows * Columns ;
int PageCount = ( Model - > GetLastStep ( ) + StepsPerPage - 1 ) / StepsPerPage ;
QPrinter Printer ( QPrinter : : ScreenResolution ) ;
Printer . setFromTo ( 1 , PageCount + 1 ) ;
QPrintPreviewDialog Preview ( & Printer , this ) ;
connect ( & Preview , SIGNAL ( paintRequested ( QPrinter * ) ) , SLOT ( Print ( QPrinter * ) ) ) ;
Preview . exec ( ) ;
2017-02-11 21:41:00 +01:00
# endif
2015-01-26 00:04:39 +01:00
}
void lcMainWindow : : ToggleFullScreen ( )
{
// todo: hide toolbars and menu
// todo: create fullscreen toolbar or support esc key to go back
if ( isFullScreen ( ) )
showNormal ( ) ;
else
showFullScreen ( ) ;
}
2014-10-12 19:34:18 +02:00
void lcMainWindow : : AddRecentFile ( const QString & FileName )
2011-09-07 23:06:51 +02:00
{
2014-10-12 19:34:18 +02:00
QString SavedName = FileName ;
2013-08-09 06:57:18 +02:00
int FileIdx ;
2011-09-07 23:06:51 +02:00
2014-12-31 17:38:30 +01:00
QFileInfo FileInfo ( FileName ) ;
2013-08-09 06:57:18 +02:00
for ( FileIdx = 0 ; FileIdx < LC_MAX_RECENT_FILES ; FileIdx + + )
2014-12-31 17:38:30 +01:00
if ( QFileInfo ( mRecentFiles [ FileIdx ] ) = = FileInfo )
2011-09-07 23:06:51 +02:00
break ;
2013-08-09 06:57:18 +02:00
for ( FileIdx = lcMin ( FileIdx , LC_MAX_RECENT_FILES - 1 ) ; FileIdx > 0 ; FileIdx - - )
2014-10-12 19:34:18 +02:00
mRecentFiles [ FileIdx ] = mRecentFiles [ FileIdx - 1 ] ;
2011-09-07 23:06:51 +02:00
2014-10-12 19:34:18 +02:00
mRecentFiles [ 0 ] = SavedName ;
2011-09-07 23:06:51 +02:00
2013-08-09 06:57:18 +02:00
UpdateRecentFiles ( ) ;
2011-09-07 23:06:51 +02:00
}
2013-08-09 06:57:18 +02:00
void lcMainWindow : : RemoveRecentFile ( int FileIndex )
2011-09-07 23:06:51 +02:00
{
2013-08-09 06:57:18 +02:00
for ( int FileIdx = FileIndex ; FileIdx < LC_MAX_RECENT_FILES - 1 ; FileIdx + + )
2014-10-12 19:34:18 +02:00
mRecentFiles [ FileIdx ] = mRecentFiles [ FileIdx + 1 ] ;
2011-09-07 23:06:51 +02:00
2014-10-12 19:34:18 +02:00
mRecentFiles [ LC_MAX_RECENT_FILES - 1 ] . clear ( ) ;
2013-08-09 06:57:18 +02:00
UpdateRecentFiles ( ) ;
2011-09-07 23:06:51 +02:00
}
2013-08-09 06:57:18 +02:00
2015-12-22 23:44:46 +01:00
void lcMainWindow : : UpdateSelectedObjects ( bool SelectionChanged )
2015-01-26 00:04:39 +01:00
{
2018-10-14 01:45:14 +02:00
int Flags = 0 ;
2015-12-22 23:44:46 +01:00
lcArray < lcObject * > Selection ;
2018-10-14 01:45:14 +02:00
lcObject * Focus = nullptr ;
2015-01-26 00:04:39 +01:00
2018-10-14 01:45:14 +02:00
lcModel * ActiveModel = GetActiveModel ( ) ;
if ( ActiveModel )
ActiveModel - > GetSelectionInformation ( & Flags , Selection , & Focus ) ;
2015-01-26 00:04:39 +01:00
2015-12-22 23:44:46 +01:00
if ( SelectionChanged )
{
mTimelineWidget - > UpdateSelection ( ) ;
mActions [ LC_EDIT_CUT ] - > setEnabled ( Flags & LC_SEL_SELECTED ) ;
mActions [ LC_EDIT_COPY ] - > setEnabled ( Flags & LC_SEL_SELECTED ) ;
mActions [ LC_EDIT_FIND ] - > setEnabled ( ( Flags & LC_SEL_NO_PIECES ) = = 0 ) ;
mActions [ LC_EDIT_FIND_NEXT ] - > setEnabled ( ( Flags & LC_SEL_NO_PIECES ) = = 0 ) ;
mActions [ LC_EDIT_FIND_PREVIOUS ] - > setEnabled ( ( Flags & LC_SEL_NO_PIECES ) = = 0 ) ;
mActions [ LC_EDIT_SELECT_INVERT ] - > setEnabled ( ( Flags & LC_SEL_NO_PIECES ) = = 0 ) ;
mActions [ LC_EDIT_SELECT_BY_NAME ] - > setEnabled ( ( Flags & LC_SEL_NO_PIECES ) = = 0 ) ;
2017-02-17 07:57:11 +01:00
mActions [ LC_EDIT_SELECT_BY_COLOR ] - > setEnabled ( ( Flags & LC_SEL_NO_PIECES ) = = 0 ) ;
2015-12-22 23:44:46 +01:00
mActions [ LC_EDIT_SELECT_NONE ] - > setEnabled ( Flags & LC_SEL_SELECTED ) ;
mActions [ LC_EDIT_SELECT_ALL ] - > setEnabled ( Flags & LC_SEL_UNSELECTED ) ;
mActions [ LC_PIECE_DELETE ] - > setEnabled ( Flags & LC_SEL_SELECTED ) ;
2017-03-09 00:55:38 +01:00
mActions [ LC_PIECE_DUPLICATE ] - > setEnabled ( Flags & LC_SEL_SELECTED ) ;
2015-12-22 23:44:46 +01:00
mActions [ LC_PIECE_RESET_PIVOT_POINT ] - > setEnabled ( Flags & LC_SEL_SELECTED ) ;
2018-02-24 21:47:19 +01:00
mActions [ LC_PIECE_REMOVE_KEY_FRAMES ] - > setEnabled ( Flags & LC_SEL_SELECTED ) ;
2015-12-22 23:44:46 +01:00
mActions [ LC_PIECE_ARRAY ] - > setEnabled ( Flags & LC_SEL_PIECE ) ;
2016-03-03 01:04:49 +01:00
mActions [ LC_PIECE_CONTROL_POINT_INSERT ] - > setEnabled ( Flags & LC_SEL_CAN_ADD_CONTROL_POINT ) ;
mActions [ LC_PIECE_CONTROL_POINT_REMOVE ] - > setEnabled ( Flags & LC_SEL_CAN_REMOVE_CONTROL_POINT ) ;
2015-12-22 23:44:46 +01:00
mActions [ LC_PIECE_HIDE_SELECTED ] - > setEnabled ( Flags & LC_SEL_VISIBLE_SELECTED ) ;
mActions [ LC_PIECE_HIDE_UNSELECTED ] - > setEnabled ( Flags & LC_SEL_UNSELECTED ) ;
mActions [ LC_PIECE_UNHIDE_SELECTED ] - > setEnabled ( Flags & LC_SEL_HIDDEN_SELECTED ) ;
mActions [ LC_PIECE_UNHIDE_ALL ] - > setEnabled ( Flags & LC_SEL_HIDDEN ) ;
mActions [ LC_PIECE_VIEW_SELECTED_MODEL ] - > setEnabled ( Flags & LC_SEL_MODEL_SELECTED ) ;
mActions [ LC_PIECE_MOVE_SELECTION_TO_MODEL ] - > setEnabled ( Flags & LC_SEL_PIECE ) ;
mActions [ LC_PIECE_INLINE_SELECTED_MODELS ] - > setEnabled ( Flags & LC_SEL_MODEL_SELECTED ) ;
2018-03-29 19:20:36 +02:00
mActions [ LC_PIECE_EDIT_SELECTED_SUBMODEL ] - > setEnabled ( Flags & LC_SEL_MODEL_SELECTED ) ;
2015-12-22 23:44:46 +01:00
mActions [ LC_PIECE_GROUP ] - > setEnabled ( Flags & LC_SEL_CAN_GROUP ) ;
mActions [ LC_PIECE_UNGROUP ] - > setEnabled ( Flags & LC_SEL_GROUPED ) ;
mActions [ LC_PIECE_GROUP_ADD ] - > setEnabled ( ( Flags & ( LC_SEL_GROUPED | LC_SEL_FOCUS_GROUPED ) ) = = LC_SEL_GROUPED ) ;
mActions [ LC_PIECE_GROUP_REMOVE ] - > setEnabled ( Flags & LC_SEL_FOCUS_GROUPED ) ;
mActions [ LC_PIECE_GROUP_EDIT ] - > setEnabled ( ( Flags & LC_SEL_NO_PIECES ) = = 0 ) ;
mActions [ LC_PIECE_SHOW_EARLIER ] - > setEnabled ( Flags & LC_SEL_PIECE ) ; // FIXME: disable if current step is 1
mActions [ LC_PIECE_SHOW_LATER ] - > setEnabled ( Flags & LC_SEL_PIECE ) ;
2017-02-05 03:40:46 +01:00
mActions [ LC_TIMELINE_MOVE_SELECTION ] - > setEnabled ( Flags & LC_SEL_PIECE ) ;
2018-10-14 01:45:14 +02:00
2018-10-14 17:47:28 +02:00
mActions [ LC_PIECE_EDIT_END_SUBMODEL ] - > setEnabled ( GetCurrentTabModel ( ) ! = ActiveModel ) ;
2015-12-22 23:44:46 +01:00
}
2015-01-26 00:04:39 +01:00
2015-12-22 23:44:46 +01:00
mPropertiesWidget - > Update ( Selection , Focus ) ;
2015-01-26 00:04:39 +01:00
QString Message ;
2015-12-22 23:44:46 +01:00
if ( ( Selection . GetSize ( ) = = 1 ) & & Focus )
2015-01-26 00:04:39 +01:00
{
if ( Focus - > IsPiece ( ) )
2017-07-23 05:54:33 +02:00
Message = tr ( " %1 (ID: %2) " ) . arg ( Focus - > GetName ( ) , ( ( lcPiece * ) Focus ) - > GetID ( ) ) ;
2015-01-26 00:04:39 +01:00
else
Message = Focus - > GetName ( ) ;
}
2015-12-22 23:44:46 +01:00
else if ( Selection . GetSize ( ) > 0 )
2015-01-26 00:04:39 +01:00
{
2016-06-13 01:05:26 +02:00
Message = tr ( " %n Object(s) selected " , " " , Selection . GetSize ( ) ) ;
2015-01-26 00:04:39 +01:00
if ( Focus & & Focus - > IsPiece ( ) )
{
2017-07-23 05:54:33 +02:00
Message . append ( tr ( " - %1 (ID: %2) " ) . arg ( Focus - > GetName ( ) , ( ( lcPiece * ) Focus ) - > GetID ( ) ) ) ;
2015-01-26 00:04:39 +01:00
const lcGroup * Group = ( ( lcPiece * ) Focus ) - > GetGroup ( ) ;
2015-10-21 17:03:45 +02:00
if ( Group & & ! Group - > mName . isEmpty ( ) )
2015-12-22 23:44:46 +01:00
Message . append ( tr ( " in group '%1' " ) . arg ( Group - > mName ) ) ;
2015-01-26 00:04:39 +01:00
}
}
mStatusBarLabel - > setText ( Message ) ;
2015-12-22 23:44:46 +01:00
lcVector3 Position ;
lcGetActiveModel ( ) - > GetFocusPosition ( Position ) ;
QString Label ( " X: %1 Y: %2 Z: %3 " ) ;
2016-06-14 01:57:31 +02:00
Label = Label . arg ( QLocale : : system ( ) . toString ( Position [ 0 ] , ' f ' , 2 ) , QLocale : : system ( ) . toString ( Position [ 1 ] , ' f ' , 2 ) , QLocale : : system ( ) . toString ( Position [ 2 ] , ' f ' , 2 ) ) ;
2015-12-22 23:44:46 +01:00
mStatusPositionLabel - > setText ( Label ) ;
2015-01-26 00:04:39 +01:00
}
2015-07-05 03:04:27 +02:00
void lcMainWindow : : UpdateTimeline ( bool Clear , bool UpdateItems )
2015-03-04 21:37:09 +01:00
{
2015-07-05 03:04:27 +02:00
mTimelineWidget - > Update ( Clear , UpdateItems ) ;
2015-03-04 21:37:09 +01:00
}
2015-01-26 00:04:39 +01:00
void lcMainWindow : : UpdatePaste ( bool Enabled )
{
QAction * Action = mActions [ LC_EDIT_PASTE ] ;
if ( Action )
Action - > setEnabled ( Enabled ) ;
}
void lcMainWindow : : UpdateCurrentStep ( )
{
lcModel * Model = lcGetActiveModel ( ) ;
lcStep CurrentStep = Model - > GetCurrentStep ( ) ;
lcStep LastStep = Model - > GetLastStep ( ) ;
mActions [ LC_VIEW_TIME_FIRST ] - > setEnabled ( CurrentStep ! = 1 ) ;
mActions [ LC_VIEW_TIME_PREVIOUS ] - > setEnabled ( CurrentStep > 1 ) ;
mActions [ LC_VIEW_TIME_NEXT ] - > setEnabled ( CurrentStep < LC_STEP_MAX ) ;
mActions [ LC_VIEW_TIME_LAST ] - > setEnabled ( CurrentStep ! = LastStep ) ;
mStatusTimeLabel - > setText ( QString ( tr ( " Step %1 " ) ) . arg ( QString : : number ( CurrentStep ) ) ) ;
}
void lcMainWindow : : SetAddKeys ( bool AddKeys )
{
QAction * Action = mActions [ LC_VIEW_TIME_ADD_KEYS ] ;
if ( Action )
Action - > setChecked ( AddKeys ) ;
mAddKeys = AddKeys ;
}
void lcMainWindow : : UpdateLockSnap ( )
{
mActions [ LC_EDIT_TRANSFORM_RELATIVE ] - > setChecked ( GetRelativeTransform ( ) ) ;
}
void lcMainWindow : : UpdateSnap ( )
{
2015-04-25 00:11:50 +02:00
mActions [ LC_EDIT_SNAP_MOVE_TOGGLE ] - > setChecked ( mMoveSnapEnabled ) ;
mActions [ LC_EDIT_SNAP_ANGLE_TOGGLE ] - > setChecked ( mAngleSnapEnabled ) ;
mActions [ LC_EDIT_SNAP_MOVE_XY0 + mMoveXYSnapIndex ] - > setChecked ( true ) ;
mActions [ LC_EDIT_SNAP_MOVE_Z0 + mMoveZSnapIndex ] - > setChecked ( true ) ;
mActions [ LC_EDIT_SNAP_ANGLE0 + mAngleSnapIndex ] - > setChecked ( true ) ;
2015-01-26 00:04:39 +01:00
2015-04-25 00:11:50 +02:00
mStatusSnapLabel - > setText ( QString ( tr ( " M: %1 %2 R: %3 " ) ) . arg ( GetMoveXYSnapText ( ) , GetMoveZSnapText ( ) , GetAngleSnapText ( ) ) ) ;
2015-01-26 00:04:39 +01:00
}
void lcMainWindow : : UpdateColor ( )
{
mColorList - > setCurrentColor ( mColorIndex ) ;
}
void lcMainWindow : : UpdateUndoRedo ( const QString & UndoText , const QString & RedoText )
{
QAction * UndoAction = mActions [ LC_EDIT_UNDO ] ;
QAction * RedoAction = mActions [ LC_EDIT_REDO ] ;
if ( ! UndoText . isEmpty ( ) )
{
UndoAction - > setEnabled ( true ) ;
UndoAction - > setText ( QString ( tr ( " &Undo %1 " ) ) . arg ( UndoText ) ) ;
}
else
{
UndoAction - > setEnabled ( false ) ;
UndoAction - > setText ( tr ( " &Undo " ) ) ;
}
if ( ! RedoText . isEmpty ( ) )
{
RedoAction - > setEnabled ( true ) ;
RedoAction - > setText ( QString ( tr ( " &Redo %1 " ) ) . arg ( RedoText ) ) ;
}
else
{
RedoAction - > setEnabled ( false ) ;
RedoAction - > setText ( tr ( " &Redo " ) ) ;
}
}
void lcMainWindow : : UpdateCameraMenu ( )
{
const lcArray < lcCamera * > & Cameras = lcGetActiveModel ( ) - > GetCameras ( ) ;
2016-03-06 02:47:00 +01:00
View * ActiveView = GetActiveView ( ) ;
2017-04-14 02:26:40 +02:00
lcCamera * CurrentCamera = ActiveView ? ActiveView - > mCamera : nullptr ;
2015-01-26 00:04:39 +01:00
int CurrentIndex = - 1 ;
for ( int ActionIdx = LC_VIEW_CAMERA_FIRST ; ActionIdx < = LC_VIEW_CAMERA_LAST ; ActionIdx + + )
{
QAction * Action = mActions [ ActionIdx ] ;
int CameraIdx = ActionIdx - LC_VIEW_CAMERA_FIRST ;
if ( CameraIdx < Cameras . GetSize ( ) )
{
if ( CurrentCamera = = Cameras [ CameraIdx ] )
CurrentIndex = CameraIdx ;
Action - > setText ( Cameras [ CameraIdx ] - > GetName ( ) ) ;
Action - > setVisible ( true ) ;
}
else
Action - > setVisible ( false ) ;
}
UpdateCurrentCamera ( CurrentIndex ) ;
}
void lcMainWindow : : UpdateCurrentCamera ( int CameraIndex )
{
int ActionIndex = LC_VIEW_CAMERA_FIRST + CameraIndex ;
if ( ActionIndex < LC_VIEW_CAMERA_FIRST | | ActionIndex > LC_VIEW_CAMERA_LAST )
ActionIndex = LC_VIEW_CAMERA_NONE ;
mActions [ ActionIndex ] - > setChecked ( true ) ;
}
void lcMainWindow : : UpdatePerspective ( )
{
2016-03-06 02:47:00 +01:00
View * ActiveView = GetActiveView ( ) ;
if ( ActiveView )
{
if ( ActiveView - > mCamera - > IsOrtho ( ) )
mActions [ LC_VIEW_PROJECTION_ORTHO ] - > setChecked ( true ) ;
else
mActions [ LC_VIEW_PROJECTION_PERSPECTIVE ] - > setChecked ( true ) ;
}
2015-01-26 00:04:39 +01:00
}
2017-08-25 21:57:14 +02:00
void lcMainWindow : : UpdateShadingMode ( )
{
mActions [ LC_VIEW_SHADING_FIRST + lcGetPreferences ( ) . mShadingMode ] - > setChecked ( true ) ;
}
2017-11-22 02:58:36 +01:00
void lcMainWindow : : UpdateSelectionMode ( )
{
switch ( mSelectionMode )
{
case lcSelectionMode : : SINGLE :
mActions [ LC_EDIT_SELECTION_SINGLE ] - > setChecked ( true ) ;
break ;
case lcSelectionMode : : PIECE :
mActions [ LC_EDIT_SELECTION_PIECE ] - > setChecked ( true ) ;
break ;
case lcSelectionMode : : COLOR :
mActions [ LC_EDIT_SELECTION_COLOR ] - > setChecked ( true ) ;
break ;
case lcSelectionMode : : PIECE_COLOR :
mActions [ LC_EDIT_SELECTION_PIECE_COLOR ] - > setChecked ( true ) ;
break ;
}
}
2015-01-26 00:04:39 +01:00
void lcMainWindow : : UpdateModels ( )
{
const lcArray < lcModel * > & Models = lcGetActiveProject ( ) - > GetModels ( ) ;
lcModel * CurrentModel = lcGetActiveModel ( ) ;
for ( int ActionIdx = LC_MODEL_FIRST ; ActionIdx < = LC_MODEL_LAST ; ActionIdx + + )
{
QAction * Action = mActions [ ActionIdx ] ;
int ModelIdx = ActionIdx - LC_MODEL_FIRST ;
if ( ModelIdx < Models . GetSize ( ) )
{
Action - > setChecked ( CurrentModel = = Models [ ModelIdx ] ) ;
Action - > setText ( QString : : fromLatin1 ( " &%1 %2 " ) . arg ( QString : : number ( ModelIdx + 1 ) , Models [ ModelIdx ] - > GetProperties ( ) . mName ) ) ;
Action - > setVisible ( true ) ;
}
else
Action - > setVisible ( false ) ;
}
2016-03-06 02:47:00 +01:00
for ( int TabIdx = 0 ; TabIdx < mModelTabWidget - > count ( ) ; )
{
lcModelTabWidget * TabWidget = ( lcModelTabWidget * ) mModelTabWidget - > widget ( TabIdx ) ;
lcModel * Model = TabWidget - > GetModel ( ) ;
2017-03-27 03:14:08 +02:00
if ( ! Model )
TabIdx + + ;
else if ( Models . FindIndex ( Model ) ! = - 1 )
2016-03-06 02:47:00 +01:00
{
mModelTabWidget - > setTabText ( TabIdx , Model - > GetProperties ( ) . mName ) ;
TabIdx + + ;
}
else
delete TabWidget ;
}
2016-12-19 03:53:25 +01:00
mPartSelectionWidget - > UpdateModels ( ) ;
2015-02-22 03:54:43 +01:00
2016-12-28 22:30:31 +01:00
if ( mCurrentPieceInfo & & mCurrentPieceInfo - > IsModel ( ) )
2017-04-14 02:26:40 +02:00
SetCurrentPieceInfo ( nullptr ) ;
2015-01-26 00:04:39 +01:00
}
void lcMainWindow : : UpdateCategories ( )
{
2016-12-20 23:11:19 +01:00
mPartSelectionWidget - > UpdateCategories ( ) ;
2015-01-26 00:04:39 +01:00
}
void lcMainWindow : : UpdateTitle ( )
{
setWindowModified ( lcGetActiveProject ( ) - > IsModified ( ) ) ;
setWindowFilePath ( lcGetActiveProject ( ) - > GetTitle ( ) ) ;
}
void lcMainWindow : : UpdateModified ( bool Modified )
{
setWindowModified ( Modified ) ;
}
void lcMainWindow : : UpdateRecentFiles ( )
{
for ( int ActionIdx = LC_FILE_RECENT_FIRST ; ActionIdx < = LC_FILE_RECENT_LAST ; ActionIdx + + )
{
int FileIdx = ActionIdx - LC_FILE_RECENT_FIRST ;
QAction * Action = mActions [ ActionIdx ] ;
if ( ! mRecentFiles [ FileIdx ] . isEmpty ( ) )
{
Action - > setText ( QString ( " &%1 %2 " ) . arg ( QString : : number ( FileIdx + 1 ) , QDir : : toNativeSeparators ( mRecentFiles [ FileIdx ] ) ) ) ;
Action - > setVisible ( true ) ;
}
else
Action - > setVisible ( false ) ;
}
mActionFileRecentSeparator - > setVisible ( ! mRecentFiles [ 0 ] . isEmpty ( ) ) ;
}
void lcMainWindow : : UpdateShortcuts ( )
{
for ( int ActionIdx = 0 ; ActionIdx < LC_NUM_COMMANDS ; ActionIdx + + )
2015-09-27 09:02:57 +02:00
mActions [ ActionIdx ] - > setShortcut ( QKeySequence ( gKeyboardShortcuts . mShortcuts [ ActionIdx ] ) ) ;
2015-01-26 00:04:39 +01:00
}
2014-12-04 02:47:28 +01:00
void lcMainWindow : : NewProject ( )
{
if ( ! SaveProjectIfModified ( ) )
return ;
Project * NewProject = new Project ( ) ;
2017-12-03 04:42:42 +01:00
gApplication - > SetProject ( NewProject ) ;
2015-11-16 03:41:16 +01:00
lcGetPiecesLibrary ( ) - > UnloadUnusedParts ( ) ;
2014-12-04 02:47:28 +01:00
}
bool lcMainWindow : : OpenProject ( const QString & FileName )
{
if ( ! SaveProjectIfModified ( ) )
return false ;
QString LoadFileName = FileName ;
if ( LoadFileName . isEmpty ( ) )
{
LoadFileName = lcGetActiveProject ( ) - > GetFileName ( ) ;
if ( LoadFileName . isEmpty ( ) )
LoadFileName = lcGetProfileString ( LC_PROFILE_PROJECTS_PATH ) ;
2017-12-11 00:01:12 +01:00
LoadFileName = QFileDialog : : getOpenFileName ( this , tr ( " Open Model " ) , LoadFileName , tr ( " Supported Files (*.lcd *.ldr *.dat *.mpd);;All Files (*.*) " ) ) ;
2014-12-04 02:47:28 +01:00
if ( LoadFileName . isEmpty ( ) )
return false ;
2016-10-15 22:00:26 +02:00
lcSetProfileString ( LC_PROFILE_PROJECTS_PATH , QFileInfo ( LoadFileName ) . absolutePath ( ) ) ;
2014-12-04 02:47:28 +01:00
}
Project * NewProject = new Project ( ) ;
if ( NewProject - > Load ( LoadFileName ) )
{
2017-12-03 04:42:42 +01:00
gApplication - > SetProject ( NewProject ) ;
2014-12-04 02:47:28 +01:00
AddRecentFile ( LoadFileName ) ;
2015-01-26 00:04:39 +01:00
UpdateAllViews ( ) ;
2014-12-31 00:45:27 +01:00
2014-12-04 02:47:28 +01:00
return true ;
}
delete NewProject ;
return false ;
}
2014-12-16 00:55:17 +01:00
void lcMainWindow : : MergeProject ( )
{
2014-12-23 18:02:23 +01:00
QString LoadFileName = lcGetActiveProject ( ) - > GetFileName ( ) ;
2014-12-16 00:55:17 +01:00
if ( LoadFileName . isEmpty ( ) )
2014-12-23 18:02:23 +01:00
LoadFileName = lcGetProfileString ( LC_PROFILE_PROJECTS_PATH ) ;
2014-12-16 00:55:17 +01:00
2017-12-11 00:01:12 +01:00
LoadFileName = QFileDialog : : getOpenFileName ( this , tr ( " Merge Model " ) , LoadFileName , tr ( " Supported Files (*.lcd *.ldr *.dat *.mpd);;All Files (*.*) " ) ) ;
2014-12-16 00:55:17 +01:00
2014-12-23 18:02:23 +01:00
if ( LoadFileName . isEmpty ( ) )
return ;
2014-12-16 00:55:17 +01:00
2016-10-15 22:00:26 +02:00
lcSetProfileString ( LC_PROFILE_PROJECTS_PATH , QFileInfo ( LoadFileName ) . absolutePath ( ) ) ;
2014-12-16 00:55:17 +01:00
Project * NewProject = new Project ( ) ;
if ( NewProject - > Load ( LoadFileName ) )
{
2014-12-23 18:02:23 +01:00
int NumModels = NewProject - > GetModels ( ) . GetSize ( ) ;
2014-12-16 00:55:17 +01:00
2014-12-23 18:02:23 +01:00
lcGetActiveProject ( ) - > Merge ( NewProject ) ;
2014-12-16 00:55:17 +01:00
2014-12-23 18:02:23 +01:00
if ( NumModels = = 1 )
2017-12-11 00:01:12 +01:00
QMessageBox : : information ( this , tr ( " LeoCAD " ) , tr ( " Merged 1 submodel. " ) ) ;
2014-12-23 18:02:23 +01:00
else
2017-12-11 00:01:12 +01:00
QMessageBox : : information ( this , tr ( " LeoCAD " ) , tr ( " Merged %1 submodels. " ) . arg ( NumModels ) ) ;
2015-02-09 02:36:25 +01:00
UpdateModels ( ) ;
2014-12-23 18:02:23 +01:00
}
2018-11-01 00:16:45 +01:00
delete NewProject ;
2014-12-16 00:55:17 +01:00
}
2017-06-26 03:20:34 +02:00
void lcMainWindow : : ImportLDD ( )
{
if ( ! SaveProjectIfModified ( ) )
return ;
QString LoadFileName = QFileDialog : : getOpenFileName ( this , tr ( " Import " ) , QString ( ) , tr ( " LEGO Diginal Designer Files (*.lxf);;All Files (*.*) " ) ) ;
if ( LoadFileName . isEmpty ( ) )
return ;
Project * NewProject = new Project ( ) ;
if ( NewProject - > ImportLDD ( LoadFileName ) )
{
2017-12-03 04:42:42 +01:00
gApplication - > SetProject ( NewProject ) ;
2017-06-26 03:20:34 +02:00
UpdateAllViews ( ) ;
}
else
delete NewProject ;
}
2017-08-20 22:47:53 +02:00
void lcMainWindow : : ImportInventory ( )
{
if ( ! SaveProjectIfModified ( ) )
return ;
lcSetsDatabaseDialog Dialog ( this ) ;
if ( Dialog . exec ( ) ! = QDialog : : Accepted )
return ;
Project * NewProject = new Project ( ) ;
if ( NewProject - > ImportInventory ( Dialog . GetSetInventory ( ) , Dialog . GetSetName ( ) , Dialog . GetSetDescription ( ) ) )
{
2017-12-03 04:42:42 +01:00
gApplication - > SetProject ( NewProject ) ;
2017-08-20 22:47:53 +02:00
UpdateAllViews ( ) ;
}
else
delete NewProject ;
}
2014-12-04 02:47:28 +01:00
bool lcMainWindow : : SaveProject ( const QString & FileName )
{
2019-06-01 20:11:36 +02:00
QString SaveFileName = FileName ;
2014-12-04 02:47:28 +01:00
Project * Project = lcGetActiveProject ( ) ;
2019-06-01 20:11:36 +02:00
if ( ! SaveFileName . isEmpty ( ) & & Project - > GetModels ( ) . GetSize ( ) > 1 & & QFileInfo ( SaveFileName ) . suffix ( ) . toLower ( ) ! = QLatin1String ( " mpd " ) )
SaveFileName . clear ( ) ;
if ( SaveFileName . isEmpty ( ) )
2014-12-04 02:47:28 +01:00
{
2014-12-08 20:30:53 +01:00
SaveFileName = Project - > GetFileName ( ) ;
2014-12-04 02:47:28 +01:00
2019-06-01 20:11:36 +02:00
if ( Project - > GetModels ( ) . GetSize ( ) > 1 & & QFileInfo ( SaveFileName ) . suffix ( ) . toLower ( ) ! = QLatin1String ( " mpd " ) )
{
int SuffixLength = QFileInfo ( SaveFileName ) . suffix ( ) . length ( ) ;
if ( SuffixLength )
SaveFileName = SaveFileName . left ( SaveFileName . length ( ) - SuffixLength - 1 ) ;
}
2014-12-04 02:47:28 +01:00
if ( SaveFileName . isEmpty ( ) )
SaveFileName = QFileInfo ( QDir ( lcGetProfileString ( LC_PROFILE_PROJECTS_PATH ) ) , Project - > GetTitle ( ) ) . absoluteFilePath ( ) ;
2015-02-08 04:29:42 +01:00
QString Filter = ( Project - > GetModels ( ) . GetSize ( ) > 1 ) ? tr ( " Supported Files (*.mpd);;All Files (*.*) " ) : tr ( " Supported Files (*.ldr *.dat *.mpd);;All Files (*.*) " ) ;
2017-12-11 00:01:12 +01:00
SaveFileName = QFileDialog : : getSaveFileName ( this , tr ( " Save Model " ) , SaveFileName , Filter ) ;
2014-12-04 02:47:28 +01:00
if ( SaveFileName . isEmpty ( ) )
return false ;
2016-10-15 22:00:26 +02:00
lcSetProfileString ( LC_PROFILE_PROJECTS_PATH , QFileInfo ( SaveFileName ) . absolutePath ( ) ) ;
2014-12-04 02:47:28 +01:00
}
if ( QFileInfo ( SaveFileName ) . suffix ( ) . toLower ( ) = = QLatin1String ( " lcd " ) )
{
2015-02-08 04:29:42 +01:00
QMessageBox : : warning ( this , tr ( " Error " ) , tr ( " Saving files in LCD format is no longer supported, please use the LDR or MPD formats instead. " ) ) ;
2014-12-04 02:47:28 +01:00
return false ;
}
2014-12-08 08:32:39 +01:00
if ( ! Project - > Save ( SaveFileName ) )
2014-12-04 02:47:28 +01:00
return false ;
AddRecentFile ( SaveFileName ) ;
2014-12-08 08:32:39 +01:00
UpdateTitle ( ) ;
2014-12-04 02:47:28 +01:00
return true ;
}
bool lcMainWindow : : SaveProjectIfModified ( )
{
Project * Project = lcGetActiveProject ( ) ;
if ( ! Project - > IsModified ( ) )
return true ;
2017-12-11 00:01:12 +01:00
switch ( QMessageBox : : question ( this , tr ( " Save Model " ) , tr ( " Save changes to '%1'? " ) . arg ( Project - > GetTitle ( ) ) , QMessageBox : : Yes | QMessageBox : : No | QMessageBox : : Cancel ) )
2014-12-04 02:47:28 +01:00
{
default :
case QMessageBox : : Cancel :
return false ;
case QMessageBox : : Yes :
if ( ! SaveProject ( Project - > GetFileName ( ) ) )
return false ;
break ;
case QMessageBox : : No :
break ;
}
return true ;
}
2015-12-04 23:41:08 +01:00
bool lcMainWindow : : SetModelFromFocus ( )
2015-03-17 05:18:28 +01:00
{
2018-05-12 01:23:43 +02:00
lcObject * FocusObject = GetActiveModel ( ) - > GetFocusObject ( ) ;
2015-03-17 05:18:28 +01:00
if ( ! FocusObject | | ! FocusObject - > IsPiece ( ) )
2015-12-04 23:41:08 +01:00
return false ;
2015-03-17 05:18:28 +01:00
lcModel * Model = ( ( lcPiece * ) FocusObject ) - > mPieceInfo - > GetModel ( ) ;
2015-12-04 23:41:08 +01:00
if ( Model )
{
Project * Project = lcGetActiveProject ( ) ;
Project - > SetActiveModel ( Project - > GetModels ( ) . FindIndex ( Model ) ) ;
return true ;
}
return false ;
}
void lcMainWindow : : SetModelFromSelection ( )
{
if ( SetModelFromFocus ( ) )
return ;
2018-05-12 01:23:43 +02:00
lcModel * Model = GetActiveModel ( ) - > GetFirstSelectedSubmodel ( ) ;
2015-12-04 23:41:08 +01:00
2015-03-17 05:18:28 +01:00
if ( Model )
{
Project * Project = lcGetActiveProject ( ) ;
Project - > SetActiveModel ( Project - > GetModels ( ) . FindIndex ( Model ) ) ;
}
}
2018-04-17 03:29:42 +02:00
lcModel * lcMainWindow : : GetActiveModel ( ) const
{
View * ActiveView = GetActiveView ( ) ;
return ActiveView ? ActiveView - > GetActiveModel ( ) : nullptr ;
}
2014-12-04 02:47:28 +01:00
void lcMainWindow : : HandleCommand ( lcCommandId CommandId )
{
2016-03-06 02:47:00 +01:00
View * ActiveView = GetActiveView ( ) ;
2018-04-07 17:43:54 +02:00
lcModel * ActiveModel = ActiveView ? ActiveView - > GetActiveModel ( ) : nullptr ;
2016-03-06 02:47:00 +01:00
2014-12-04 02:47:28 +01:00
switch ( CommandId )
{
case LC_FILE_NEW :
NewProject ( ) ;
break ;
case LC_FILE_OPEN :
OpenProject ( QString ( ) ) ;
break ;
2014-12-16 00:55:17 +01:00
case LC_FILE_MERGE :
MergeProject ( ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_FILE_SAVE :
SaveProject ( lcGetActiveProject ( ) - > GetFileName ( ) ) ;
break ;
case LC_FILE_SAVEAS :
SaveProject ( QString ( ) ) ;
break ;
case LC_FILE_SAVE_IMAGE :
lcGetActiveProject ( ) - > SaveImage ( ) ;
break ;
2014-12-30 17:30:12 +01:00
2017-06-26 03:20:34 +02:00
case LC_FILE_IMPORT_LDD :
ImportLDD ( ) ;
break ;
2017-08-20 22:47:53 +02:00
case LC_FILE_IMPORT_INVENTORY :
ImportInventory ( ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_FILE_EXPORT_3DS :
2015-03-27 21:20:12 +01:00
lcGetActiveProject ( ) - > Export3DStudio ( QString ( ) ) ;
2014-12-04 02:47:28 +01:00
break ;
2015-01-12 05:49:30 +01:00
2017-08-11 03:40:43 +02:00
case LC_FILE_EXPORT_COLLADA :
2017-08-26 01:10:06 +02:00
lcGetActiveProject ( ) - > ExportCOLLADA ( QString ( ) ) ;
2017-08-11 03:40:43 +02:00
break ;
2014-12-04 02:47:28 +01:00
case LC_FILE_EXPORT_HTML :
2017-12-11 03:12:31 +01:00
ShowHTMLDialog ( ) ;
2014-12-04 02:47:28 +01:00
break ;
2015-01-12 05:49:30 +01:00
2014-12-04 02:47:28 +01:00
case LC_FILE_EXPORT_BRICKLINK :
lcGetActiveProject ( ) - > ExportBrickLink ( ) ;
break ;
case LC_FILE_EXPORT_CSV :
lcGetActiveProject ( ) - > ExportCSV ( ) ;
break ;
case LC_FILE_EXPORT_POVRAY :
2017-09-22 19:08:02 +02:00
lcGetActiveProject ( ) - > ExportPOVRay ( QString ( ) ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_FILE_EXPORT_WAVEFRONT :
2015-01-23 02:58:33 +01:00
lcGetActiveProject ( ) - > ExportWavefront ( QString ( ) ) ;
2014-12-04 02:47:28 +01:00
break ;
2014-12-30 17:30:12 +01:00
2017-09-22 19:08:02 +02:00
case LC_FILE_RENDER :
ShowRenderDialog ( ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_FILE_PRINT_PREVIEW :
TogglePrintPreview ( ) ;
break ;
case LC_FILE_PRINT :
2015-01-30 17:30:13 +01:00
ShowPrintDialog ( ) ;
2014-12-04 02:47:28 +01:00
break ;
// TODO: printing
case LC_FILE_PRINT_BOM :
break ;
case LC_FILE_RECENT1 :
case LC_FILE_RECENT2 :
case LC_FILE_RECENT3 :
case LC_FILE_RECENT4 :
if ( ! OpenProject ( mRecentFiles [ CommandId - LC_FILE_RECENT1 ] ) )
RemoveRecentFile ( CommandId - LC_FILE_RECENT1 ) ;
break ;
case LC_FILE_EXIT :
2015-01-26 00:04:39 +01:00
close ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_EDIT_UNDO :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > UndoAction ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_EDIT_REDO :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > RedoAction ( ) ;
2014-12-04 02:47:28 +01:00
break ;
2014-12-16 00:55:17 +01:00
case LC_EDIT_CUT :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > Cut ( ) ;
2014-12-16 00:55:17 +01:00
break ;
2014-12-04 02:47:28 +01:00
2014-12-16 00:55:17 +01:00
case LC_EDIT_COPY :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > Copy ( ) ;
2014-12-16 00:55:17 +01:00
break ;
2014-12-04 02:47:28 +01:00
2014-12-16 00:55:17 +01:00
case LC_EDIT_PASTE :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > Paste ( ) ;
2014-12-16 00:55:17 +01:00
break ;
2014-12-04 02:47:28 +01:00
case LC_EDIT_FIND :
2017-11-19 23:12:27 +01:00
ShowSearchDialog ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_EDIT_FIND_NEXT :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > FindPiece ( false , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_EDIT_FIND_PREVIOUS :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > FindPiece ( false , false ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_EDIT_SELECT_ALL :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > SelectAllPieces ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_EDIT_SELECT_NONE :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ClearSelection ( true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_EDIT_SELECT_INVERT :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > InvertSelection ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_EDIT_SELECT_BY_NAME :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowSelectByNameDialog ( ) ;
2014-12-04 02:47:28 +01:00
break ;
2017-02-17 07:57:11 +01:00
case LC_EDIT_SELECT_BY_COLOR :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowSelectByColorDialog ( ) ;
2017-02-17 07:57:11 +01:00
break ;
2017-11-22 02:58:36 +01:00
case LC_EDIT_SELECTION_SINGLE :
SetSelectionMode ( lcSelectionMode : : SINGLE ) ;
break ;
case LC_EDIT_SELECTION_PIECE :
SetSelectionMode ( lcSelectionMode : : PIECE ) ;
break ;
case LC_EDIT_SELECTION_COLOR :
SetSelectionMode ( lcSelectionMode : : COLOR ) ;
break ;
case LC_EDIT_SELECTION_PIECE_COLOR :
SetSelectionMode ( lcSelectionMode : : PIECE_COLOR ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_VIEW_SPLIT_HORIZONTAL :
SplitHorizontal ( ) ;
break ;
case LC_VIEW_SPLIT_VERTICAL :
SplitVertical ( ) ;
break ;
case LC_VIEW_REMOVE_VIEW :
2015-01-26 00:04:39 +01:00
RemoveActiveView ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_RESET_VIEWS :
ResetViews ( ) ;
break ;
case LC_VIEW_FULLSCREEN :
ToggleFullScreen ( ) ;
break ;
2019-01-21 01:36:59 +01:00
case LC_VIEW_CLOSE_CURRENT_TAB :
CloseCurrentModelTab ( ) ;
break ;
2017-08-25 21:57:14 +02:00
case LC_VIEW_SHADING_WIREFRAME :
SetShadingMode ( LC_SHADING_WIREFRAME ) ;
break ;
case LC_VIEW_SHADING_FLAT :
SetShadingMode ( LC_SHADING_FLAT ) ;
break ;
case LC_VIEW_SHADING_DEFAULT_LIGHTS :
SetShadingMode ( LC_SHADING_DEFAULT_LIGHTS ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_VIEW_PROJECTION_PERSPECTIVE :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > SetProjection ( false ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_PROJECTION_ORTHO :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > SetProjection ( true ) ;
2014-12-04 02:47:28 +01:00
break ;
2015-01-17 19:36:09 +01:00
2014-12-04 02:47:28 +01:00
case LC_PIECE_INSERT :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > AddPiece ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_DELETE :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > DeleteSelectedObjects ( ) ;
2014-12-04 02:47:28 +01:00
break ;
2017-03-09 00:55:38 +01:00
case LC_PIECE_DUPLICATE :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > DuplicateSelectedPieces ( ) ;
2017-03-09 00:55:38 +01:00
break ;
2015-12-14 19:01:17 +01:00
case LC_PIECE_RESET_PIVOT_POINT :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ResetSelectedPiecesPivotPoint ( ) ;
2015-12-14 19:01:17 +01:00
break ;
2018-02-24 21:47:19 +01:00
case LC_PIECE_REMOVE_KEY_FRAMES :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > RemoveSelectedPiecesKeyFrames ( ) ;
2018-02-24 21:47:19 +01:00
break ;
2016-03-03 01:04:49 +01:00
case LC_PIECE_CONTROL_POINT_INSERT :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > InsertControlPoint ( ) ;
2016-03-03 01:04:49 +01:00
break ;
case LC_PIECE_CONTROL_POINT_REMOVE :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > RemoveFocusedControlPoint ( ) ;
2016-03-03 01:04:49 +01:00
break ;
2014-12-04 02:47:28 +01:00
case LC_PIECE_MOVE_PLUSX :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > MoveSelectedObjects ( ActiveView - > GetMoveDirection ( lcVector3 ( lcMax ( GetMoveXYSnap ( ) , 0.1f ) , 0.0f , 0.0f ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_MOVE_MINUSX :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > MoveSelectedObjects ( ActiveView - > GetMoveDirection ( lcVector3 ( - lcMax ( GetMoveXYSnap ( ) , 0.1f ) , 0.0f , 0.0f ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_MOVE_PLUSY :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > MoveSelectedObjects ( ActiveView - > GetMoveDirection ( lcVector3 ( 0.0f , lcMax ( GetMoveXYSnap ( ) , 0.1f ) , 0.0f ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_MOVE_MINUSY :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > MoveSelectedObjects ( ActiveView - > GetMoveDirection ( lcVector3 ( 0.0f , - lcMax ( GetMoveXYSnap ( ) , 0.1f ) , 0.0f ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_MOVE_PLUSZ :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > MoveSelectedObjects ( ActiveView - > GetMoveDirection ( lcVector3 ( 0.0f , 0.0f , lcMax ( GetMoveZSnap ( ) , 0.1f ) ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_MOVE_MINUSZ :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > MoveSelectedObjects ( ActiveView - > GetMoveDirection ( lcVector3 ( 0.0f , 0.0f , - lcMax ( GetMoveZSnap ( ) , 0.1f ) ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_ROTATE_PLUSX :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > RotateSelectedPieces ( ActiveView - > GetMoveDirection ( lcVector3 ( lcMax ( GetAngleSnap ( ) , 1.0f ) , 0.0f , 0.0f ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_ROTATE_MINUSX :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > RotateSelectedPieces ( ActiveView - > GetMoveDirection ( - lcVector3 ( lcMax ( GetAngleSnap ( ) , 1.0f ) , 0.0f , 0.0f ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_ROTATE_PLUSY :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > RotateSelectedPieces ( ActiveView - > GetMoveDirection ( lcVector3 ( 0.0f , lcMax ( GetAngleSnap ( ) , 1.0f ) , 0.0f ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_ROTATE_MINUSY :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > RotateSelectedPieces ( ActiveView - > GetMoveDirection ( lcVector3 ( 0.0f , - lcMax ( GetAngleSnap ( ) , 1.0f ) , 0.0f ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_ROTATE_PLUSZ :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > RotateSelectedPieces ( ActiveView - > GetMoveDirection ( lcVector3 ( 0.0f , 0.0f , lcMax ( GetAngleSnap ( ) , 1.0f ) ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_ROTATE_MINUSZ :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > RotateSelectedPieces ( ActiveView - > GetMoveDirection ( lcVector3 ( 0.0f , 0.0f , - lcMax ( GetAngleSnap ( ) , 1.0f ) ) ) , true , false , true , true ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_MINIFIG_WIZARD :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowMinifigDialog ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_ARRAY :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowArrayDialog ( ) ;
2014-12-04 02:47:28 +01:00
break ;
2015-12-04 23:41:08 +01:00
case LC_PIECE_VIEW_SELECTED_MODEL :
SetModelFromSelection ( ) ;
break ;
2015-12-02 00:31:28 +01:00
case LC_PIECE_MOVE_SELECTION_TO_MODEL :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > MoveSelectionToModel ( lcGetActiveProject ( ) - > CreateNewModel ( false ) ) ;
2015-12-02 00:31:28 +01:00
break ;
case LC_PIECE_INLINE_SELECTED_MODELS :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > InlineSelectedModels ( ) ;
2015-12-02 00:31:28 +01:00
break ;
2018-10-14 17:47:28 +02:00
case LC_PIECE_EDIT_END_SUBMODEL :
2018-10-14 01:45:14 +02:00
if ( ActiveView )
2019-03-10 11:11:01 +01:00
{
2018-10-14 01:45:14 +02:00
ActiveView - > SetTopSubmodelActive ( ) ;
2019-03-10 11:11:01 +01:00
if ( ActiveModel )
{
2019-03-17 21:27:57 +01:00
std : : vector < lcModel * > UpdatedModels ;
2019-03-10 11:11:01 +01:00
ActiveModel - > UpdatePieceInfo ( UpdatedModels ) ;
}
}
2018-10-14 01:45:14 +02:00
break ;
2018-03-29 19:20:36 +02:00
case LC_PIECE_EDIT_SELECTED_SUBMODEL :
2018-04-07 17:43:54 +02:00
if ( ActiveView )
ActiveView - > SetSelectedSubmodelActive ( ) ;
2018-03-29 19:20:36 +02:00
break ;
2014-12-04 02:47:28 +01:00
case LC_PIECE_GROUP :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > GroupSelection ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_UNGROUP :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > UngroupSelection ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_GROUP_ADD :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > AddSelectedPiecesToGroup ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_GROUP_REMOVE :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > RemoveFocusPieceFromGroup ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_GROUP_EDIT :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowEditGroupsDialog ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_HIDE_SELECTED :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > HideSelectedPieces ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_HIDE_UNSELECTED :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > HideUnselectedPieces ( ) ;
2014-12-04 02:47:28 +01:00
break ;
2015-03-15 21:01:07 +01:00
case LC_PIECE_UNHIDE_SELECTED :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > UnhideSelectedPieces ( ) ;
2015-03-15 21:01:07 +01:00
break ;
2014-12-04 02:47:28 +01:00
case LC_PIECE_UNHIDE_ALL :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > UnhideAllPieces ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_SHOW_EARLIER :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowSelectedPiecesEarlier ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_PIECE_SHOW_LATER :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowSelectedPiecesLater ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_PREFERENCES :
2017-12-03 04:42:42 +01:00
gApplication - > ShowPreferencesDialog ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_ZOOM_IN :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
2019-02-10 01:30:11 +01:00
ActiveView - > Zoom ( 10.0f ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_ZOOM_OUT :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
2019-02-10 01:30:11 +01:00
ActiveView - > Zoom ( - 10.0f ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_ZOOM_EXTENTS :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > ZoomExtents ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_LOOK_AT :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > LookAt ( ) ;
2014-12-04 02:47:28 +01:00
break ;
2018-01-15 20:35:15 +01:00
case LC_VIEW_MOVE_FORWARD :
if ( ActiveView )
ActiveView - > MoveCamera ( lcVector3 ( 0.0f , 0.0f , - 1.0f ) ) ;
break ;
case LC_VIEW_MOVE_BACKWARD :
if ( ActiveView )
ActiveView - > MoveCamera ( lcVector3 ( 0.0f , 0.0f , 1.0f ) ) ;
break ;
case LC_VIEW_MOVE_LEFT :
if ( ActiveView )
ActiveView - > MoveCamera ( lcVector3 ( - 1.0f , 0.0f , 0.0f ) ) ;
break ;
case LC_VIEW_MOVE_RIGHT :
if ( ActiveView )
ActiveView - > MoveCamera ( lcVector3 ( 1.0f , 0.0f , 0.0f ) ) ;
break ;
case LC_VIEW_MOVE_UP :
if ( ActiveView )
ActiveView - > MoveCamera ( lcVector3 ( 0.0f , 1.0f , 0.0f ) ) ;
break ;
case LC_VIEW_MOVE_DOWN :
if ( ActiveView )
ActiveView - > MoveCamera ( lcVector3 ( 0.0f , - 1.0f , 0.0f ) ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_VIEW_TIME_NEXT :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowNextStep ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_TIME_PREVIOUS :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowPreviousStep ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_TIME_FIRST :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowFirstStep ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_TIME_LAST :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > ShowLastStep ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_TIME_INSERT :
2015-03-15 20:42:11 +01:00
lcGetActiveModel ( ) - > InsertStep ( lcGetActiveModel ( ) - > GetCurrentStep ( ) ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_TIME_DELETE :
2015-03-15 20:42:11 +01:00
lcGetActiveModel ( ) - > RemoveStep ( lcGetActiveModel ( ) - > GetCurrentStep ( ) ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_VIEWPOINT_FRONT :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > SetViewpoint ( LC_VIEWPOINT_FRONT ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_VIEWPOINT_BACK :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > SetViewpoint ( LC_VIEWPOINT_BACK ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_VIEWPOINT_TOP :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > SetViewpoint ( LC_VIEWPOINT_TOP ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_VIEWPOINT_BOTTOM :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > SetViewpoint ( LC_VIEWPOINT_BOTTOM ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_VIEWPOINT_LEFT :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > SetViewpoint ( LC_VIEWPOINT_LEFT ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_VIEWPOINT_RIGHT :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > SetViewpoint ( LC_VIEWPOINT_RIGHT ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_VIEWPOINT_HOME :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > SetViewpoint ( LC_VIEWPOINT_HOME ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_CAMERA_NONE :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > RemoveCamera ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_VIEW_CAMERA1 :
case LC_VIEW_CAMERA2 :
case LC_VIEW_CAMERA3 :
case LC_VIEW_CAMERA4 :
case LC_VIEW_CAMERA5 :
case LC_VIEW_CAMERA6 :
case LC_VIEW_CAMERA7 :
case LC_VIEW_CAMERA8 :
case LC_VIEW_CAMERA9 :
case LC_VIEW_CAMERA10 :
case LC_VIEW_CAMERA11 :
case LC_VIEW_CAMERA12 :
case LC_VIEW_CAMERA13 :
case LC_VIEW_CAMERA14 :
case LC_VIEW_CAMERA15 :
case LC_VIEW_CAMERA16 :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > SetCameraIndex ( CommandId - LC_VIEW_CAMERA1 ) ;
2014-12-04 02:47:28 +01:00
break ;
2015-01-16 03:07:31 +01:00
case LC_VIEW_CAMERA_RESET :
ResetCameras ( ) ;
break ;
2014-12-04 02:47:28 +01:00
2014-12-13 00:42:09 +01:00
case LC_MODEL_NEW :
2015-12-02 02:16:12 +01:00
lcGetActiveProject ( ) - > CreateNewModel ( true ) ;
2014-12-13 00:42:09 +01:00
break ;
2014-12-31 18:05:23 +01:00
case LC_MODEL_PROPERTIES :
lcGetActiveModel ( ) - > ShowPropertiesDialog ( ) ;
break ;
2014-12-13 00:42:09 +01:00
case LC_MODEL_LIST :
lcGetActiveProject ( ) - > ShowModelListDialog ( ) ;
break ;
case LC_MODEL_01 :
case LC_MODEL_02 :
case LC_MODEL_03 :
case LC_MODEL_04 :
case LC_MODEL_05 :
case LC_MODEL_06 :
case LC_MODEL_07 :
case LC_MODEL_08 :
case LC_MODEL_09 :
case LC_MODEL_10 :
case LC_MODEL_11 :
case LC_MODEL_12 :
case LC_MODEL_13 :
case LC_MODEL_14 :
case LC_MODEL_15 :
case LC_MODEL_16 :
2016-02-21 07:57:36 +01:00
case LC_MODEL_17 :
case LC_MODEL_18 :
case LC_MODEL_19 :
case LC_MODEL_20 :
case LC_MODEL_21 :
case LC_MODEL_22 :
case LC_MODEL_23 :
case LC_MODEL_24 :
2014-12-13 00:42:09 +01:00
lcGetActiveProject ( ) - > SetActiveModel ( CommandId - LC_MODEL_01 ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_HELP_HOMEPAGE :
2018-03-22 00:47:00 +01:00
QDesktopServices : : openUrl ( QUrl ( " https://www.leocad.org/ " ) ) ;
2014-12-04 02:47:28 +01:00
break ;
2018-02-19 01:17:48 +01:00
case LC_HELP_BUG_REPORT :
QDesktopServices : : openUrl ( QUrl ( " https://github.com/leozide/leocad/issues " ) ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_HELP_UPDATES :
2016-08-01 05:44:15 +02:00
ShowUpdatesDialog ( ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_HELP_ABOUT :
2016-08-01 05:44:15 +02:00
ShowAboutDialog ( ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_VIEW_TIME_ADD_KEYS :
SetAddKeys ( ! GetAddKeys ( ) ) ;
break ;
2015-01-18 06:36:14 +01:00
case LC_EDIT_TRANSFORM_RELATIVE :
SetRelativeTransform ( ! GetRelativeTransform ( ) ) ;
2014-12-04 02:47:28 +01:00
break ;
2015-04-25 00:11:50 +02:00
case LC_EDIT_SNAP_MOVE_TOGGLE :
SetMoveSnapEnabled ( ! mMoveSnapEnabled ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_EDIT_SNAP_MOVE_XY0 :
case LC_EDIT_SNAP_MOVE_XY1 :
case LC_EDIT_SNAP_MOVE_XY2 :
case LC_EDIT_SNAP_MOVE_XY3 :
case LC_EDIT_SNAP_MOVE_XY4 :
case LC_EDIT_SNAP_MOVE_XY5 :
case LC_EDIT_SNAP_MOVE_XY6 :
case LC_EDIT_SNAP_MOVE_XY7 :
case LC_EDIT_SNAP_MOVE_XY8 :
case LC_EDIT_SNAP_MOVE_XY9 :
SetMoveXYSnapIndex ( CommandId - LC_EDIT_SNAP_MOVE_XY0 ) ;
break ;
case LC_EDIT_SNAP_MOVE_Z0 :
case LC_EDIT_SNAP_MOVE_Z1 :
case LC_EDIT_SNAP_MOVE_Z2 :
case LC_EDIT_SNAP_MOVE_Z3 :
case LC_EDIT_SNAP_MOVE_Z4 :
case LC_EDIT_SNAP_MOVE_Z5 :
case LC_EDIT_SNAP_MOVE_Z6 :
case LC_EDIT_SNAP_MOVE_Z7 :
case LC_EDIT_SNAP_MOVE_Z8 :
case LC_EDIT_SNAP_MOVE_Z9 :
SetMoveZSnapIndex ( CommandId - LC_EDIT_SNAP_MOVE_Z0 ) ;
break ;
2015-04-25 00:11:50 +02:00
case LC_EDIT_SNAP_ANGLE_TOGGLE :
SetAngleSnapEnabled ( ! mAngleSnapEnabled ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_EDIT_SNAP_ANGLE0 :
case LC_EDIT_SNAP_ANGLE1 :
case LC_EDIT_SNAP_ANGLE2 :
case LC_EDIT_SNAP_ANGLE3 :
case LC_EDIT_SNAP_ANGLE4 :
case LC_EDIT_SNAP_ANGLE5 :
case LC_EDIT_SNAP_ANGLE6 :
case LC_EDIT_SNAP_ANGLE7 :
case LC_EDIT_SNAP_ANGLE8 :
case LC_EDIT_SNAP_ANGLE9 :
SetAngleSnapIndex ( CommandId - LC_EDIT_SNAP_ANGLE0 ) ;
break ;
case LC_EDIT_TRANSFORM :
2018-04-07 17:43:54 +02:00
if ( ActiveModel )
ActiveModel - > TransformSelectedObjects ( GetTransformType ( ) , GetTransformAmount ( ) ) ;
2014-12-04 02:47:28 +01:00
break ;
case LC_EDIT_TRANSFORM_ABSOLUTE_TRANSLATION :
case LC_EDIT_TRANSFORM_RELATIVE_TRANSLATION :
case LC_EDIT_TRANSFORM_ABSOLUTE_ROTATION :
case LC_EDIT_TRANSFORM_RELATIVE_ROTATION :
SetTransformType ( ( lcTransformType ) ( CommandId - LC_EDIT_TRANSFORM_ABSOLUTE_TRANSLATION ) ) ;
break ;
case LC_EDIT_ACTION_SELECT :
SetTool ( LC_TOOL_SELECT ) ;
break ;
case LC_EDIT_ACTION_INSERT :
SetTool ( LC_TOOL_INSERT ) ;
break ;
case LC_EDIT_ACTION_LIGHT :
SetTool ( LC_TOOL_LIGHT ) ;
break ;
case LC_EDIT_ACTION_SPOTLIGHT :
SetTool ( LC_TOOL_SPOTLIGHT ) ;
break ;
case LC_EDIT_ACTION_CAMERA :
SetTool ( LC_TOOL_CAMERA ) ;
break ;
case LC_EDIT_ACTION_MOVE :
SetTool ( LC_TOOL_MOVE ) ;
break ;
case LC_EDIT_ACTION_ROTATE :
SetTool ( LC_TOOL_ROTATE ) ;
break ;
case LC_EDIT_ACTION_DELETE :
SetTool ( LC_TOOL_ERASER ) ;
break ;
case LC_EDIT_ACTION_PAINT :
SetTool ( LC_TOOL_PAINT ) ;
break ;
case LC_EDIT_ACTION_ZOOM :
SetTool ( LC_TOOL_ZOOM ) ;
break ;
case LC_EDIT_ACTION_ZOOM_REGION :
SetTool ( LC_TOOL_ZOOM_REGION ) ;
break ;
case LC_EDIT_ACTION_PAN :
SetTool ( LC_TOOL_PAN ) ;
break ;
case LC_EDIT_ACTION_ROTATE_VIEW :
SetTool ( LC_TOOL_ROTATE_VIEW ) ;
break ;
case LC_EDIT_ACTION_ROLL :
SetTool ( LC_TOOL_ROLL ) ;
break ;
case LC_EDIT_CANCEL :
2016-03-06 02:47:00 +01:00
if ( ActiveView )
ActiveView - > CancelTrackingOrClearSelection ( ) ;
2014-12-04 02:47:28 +01:00
break ;
2017-02-05 03:40:46 +01:00
case LC_TIMELINE_INSERT :
mTimelineWidget - > InsertStep ( ) ;
break ;
case LC_TIMELINE_DELETE :
mTimelineWidget - > RemoveStep ( ) ;
break ;
case LC_TIMELINE_MOVE_SELECTION :
mTimelineWidget - > MoveSelection ( ) ;
break ;
case LC_TIMELINE_SET_CURRENT :
mTimelineWidget - > SetCurrentStep ( ) ;
break ;
2014-12-04 02:47:28 +01:00
case LC_NUM_COMMANDS :
break ;
}
}