1 #ifndef __TOOLBARSTRIP_H__ 2 #define __TOOLBARSTRIP_H__ 3 4 #include <CUI/CUIDialog.h> 5 #include <LDLib/LDInputHandler.h> 6 #include "TbButtonInfo.h" 7 8 class LDViewWindow; 9 class LDViewPreferences; 10 class TCAlert; 11 class TCImage; 12 13 typedef std::vector<HWND> HwndVector; 14 typedef std::vector<long> LongVector; 15 typedef std::map<long, size_t> LongSizeTMap; 16 typedef std::vector<HIMAGELIST> HImageListVector; 17 typedef std::vector<int> IntVector; 18 typedef std::map<int, int> IntIntMap; 19 typedef std::list<HMENU> HMenuList; 20 typedef std::pair<size_t, int> ImageIndexPair; 21 typedef std::map<UINT, ImageIndexPair> ImageIndexMap; 22 23 class ToolbarStrip: public CUIDialog 24 { 25 public: 26 ToolbarStrip(HINSTANCE hInstance); 27 void create(LDViewWindow *parent); 28 void show(void); 29 void hide(void); 30 void autoSize(void); getMainToolbar(void)31 HWND getMainToolbar(void) { return m_hToolbar; } 32 void updateNumSteps(void); 33 void updateStep(void); 34 void enableMainToolbarButton(UINT buttonId, bool enable); 35 void checksReflect(void); 36 void viewModeReflect(void); 37 void activateDeactivatedTooltip(void); 38 protected: 39 virtual ~ToolbarStrip(void); 40 virtual void dealloc(void); 41 42 virtual BOOL doInitDialog(HWND /*hKbControl*/); 43 virtual LRESULT doTextFieldChange(int controlId, HWND control); 44 virtual LRESULT doCommand(int notifyCode, int commandId, 45 HWND control); 46 virtual LRESULT doNotify(int controlId, LPNMHDR notification); 47 virtual LRESULT doInitMenuPopup(HMENU hPopupMenu, UINT uPos, 48 BOOL fSystemMenu); 49 virtual LRESULT doEnterMenuLoop(bool isTrackPopupMenu); 50 virtual LRESULT doExitMenuLoop(bool isTrackPopupMenu); 51 virtual LRESULT doContextMenu(HWND hWnd, int xPos, int yPos); 52 virtual LRESULT doTimer(UINT_PTR timerID); 53 54 LRESULT doToolbarGetInfotip(TbButtonInfoVector &infos, 55 LPNMTBGETINFOTIPUC dispInfo); 56 LRESULT doMainToolbarNotify(int controlId, LPNMHDR notification); 57 LRESULT doStepToolbarNotify(int controlId, LPNMHDR notification); 58 LRESULT doMainTbGetButtonInfo(NMTOOLBARUC *notification); 59 LRESULT doMainToolbarChange(void); 60 LRESULT doMainToolbarReset(void); 61 void addTbButtonInfo(TbButtonInfoVector &infos, CUCSTR tooltipText, 62 int commandId, BYTE style = TBSTYLE_BUTTON, 63 BYTE state = TBSTATE_ENABLED); 64 void addTbCheckButtonInfo(TbButtonInfoVector &infos, CUCSTR tooltipText, 65 int commandId, bool checked, BYTE style = TBSTYLE_CHECK, 66 BYTE state = TBSTATE_ENABLED); 67 void addTbStateButtonInfo(TbButtonInfoVector &infos, CUCSTR tooltipText, 68 IntVector commandIds, int selection, BYTE style = TBSTYLE_BUTTON, 69 BYTE state = TBSTATE_ENABLED); 70 void addTbSeparatorInfo(TbButtonInfoVector &infos); 71 int addToImageList(int commandId); 72 void populateMainTbButtonInfos(void); 73 void populateStepTbButtonInfos(void); 74 void loadMainToolbarMenus(void); 75 void initMainToolbar(void); 76 void fillMainToolbar(void); 77 void initStepToolbar(void); 78 void initLayout(void); 79 void initToolbar(HWND hToolbar, TbButtonInfoVector &infos, 80 HIMAGELIST hImageList); 81 void modelAlertCallback(TCAlert *alert); 82 void stepChanged(void); 83 void enableToolbarButton(HWND hToolbar, UINT buttonId, bool enable); 84 bool doCheck(bool &value, LPARAM commandId); 85 void updateContextMenu(void); 86 void updateWireframeMenu(void); 87 void updateEdgesMenu(void); 88 void updatePrimitivesMenu(void); 89 void updateLightingMenu(void); 90 void updateBFCMenu(void); 91 void updateMenuImages(HMENU hMenu, bool topMenu = false); 92 void updateMenus(void); 93 void sizeToolbar(HWND hToolbar, int count); 94 95 void forceRedraw(void); 96 97 void doWireframe(void); 98 void doSeams(void); 99 void doEdges(void); 100 void doPrimitiveSubstitution(void); 101 void doLighting(void); 102 void doBfc(void); 103 void doShowAxes(void); 104 void doRandomColors(void); 105 void doAllConditionals(void); 106 void doConditionalControls(void); 107 void doCutaway(void); 108 void doFlatShading(void); 109 void doStudQuality(void); 110 void doPartBoundingBoxes(void); 111 void doSmoothCurves(void); 112 void doTransDefaultColor(void); 113 void doFog(void); 114 void doRemoveHiddenLines(void); 115 void doShowEdgesOnly(void); 116 void doConditionalLines(void); 117 void doHighQualityEdges(void); 118 void doAlwaysBlack(void); 119 void doTextureStuds(void); 120 void doTexmaps(void); 121 void doQualityLighting(void); 122 void doSubduedLighting(void); 123 void doSpecularHighlight(void); 124 void doAlternateLighting(void); 125 void doDrawLightDats(void); 126 void doOptionalStandardLight(void); 127 void doRedBackFaces(void); 128 void doGreenFrontFaces(void); 129 void doBlueNeutralFaces(void); 130 void doCustomizeMainToolbar(void); 131 void doMainToolbar(void); 132 void doStepsToolbar(void); 133 void doViewMode(void); 134 135 void syncViewMode(void); 136 void checkReflect(bool &value, bool prefsValue, LPARAM commandID); 137 void doDropDown(LPNMTOOLBAR toolbarNot); 138 139 void fillTbButton(TBBUTTON &button, const TbButtonInfo &buttonInfo); 140 void stepCountChanged(void); 141 142 int translateCommandId(int commandId); 143 144 LDViewWindow *m_ldviewWindow; 145 LDViewPreferences *m_prefs; 146 147 HWND m_hToolbar; 148 HWND m_hStepLabel; 149 HWND m_hStepField; 150 HWND m_hNumStepsLabel; 151 HWND m_hStepToolbar; 152 HWND m_hDeactivatedTooltip;; 153 154 HMENU m_hMainToolbarMenu; 155 HMENU m_hContextMenu; 156 HMENU m_hWireframeMenu; 157 HMENU m_hEdgesMenu; 158 HMENU m_hPrimitivesMenu; 159 HMENU m_hLightingMenu; 160 HMENU m_hBFCMenu; 161 162 HMODULE m_hGdiPlus; 163 164 double m_scaleFactor; 165 int m_imageSize; 166 int m_buttonWidth; 167 int m_buttonHeight; 168 169 int m_numSteps; 170 int m_step; 171 ucstring m_numStepsFormat; 172 TbButtonInfoVector m_mainButtonInfos; 173 TbButtonInfoVector m_stepButtonInfos; 174 HwndVector m_controls; 175 int m_stripHeight; 176 HImageListVector m_imageLists; 177 IntIntMap m_commandMap; 178 ImageIndexMap m_imagesMap; 179 bool have32BitBmps; 180 181 int m_stdBitmapStartId; 182 int m_tbBitmapStartId; 183 bool m_drawWireframe; 184 bool m_seams; 185 bool m_edges; 186 bool m_primitiveSubstitution; 187 bool m_lighting; 188 bool m_bfc; 189 bool m_showAxes; 190 bool m_randomColors; 191 bool m_allConditionals; 192 bool m_conditionalControls; 193 bool m_flat; 194 bool m_lowStuds; 195 bool m_partBBoxes; 196 bool m_smoothCurves; 197 bool m_transDefaultColor; 198 bool m_modelBoundingBox; 199 bool m_topmost; 200 bool m_wireframeCutaway; 201 bool m_examineLatLong; 202 bool m_texmaps; 203 LDInputHandler::ViewMode m_viewMode; 204 205 bool m_showMain; 206 bool m_showSteps; 207 }; 208 209 #endif // __TOOLBARSTRIP_H__ 210