00001 /*************************************************************************** 00002 * Copyright (c) 2008 Werner Mayer <wmayer[at]users.sourceforge.net> * 00003 * * 00004 * This file is part of the FreeCAD CAx development system. * 00005 * * 00006 * This library is free software; you can redistribute it and/or * 00007 * modify it under the terms of the GNU Library General Public * 00008 * License as published by the Free Software Foundation; either * 00009 * version 2 of the License, or (at your option) any later version. * 00010 * * 00011 * This library is distributed in the hope that it will be useful, * 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00014 * GNU Library General Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU Library General Public * 00017 * License along with this library; see the file COPYING.LIB. If not, * 00018 * write to the Free Software Foundation, Inc., 59 Temple Place, * 00019 * Suite 330, Boston, MA 02111-1307, USA * 00020 * * 00021 ***************************************************************************/ 00022 00023 00024 #include "PreCompiled.h" 00025 00026 #ifndef _PreComp_ 00027 # include <qobject.h> 00028 #endif 00029 00030 #include "Workbench.h" 00031 #include <Gui/ToolBarManager.h> 00032 #include <Gui/MenuManager.h> 00033 #include <Gui/ToolBarManager.h> 00034 #include <Gui/DockWindowManager.h> 00035 #include <Gui/Application.h> 00036 #include <Gui/Action.h> 00037 #include <Gui/Command.h> 00038 #include <Gui/Selection.h> 00039 #include <Gui/ToolBoxManager.h> 00040 #include <App/Document.h> 00041 #include <App/DocumentObject.h> 00042 00043 using namespace WebGui; 00044 00045 #if 0 // needed for Qt's lupdate utility 00046 qApp->translate("Workbench", "Navigation"); 00047 #endif 00048 00050 TYPESYSTEM_SOURCE(WebGui::Workbench, Gui::StdWorkbench) 00051 00052 Workbench::Workbench() 00053 { 00054 } 00055 00056 Workbench::~Workbench() 00057 { 00058 } 00059 00060 void Workbench::setupContextMenu(const char* recipient,Gui::MenuItem* item) const 00061 { 00062 //if (strcmp(recipient,"View") == 0) 00063 //{ 00064 // Gui::MenuItem* StdViews = new Gui::MenuItem(); 00065 // StdViews->setCommand( "Standard views" ); 00066 00067 // *StdViews << "Std_ViewAxo" << "Separator" << "Std_ViewFront" << "Std_ViewTop" << "Std_ViewRight" 00068 // << "Std_ViewRear" << "Std_ViewBottom" << "Std_ViewLeft"; 00069 00070 // *item << "Std_ViewFitAll" << "Std_ViewFitSelection" << StdViews 00071 // << "Separator" << "Std_ViewDockUndockFullscreen"; 00072 00073 // if ( Gui::Selection().countObjectsOfType(App::DocumentObject::getClassTypeId()) > 0 ) 00074 // *item << "Separator" << "Std_SetAppearance" << "Std_ToggleVisibility" << "Std_TreeSelection" 00075 // << "Std_RandomColor" << "Separator" << "Std_Delete"; 00076 //} 00077 //else if (strcmp(recipient,"Tree") == 0) 00078 //{ 00079 // if ( Gui::Selection().countObjectsOfType(App::DocumentObject::getClassTypeId()) > 0 ) 00080 // *item << "Std_SetAppearance" << "Std_ToggleVisibility" 00081 // << "Std_RandomColor" << "Separator" << "Std_Delete"; 00082 //} 00083 } 00084 00085 Gui::MenuItem* Workbench::setupMenuBar() const 00086 { 00087 return Gui::StdWorkbench::setupMenuBar(); 00088 //Gui::CommandManager &mgr = Gui::Application::Instance->commandManager(); 00090 //Gui::MenuItem* menuBar = new Gui::MenuItem; 00091 00092 // // File 00093 // Gui::MenuItem* file = new Gui::MenuItem( menuBar ); 00094 // file->setCommand("&File"); 00095 // *file << "Std_New" << "Std_Open" << "Separator" << "Std_CloseActiveWindow" 00096 // << "Std_CloseAllWindows" << "Separator" << "Std_Save" << "Std_SaveAs" 00097 // << "Separator" << "Std_Import" << "Std_Export" << "Std_ProjectInfo" 00098 // //<< "Separator" << "Std_Print" << "Std_PrintPdf" 00099 // << "Separator" << "Std_RecentFiles" << "Separator" << "Std_Quit"; 00100 // 00101 // // Edit 00102 // Gui::MenuItem* edit = new Gui::MenuItem( menuBar ); 00103 // edit->setCommand("&Edit"); 00104 // *edit << "Std_Undo" << "Std_Redo" << "Separator" << "Std_Cut" << "Std_Copy" 00105 // << "Std_Paste" << "Std_DuplicateSelection" << "Separator" 00106 // << "Std_Refresh" << "Std_SelectAll" << "Std_Delete" << "Std_Placement" 00107 // << "Separator" << "Std_DlgPreferences"; 00108 // 00109 // // Standard views 00110 // Gui::MenuItem* stdviews = new Gui::MenuItem; 00111 // stdviews->setCommand("Standard views"); 00112 // *stdviews << "Std_ViewFitAll" << "Std_ViewFitSelection" << "Std_ViewAxo" 00113 // << "Separator" << "Std_ViewFront" << "Std_ViewRight" 00114 // << "Std_ViewTop" << "Separator" << "Std_ViewRear" 00115 // << "Std_ViewLeft" << "Std_ViewBottom"; 00116 // 00117 // // stereo 00118 // Gui::MenuItem* view3d = new Gui::MenuItem; 00119 // view3d->setCommand("&Stereo"); 00120 // *view3d << "Std_ViewIvStereoRedGreen" << "Std_ViewIvStereoQuadBuff" 00121 // << "Std_ViewIvStereoInterleavedRows" << "Std_ViewIvStereoInterleavedColumns" 00122 // << "Std_ViewIvStereoOff" << "Separator" << "Std_ViewIvIssueCamPos"; 00123 // 00124 // // zoom 00125 // Gui::MenuItem* zoom = new Gui::MenuItem; 00126 // zoom->setCommand("&Zoom"); 00127 // *zoom << "Std_ViewZoomIn" << "Std_ViewZoomOut" << "Separator" << "Std_ViewBoxZoom"; 00128 // 00129 // // Visibility 00130 // Gui::MenuItem* visu = new Gui::MenuItem; 00131 // visu->setCommand("Visibility"); 00132 // *visu << "Std_ToggleVisibility" << "Std_ShowSelection" << "Std_HideSelection" 00133 // << "Separator" << "Std_ToggleObjects" << "Std_ShowObjects" << "Std_HideObjects"; 00134 // 00135 // // View 00136 // Gui::MenuItem* view = new Gui::MenuItem( menuBar ); 00137 // view->setCommand("&View"); 00138 // *view << "Std_ViewCreate" << "Std_OrthographicCamera" << "Std_PerspectiveCamera" << "Separator" 00139 // << stdviews << "Std_FreezeViews" << "Separator" << view3d << zoom 00140 // << "Std_ViewDockUndockFullscreen" << "Std_ToggleClipPlane" << "Separator" << visu 00141 // << "Std_SetAppearance" << "Std_ToggleVisibility" << "Std_RandomColor" << "Separator" 00142 // //<< "Std_MeasureDistance" << "Separator" 00143 // << "Std_Workbench" << "Std_ToolBarMenu" << "Std_DockViewMenu" << "Separator" 00144 // << "Std_ViewStatusBar" << "Std_UserInterface"; 00145 // 00146 // // Tools 00147 // Gui::MenuItem* tool = new Gui::MenuItem( menuBar ); 00148 // tool->setCommand("&Tools"); 00149 // *tool << "Std_CommandLine" << "Std_DlgParameter" << "Separator" << "Std_DlgMacroRecord" 00150 // << "Std_MacroStopRecord" << "Std_DlgMacroExecute" << "Std_DlgMacroExecuteDirect" 00151 // << "Separator" << "Std_ViewScreenShot" << "Separator" << "Std_DlgCustomize"; 00152 // 00153 // // Mesh **************************************************************************************************** 00154 // Gui::MenuItem* mesh = new Gui::MenuItem( menuBar ); 00155 // 00156 // // submenu analyze 00157 // Gui::MenuItem* analyze = new Gui::MenuItem(); 00158 // analyze->setCommand("Analyze"); 00159 // *analyze << "Mesh_Evaluation" 00160 // << "Mesh_EvaluateFacet" 00161 // << "Mesh_CurvatureInfo" 00162 // << "Separator" 00163 // << "Mesh_EvaluateSolid" 00164 // << "Mesh_BoundingBox"; 00165 // 00166 // // submenu boolean 00167 // Gui::MenuItem* boolean = new Gui::MenuItem(); 00168 // boolean->setCommand("Boolean"); 00169 // *boolean << "Mesh_Union" 00170 // << "Mesh_Intersection" 00171 // << "Mesh_Difference"; 00172 // 00173 // mesh->setCommand("&Meshes"); 00174 // *mesh << "Mesh_Import" 00175 // << "Mesh_Export" 00176 // << "Mesh_FromGeometry" 00177 // << "Separator" 00178 // << analyze 00179 // << "Mesh_HarmonizeNormals" 00180 // << "Mesh_FlipNormals" 00181 // << "Separator" 00182 // << "Mesh_FillupHoles" 00183 // << "Mesh_FillInteractiveHole" 00184 // << "Mesh_RemoveComponents" 00185 // << "Mesh_RemoveCompByHand" 00186 // << "Separator" 00187 // << "Mesh_BuildRegularSolid" 00188 // << boolean << "Separator" 00189 // << "Mesh_PolyCut" 00190 // << "Mesh_PolySplit" 00191 // << "Mesh_PolySegm" 00192 // << "Mesh_ToolMesh" 00193 // << "Mesh_VertexCurvature"; 00194 // 00195 // // Part **************************************************************************************************** 00196 // 00197 // Gui::MenuItem* part = new Gui::MenuItem(menuBar); 00198 // part->setCommand("&Part"); 00199 // 00200 // // submenu boolean 00201 // Gui::MenuItem* para = new Gui::MenuItem(); 00202 // para->setCommand("Parametric"); 00203 // *para << "Part_Box" 00204 // << "Part_Cylinder" 00205 // << "Part_Sphere" 00206 // << "Part_Cone" 00207 // << "Part_Torus" 00208 // << "Part_Primitives"; 00209 // *part << para 00210 // << "Part_Boolean" 00211 // << "Part_Extrude" 00212 // << "Part_Revolve" 00213 // << "Part_Fillet"; 00214 // 00215 //# ifdef WEB_SHOW_SKETCHER 00216 // if (mgr.getCommandByName("Sketcher_NewSketch")) { 00217 // Gui::MenuItem* sketch = new Gui::MenuItem(menuBar); 00218 // sketch->setCommand("Ske&tch"); 00219 // *sketch 00220 // << "Sketcher_NewSketch" 00221 // << "Separator" 00222 // << "PartDesign_Pad" 00223 // << "PartDesign_Fillet" 00224 // ; 00225 // } 00226 //# endif 00227 // 00228 // // Drawing **************************************************************************************************** 00229 // 00230 // Gui::MenuItem* drawing = new Gui::MenuItem(menuBar); 00231 // 00232 // drawing->setCommand("&Drawing"); 00233 // *drawing 00234 // << "Drawing_Open" 00235 // << "Separator" 00236 // << "Drawing_NewA3Landscape" 00237 // << "Drawing_NewView" 00238 // << "Drawing_ExportPage" 00239 // ; 00240 // 00241 // // Raytracing **************************************************************************************************** 00242 // 00243 // Gui::MenuItem* raytracing = new Gui::MenuItem(menuBar); 00244 // 00245 // raytracing->setCommand("&Raytracing"); 00246 // *raytracing 00247 // << "Raytracing_WriteView" 00248 // << "Raytracing_WriteCamera" 00249 // << "Raytracing_WritePart"; 00250 // ; 00251 // 00252 // // Drafting **************************************************************************************************** 00253 //# ifdef WEB_USE_DRAFTING 00254 // if (mgr.getCommandByName("Draft_Line")) { 00255 // Gui::MenuItem* Drafting = new Gui::MenuItem(menuBar); 00256 // 00257 // Drafting->setCommand("&Drafting"); 00258 // *Drafting 00259 // << "Draft_SelectPlane" 00260 // << "Draft_Line" 00261 // << "Draft_Polyline" 00262 // << "Draft_Circle" 00263 // << "Draft_Arc" 00264 // << "Draft_Rectangle" 00265 // << "Draft_Text" 00266 // << "Draft_Dimension" 00267 // << "Separator" 00268 // << "Draft_Move" 00269 // << "Draft_Rotate" 00270 // << "Draft_Offset" 00271 // << "Draft_Trimex" 00272 // << "Draft_Upgrade" 00273 // << "Draft_Downgrade" 00274 // << "Draft_Scale" 00275 // << "Separator" 00276 // << "Draft_ApplyStyle" 00277 // ; 00278 // } 00279 //# endif 00280 // 00281 // // xxx **************************************************************************************************** 00282 // 00283 // 00284 // // Windows 00285 // Gui::MenuItem* wnd = new Gui::MenuItem( menuBar ); 00286 // wnd->setCommand("&Windows"); 00287 // *wnd << "Std_ActivateNextWindow" << "Std_ActivatePrevWindow" << "Separator" 00288 // << "Std_TileWindows" << "Std_CascadeWindows" 00289 // << "Std_ArrangeIcons" << "Separator" << "Std_WindowsMenu" << "Std_Windows"; 00290 // 00291 // // help **************************************************************************************************** 00292 // // Separator 00293 // Gui::MenuItem* sep = new Gui::MenuItem( menuBar ); 00294 // sep->setCommand( "Separator" ); 00295 // 00296 // // Help 00297 // Gui::MenuItem* helpWebsites = new Gui::MenuItem; 00298 // helpWebsites->setCommand("&Online-help"); 00299 // *helpWebsites << "Std_OnlineHelpWebsite" 00300 // << "Std_FreeCADWebsite" 00301 // << "Std_PythonWebsite"; 00302 // 00303 // Gui::MenuItem* help = new Gui::MenuItem( menuBar ); 00304 // help->setCommand("&Help"); 00305 // *help << "Std_OnlineHelp" 00306 // << "Std_OnlineHelpPython" 00307 // << "Std_PythonHelp" 00308 // << helpWebsites 00309 // << "Separator" 00310 // << "Test_Test" 00311 // << "Separator" 00312 // << "Std_About" 00313 // << "Std_AboutQt" 00314 // << "Separator" 00315 // << "Std_WhatsThis" ; 00316 // 00317 // return menuBar; 00318 } 00319 00320 Gui::ToolBarItem* Workbench::setupToolBars() const 00321 { 00322 Gui::ToolBarItem* root = StdWorkbench::setupToolBars(); 00323 00324 // web navigation toolbar 00325 Gui::ToolBarItem* navigation = new Gui::ToolBarItem(root); 00326 navigation->setCommand("Navigation"); 00327 *navigation << "Web_OpenWebsite" 00328 << "Separator" 00329 << "Web_BrowserBack" 00330 << "Web_BrowserNext" 00331 << "Web_BrowserRefresh" 00332 << "Web_BrowserStop" 00333 << "Separator" 00334 << "Web_BrowserZoomIn" 00335 << "Web_BrowserZoomOut"; 00336 00337 return root; 00338 00339 } 00340 00341 Gui::ToolBarItem* Workbench::setupCommandBars() const 00342 { 00343 Gui::ToolBarItem* root = new Gui::ToolBarItem; 00344 return root; 00345 } 00346 00347 Gui::DockWindowItems* Workbench::setupDockWindows() const 00348 { 00349 Gui::DockWindowItems* root = Gui::StdWorkbench::setupDockWindows(); 00350 //root->setVisibility(false); // hide all dock windows by default 00351 //root->setVisibility("Std_CombiView",true); // except of the combi view 00352 return root; 00353 }