History

added option to disable local cache file

Brad Hefta-Gaub committed 12 years ago

Commit f1e98721 parent dfb70ee3 files · +226 −216Browse files

Showing the changes to interface/src/Menu.cpp (1 of 3 files). Show all

Unified · Split

interface/src/Menu.cpp+151−150
@@ -37,18 +37,18 @@ Menu* Menu::_instance = NULL; · 36 unmodified lines
37 37
38Menu* Menu::getInstance() {38Menu* Menu::getInstance() {
39 static QMutex menuInstanceMutex;39 static QMutex menuInstanceMutex;
40 40
41 // lock the menu instance mutex to make sure we don't race and create two menus and crash41 // lock the menu instance mutex to make sure we don't race and create two menus and crash
42 menuInstanceMutex.lock();42 menuInstanceMutex.lock();
43 43
44 if (!_instance) {44 if (!_instance) {
45 qDebug("First call to Menu::getInstance() - initing menu.");45 qDebug("First call to Menu::getInstance() - initing menu.");
46 46
47 _instance = new Menu();47 _instance = new Menu();
48 }48 }
49 49
50 menuInstanceMutex.unlock();50 menuInstanceMutex.unlock();
51 51
52 return _instance;52 return _instance;
53}53}
54 54
@@ -72,9 +72,9 @@ Menu::Menu() : · 17 unmodified lines
72 _maxVoxelPacketsPerSecond(DEFAULT_MAX_VOXEL_PPS)72 _maxVoxelPacketsPerSecond(DEFAULT_MAX_VOXEL_PPS)
73{73{
74 Application *appInstance = Application::getInstance();74 Application *appInstance = Application::getInstance();
75 75
76 QMenu* fileMenu = addMenu("File");76 QMenu* fileMenu = addMenu("File");
77 77
78#ifdef Q_OS_MAC78#ifdef Q_OS_MAC
79 addActionToQMenuAndActionHash(fileMenu,79 addActionToQMenuAndActionHash(fileMenu,
80 MenuOption::AboutApp,80 MenuOption::AboutApp,
@@ -83,7 +83,7 @@ Menu::Menu() : · 2 unmodified lines
83 SLOT(aboutApp()),83 SLOT(aboutApp()),
84 QAction::AboutRole);84 QAction::AboutRole);
85#endif85#endif
86 86
87 (addActionToQMenuAndActionHash(fileMenu,87 (addActionToQMenuAndActionHash(fileMenu,
88 MenuOption::Login,88 MenuOption::Login,
89 0,89 0,
@@ -97,7 +97,7 @@ Menu::Menu() : · 7 unmodified lines
97 addDisabledActionAndSeparator(fileMenu, "Voxels");97 addDisabledActionAndSeparator(fileMenu, "Voxels");
98 addActionToQMenuAndActionHash(fileMenu, MenuOption::ExportVoxels, Qt::CTRL | Qt::Key_E, appInstance, SLOT(exportVoxels()));98 addActionToQMenuAndActionHash(fileMenu, MenuOption::ExportVoxels, Qt::CTRL | Qt::Key_E, appInstance, SLOT(exportVoxels()));
99 addActionToQMenuAndActionHash(fileMenu, MenuOption::ImportVoxels, Qt::CTRL | Qt::Key_I, appInstance, SLOT(importVoxels()));99 addActionToQMenuAndActionHash(fileMenu, MenuOption::ImportVoxels, Qt::CTRL | Qt::Key_I, appInstance, SLOT(importVoxels()));
100 100
101 addDisabledActionAndSeparator(fileMenu, "Go");101 addDisabledActionAndSeparator(fileMenu, "Go");
102 addActionToQMenuAndActionHash(fileMenu,102 addActionToQMenuAndActionHash(fileMenu,
103 MenuOption::GoHome,103 MenuOption::GoHome,
@@ -120,45 +120,45 @@ Menu::Menu() : · 16 unmodified lines
120 this,120 this,
121 SLOT(goToUser()));121 SLOT(goToUser()));
122 122
123 123
124 addDisabledActionAndSeparator(fileMenu, "Settings");124 addDisabledActionAndSeparator(fileMenu, "Settings");
125 addActionToQMenuAndActionHash(fileMenu, MenuOption::SettingsImport, 0, this, SLOT(importSettings()));125 addActionToQMenuAndActionHash(fileMenu, MenuOption::SettingsImport, 0, this, SLOT(importSettings()));
126 addActionToQMenuAndActionHash(fileMenu, MenuOption::SettingsExport, 0, this, SLOT(exportSettings()));126 addActionToQMenuAndActionHash(fileMenu, MenuOption::SettingsExport, 0, this, SLOT(exportSettings()));
127 127
128 addDisabledActionAndSeparator(fileMenu, "Devices");128 addDisabledActionAndSeparator(fileMenu, "Devices");
129 addActionToQMenuAndActionHash(fileMenu, MenuOption::Pair, 0, PairingHandler::getInstance(), SLOT(sendPairRequest()));129 addActionToQMenuAndActionHash(fileMenu, MenuOption::Pair, 0, PairingHandler::getInstance(), SLOT(sendPairRequest()));
130 addCheckableActionToQMenuAndActionHash(fileMenu, MenuOption::TransmitterDrive, 0, true);130 addCheckableActionToQMenuAndActionHash(fileMenu, MenuOption::TransmitterDrive, 0, true);
131 131
132 addActionToQMenuAndActionHash(fileMenu,132 addActionToQMenuAndActionHash(fileMenu,
133 MenuOption::Quit,133 MenuOption::Quit,
134 Qt::CTRL | Qt::Key_Q,134 Qt::CTRL | Qt::Key_Q,
135 appInstance,135 appInstance,
136 SLOT(quit()),136 SLOT(quit()),
137 QAction::QuitRole);137 QAction::QuitRole);
138 138
139 139
140 QMenu* editMenu = addMenu("Edit");140 QMenu* editMenu = addMenu("Edit");
141 141
142 addActionToQMenuAndActionHash(editMenu,142 addActionToQMenuAndActionHash(editMenu,
143 MenuOption::Preferences,143 MenuOption::Preferences,
144 Qt::CTRL | Qt::Key_Comma,144 Qt::CTRL | Qt::Key_Comma,
145 this,145 this,
146 SLOT(editPreferences()),146 SLOT(editPreferences()),
147 QAction::PreferencesRole);147 QAction::PreferencesRole);
148 148
149 addDisabledActionAndSeparator(editMenu, "Voxels");149 addDisabledActionAndSeparator(editMenu, "Voxels");
150 150
151 addActionToQMenuAndActionHash(editMenu, MenuOption::CutVoxels, Qt::CTRL | Qt::Key_X, appInstance, SLOT(cutVoxels()));151 addActionToQMenuAndActionHash(editMenu, MenuOption::CutVoxels, Qt::CTRL | Qt::Key_X, appInstance, SLOT(cutVoxels()));
152 addActionToQMenuAndActionHash(editMenu, MenuOption::CopyVoxels, Qt::CTRL | Qt::Key_C, appInstance, SLOT(copyVoxels()));152 addActionToQMenuAndActionHash(editMenu, MenuOption::CopyVoxels, Qt::CTRL | Qt::Key_C, appInstance, SLOT(copyVoxels()));
153 addActionToQMenuAndActionHash(editMenu, MenuOption::PasteVoxels, Qt::CTRL | Qt::Key_V, appInstance, SLOT(pasteVoxels()));153 addActionToQMenuAndActionHash(editMenu, MenuOption::PasteVoxels, Qt::CTRL | Qt::Key_V, appInstance, SLOT(pasteVoxels()));
154 addActionToQMenuAndActionHash(editMenu, MenuOption::NudgeVoxels, Qt::CTRL | Qt::Key_N, appInstance, SLOT(nudgeVoxels()));154 addActionToQMenuAndActionHash(editMenu, MenuOption::NudgeVoxels, Qt::CTRL | Qt::Key_N, appInstance, SLOT(nudgeVoxels()));
155 155
156 #ifdef __APPLE__156 #ifdef __APPLE__
157 addActionToQMenuAndActionHash(editMenu, MenuOption::DeleteVoxels, Qt::Key_Backspace, appInstance, SLOT(deleteVoxels()));157 addActionToQMenuAndActionHash(editMenu, MenuOption::DeleteVoxels, Qt::Key_Backspace, appInstance, SLOT(deleteVoxels()));
158 #else158 #else
159 addActionToQMenuAndActionHash(editMenu, MenuOption::DeleteVoxels, Qt::Key_Delete, appInstance, SLOT(deleteVoxels()));159 addActionToQMenuAndActionHash(editMenu, MenuOption::DeleteVoxels, Qt::Key_Delete, appInstance, SLOT(deleteVoxels()));
160 #endif160 #endif
161 161
162 addDisabledActionAndSeparator(editMenu, "Physics");162 addDisabledActionAndSeparator(editMenu, "Physics");
163 addCheckableActionToQMenuAndActionHash(editMenu, MenuOption::Gravity, Qt::SHIFT | Qt::Key_G, true);163 addCheckableActionToQMenuAndActionHash(editMenu, MenuOption::Gravity, Qt::SHIFT | Qt::Key_G, true);
164 addCheckableActionToQMenuAndActionHash(editMenu,164 addCheckableActionToQMenuAndActionHash(editMenu,
@@ -167,47 +167,47 @@ Menu::Menu() : · 2 unmodified lines
167 true,167 true,
168 appInstance->getAvatar(),168 appInstance->getAvatar(),
169 SLOT(setWantCollisionsOn(bool)));169 SLOT(setWantCollisionsOn(bool)));
170 170
171 QMenu* toolsMenu = addMenu("Tools");171 QMenu* toolsMenu = addMenu("Tools");
172 172
173 _voxelModeActionsGroup = new QActionGroup(this);173 _voxelModeActionsGroup = new QActionGroup(this);
174 _voxelModeActionsGroup->setExclusive(false);174 _voxelModeActionsGroup->setExclusive(false);
175 175
176 QAction* addVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelAddMode, Qt::Key_V);176 QAction* addVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelAddMode, Qt::Key_V);
177 _voxelModeActionsGroup->addAction(addVoxelMode);177 _voxelModeActionsGroup->addAction(addVoxelMode);
178 178
179 QAction* deleteVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelDeleteMode, Qt::Key_R);179 QAction* deleteVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelDeleteMode, Qt::Key_R);
180 _voxelModeActionsGroup->addAction(deleteVoxelMode);180 _voxelModeActionsGroup->addAction(deleteVoxelMode);
181 181
182 QAction* colorVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelColorMode, Qt::Key_B);182 QAction* colorVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelColorMode, Qt::Key_B);
183 _voxelModeActionsGroup->addAction(colorVoxelMode);183 _voxelModeActionsGroup->addAction(colorVoxelMode);
184 184
185 QAction* selectVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelSelectMode, Qt::Key_O);185 QAction* selectVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelSelectMode, Qt::Key_O);
186 _voxelModeActionsGroup->addAction(selectVoxelMode);186 _voxelModeActionsGroup->addAction(selectVoxelMode);
187 187
188 QAction* getColorMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelGetColorMode, Qt::Key_G);188 QAction* getColorMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelGetColorMode, Qt::Key_G);
189 _voxelModeActionsGroup->addAction(getColorMode);189 _voxelModeActionsGroup->addAction(getColorMode);
190 190
191 addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::ClickToFly);191 addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::ClickToFly);
192 192
193 193
194 // connect each of the voxel mode actions to the updateVoxelModeActionsSlot194 // connect each of the voxel mode actions to the updateVoxelModeActionsSlot
195 foreach (QAction* action, _voxelModeActionsGroup->actions()) {195 foreach (QAction* action, _voxelModeActionsGroup->actions()) {
196 connect(action, SIGNAL(triggered()), this, SLOT(updateVoxelModeActions()));196 connect(action, SIGNAL(triggered()), this, SLOT(updateVoxelModeActions()));
197 }197 }
198 198
199 QAction* voxelPaintColor = addActionToQMenuAndActionHash(toolsMenu,199 QAction* voxelPaintColor = addActionToQMenuAndActionHash(toolsMenu,
200 MenuOption::VoxelPaintColor,200 MenuOption::VoxelPaintColor,
201 Qt::META | Qt::Key_C,201 Qt::META | Qt::Key_C,
202 this,202 this,
203 SLOT(chooseVoxelPaintColor()));203 SLOT(chooseVoxelPaintColor()));
204 204
205 Application::getInstance()->getSwatch()->setAction(voxelPaintColor);205 Application::getInstance()->getSwatch()->setAction(voxelPaintColor);
206 206
207 QColor paintColor(128, 128, 128);207 QColor paintColor(128, 128, 128);
208 voxelPaintColor->setData(paintColor);208 voxelPaintColor->setData(paintColor);
209 voxelPaintColor->setIcon(Swatch::createIcon(paintColor));209 voxelPaintColor->setIcon(Swatch::createIcon(paintColor));
210 210
211 addActionToQMenuAndActionHash(toolsMenu,211 addActionToQMenuAndActionHash(toolsMenu,
212 MenuOption::DecreaseVoxelSize,212 MenuOption::DecreaseVoxelSize,
213 QKeySequence::ZoomOut,213 QKeySequence::ZoomOut,
@@ -220,9 +220,9 @@ Menu::Menu() : · 6 unmodified lines
220 SLOT(increaseVoxelSize()));220 SLOT(increaseVoxelSize()));
221 addActionToQMenuAndActionHash(toolsMenu, MenuOption::ResetSwatchColors, 0, this, SLOT(resetSwatchColors()));221 addActionToQMenuAndActionHash(toolsMenu, MenuOption::ResetSwatchColors, 0, this, SLOT(resetSwatchColors()));
222 222
223 223
224 QMenu* viewMenu = addMenu("View");224 QMenu* viewMenu = addMenu("View");
225 225
226 addCheckableActionToQMenuAndActionHash(viewMenu,226 addCheckableActionToQMenuAndActionHash(viewMenu,
227 MenuOption::Fullscreen,227 MenuOption::Fullscreen,
228 Qt::CTRL | Qt::META | Qt::Key_F,228 Qt::CTRL | Qt::META | Qt::Key_F,
@@ -233,10 +233,10 @@ Menu::Menu() : · 4 unmodified lines
233 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Mirror, Qt::SHIFT | Qt::Key_H);233 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Mirror, Qt::SHIFT | Qt::Key_H);
234 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FullscreenMirror, Qt::Key_H);234 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FullscreenMirror, Qt::Key_H);
235 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Enable3DTVMode, 0, false);235 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Enable3DTVMode, 0, false);
236 236
237 237
238 QMenu* avatarSizeMenu = viewMenu->addMenu("Avatar Size");238 QMenu* avatarSizeMenu = viewMenu->addMenu("Avatar Size");
239 239
240 addActionToQMenuAndActionHash(avatarSizeMenu,240 addActionToQMenuAndActionHash(avatarSizeMenu,
241 MenuOption::IncreaseAvatarSize,241 MenuOption::IncreaseAvatarSize,
242 Qt::Key_Plus,242 Qt::Key_Plus,
@@ -263,8 +263,8 @@ Menu::Menu() : · 20 unmodified lines
263 true);263 true);
264 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::MoveWithLean, 0, false);264 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::MoveWithLean, 0, false);
265 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::HeadMouse, 0, false);265 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::HeadMouse, 0, false);
266 266
267 267
268 addDisabledActionAndSeparator(viewMenu, "Stats");268 addDisabledActionAndSeparator(viewMenu, "Stats");
269 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Stats, Qt::Key_Slash);269 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Stats, Qt::Key_Slash);
270 addActionToQMenuAndActionHash(viewMenu, MenuOption::Log, Qt::CTRL | Qt::Key_L, appInstance, SLOT(toggleLogDialog()));270 addActionToQMenuAndActionHash(viewMenu, MenuOption::Log, Qt::CTRL | Qt::Key_L, appInstance, SLOT(toggleLogDialog()));
@@ -272,7 +272,7 @@ Menu::Menu() : · 1 unmodified line
272 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Bandwidth, 0, true);272 addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Bandwidth, 0, true);
273 addActionToQMenuAndActionHash(viewMenu, MenuOption::BandwidthDetails, 0, this, SLOT(bandwidthDetails()));273 addActionToQMenuAndActionHash(viewMenu, MenuOption::BandwidthDetails, 0, this, SLOT(bandwidthDetails()));
274 addActionToQMenuAndActionHash(viewMenu, MenuOption::VoxelStats, 0, this, SLOT(voxelStatsDetails()));274 addActionToQMenuAndActionHash(viewMenu, MenuOption::VoxelStats, 0, this, SLOT(voxelStatsDetails()));
275 275
276 QMenu* developerMenu = addMenu("Developer");276 QMenu* developerMenu = addMenu("Developer");
277 277
278 QMenu* renderOptionsMenu = developerMenu->addMenu("Rendering Options");278 QMenu* renderOptionsMenu = developerMenu->addMenu("Rendering Options");
@@ -284,11 +284,11 @@ Menu::Menu() : · 5 unmodified lines
284 0,284 0,
285 appInstance->getGlowEffect(),285 appInstance->getGlowEffect(),
286 SLOT(cycleRenderMode()));286 SLOT(cycleRenderMode()));
287 287
288 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::ParticleCloud, 0, false);288 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::ParticleCloud, 0, false);
289 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, false);289 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, false);
290 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Metavoxels, 0, false);290 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Metavoxels, 0, false);
291 291
292 292
293 QMenu* voxelOptionsMenu = developerMenu->addMenu("Voxel Options");293 QMenu* voxelOptionsMenu = developerMenu->addMenu("Voxel Options");
294 294
@@ -301,19 +301,20 @@ Menu::Menu() : · 6 unmodified lines
301 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontRenderVoxels);301 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontRenderVoxels);
302 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontCallOpenGLForVoxels);302 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontCallOpenGLForVoxels);
303 303
304 _useVoxelShader = addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::UseVoxelShader, 0, 304 _useVoxelShader = addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::UseVoxelShader, 0,
305 false, appInstance->getVoxels(), SLOT(setUseVoxelShader(bool)));305 false, appInstance->getVoxels(), SLOT(setUseVoxelShader(bool)));
306 306
307 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::VoxelsAsPoints, 0, 307 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::VoxelsAsPoints, 0,
308 false, appInstance->getVoxels(), SLOT(setVoxelsAsPoints(bool)));308 false, appInstance->getVoxels(), SLOT(setVoxelsAsPoints(bool)));
309 309
310 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::VoxelTextures);310 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::VoxelTextures);
311 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::AmbientOcclusion);311 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::AmbientOcclusion);
312 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontFadeOnVoxelServerChanges);312 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontFadeOnVoxelServerChanges);
313 addActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::LodTools, Qt::SHIFT | Qt::Key_L, this, SLOT(lodTools()));313 addActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::LodTools, Qt::SHIFT | Qt::Key_L, this, SLOT(lodTools()));
314 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DisableLocalVoxelCache);
314 315
315 QMenu* voxelProtoOptionsMenu = voxelOptionsMenu->addMenu("Voxel Server Protocol Options");316 QMenu* voxelProtoOptionsMenu = voxelOptionsMenu->addMenu("Voxel Server Protocol Options");
316 317
317 addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DisableColorVoxels);318 addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DisableColorVoxels);
318 addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DisableLowRes);319 addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DisableLowRes);
319 addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DisableDeltaSending);320 addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DisableDeltaSending);
@@ -322,16 +323,16 @@ Menu::Menu() : · 2 unmodified lines
322 addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DestructiveAddVoxel);323 addCheckableActionToQMenuAndActionHash(voxelProtoOptionsMenu, MenuOption::DestructiveAddVoxel);
323 324
324 QMenu* avatarOptionsMenu = developerMenu->addMenu("Avatar Options");325 QMenu* avatarOptionsMenu = developerMenu->addMenu("Avatar Options");
325 326
326 addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::Avatars, 0, true);327 addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::Avatars, 0, true);
327 addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::CollisionProxies);328 addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::CollisionProxies);
328 329
329 addActionToQMenuAndActionHash(avatarOptionsMenu,330 addActionToQMenuAndActionHash(avatarOptionsMenu,
330 MenuOption::FaceMode,331 MenuOption::FaceMode,
331 0,332 0,
332 &appInstance->getAvatar()->getHead().getVideoFace(),333 &appInstance->getAvatar()->getHead().getVideoFace(),
333 SLOT(cycleRenderMode()));334 SLOT(cycleRenderMode()));
334 335
335 addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::LookAtVectors, 0, true);336 addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::LookAtVectors, 0, true);
336 addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::LookAtIndicator, 0, true);337 addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::LookAtIndicator, 0, true);
337 addCheckableActionToQMenuAndActionHash(avatarOptionsMenu,338 addCheckableActionToQMenuAndActionHash(avatarOptionsMenu,
@@ -375,12 +376,12 @@ Menu::Menu() : · 37 unmodified lines
375 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::SimulateLeapHand);376 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::SimulateLeapHand);
376 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayLeapHands, 0, true);377 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayLeapHands, 0, true);
377 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::LeapDrive, 0, false);378 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::LeapDrive, 0, false);
378 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHandTargets, 0, false); 379 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHandTargets, 0, false);
379 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::BallFromHand, 0, false);380 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::BallFromHand, 0, false);
380 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::VoxelDrumming, 0, false);381 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::VoxelDrumming, 0, false);
381 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::PlaySlaps, 0, false);382 addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::PlaySlaps, 0, false);
382 383
383 384
384 385
385 QMenu* trackingOptionsMenu = developerMenu->addMenu("Tracking Options");386 QMenu* trackingOptionsMenu = developerMenu->addMenu("Tracking Options");
386 addCheckableActionToQMenuAndActionHash(trackingOptionsMenu,387 addCheckableActionToQMenuAndActionHash(trackingOptionsMenu,
@@ -389,14 +390,14 @@ Menu::Menu() : · 2 unmodified lines
389 false,390 false,
390 appInstance->getWebcam(),391 appInstance->getWebcam(),
391 SLOT(setSkeletonTrackingOn(bool)));392 SLOT(setSkeletonTrackingOn(bool)));
392 393
393 addCheckableActionToQMenuAndActionHash(trackingOptionsMenu,394 addCheckableActionToQMenuAndActionHash(trackingOptionsMenu,
394 MenuOption::LEDTracking,395 MenuOption::LEDTracking,
395 0,396 0,
396 false,397 false,
397 appInstance->getWebcam()->getGrabber(),398 appInstance->getWebcam()->getGrabber(),
398 SLOT(setLEDTrackingOn(bool)));399 SLOT(setLEDTrackingOn(bool)));
399 400
400 addDisabledActionAndSeparator(developerMenu, "Testing");401 addDisabledActionAndSeparator(developerMenu, "Testing");
401 402
402 QMenu* timingMenu = developerMenu->addMenu("Timing and Statistics Tools");403 QMenu* timingMenu = developerMenu->addMenu("Timing and Statistics Tools");
@@ -408,7 +409,7 @@ Menu::Menu() : · 5 unmodified lines
408 Qt::SHIFT | Qt::Key_S,409 Qt::SHIFT | Qt::Key_S,
409 appInstance->getVoxels(),410 appInstance->getVoxels(),
410 SLOT(collectStatsForTreesAndVBOs()));411 SLOT(collectStatsForTreesAndVBOs()));
411 412
412 QMenu* frustumMenu = developerMenu->addMenu("View Frustum Debugging Tools");413 QMenu* frustumMenu = developerMenu->addMenu("View Frustum Debugging Tools");
413 addCheckableActionToQMenuAndActionHash(frustumMenu, MenuOption::DisplayFrustum, Qt::SHIFT | Qt::Key_F);414 addCheckableActionToQMenuAndActionHash(frustumMenu, MenuOption::DisplayFrustum, Qt::SHIFT | Qt::Key_F);
414 addActionToQMenuAndActionHash(frustumMenu,415 addActionToQMenuAndActionHash(frustumMenu,
@@ -417,8 +418,8 @@ Menu::Menu() : · 2 unmodified lines
417 this,418 this,
418 SLOT(cycleFrustumRenderMode()));419 SLOT(cycleFrustumRenderMode()));
419 updateFrustumRenderModeAction();420 updateFrustumRenderModeAction();
420 421
421 422
422 QMenu* renderDebugMenu = developerMenu->addMenu("Render Debugging Tools");423 QMenu* renderDebugMenu = developerMenu->addMenu("Render Debugging Tools");
423 addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::PipelineWarnings, Qt::CTRL | Qt::SHIFT | Qt::Key_P);424 addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::PipelineWarnings, Qt::CTRL | Qt::SHIFT | Qt::Key_P);
424 addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::SuppressShortTimings, Qt::CTRL | Qt::SHIFT | Qt::Key_S);425 addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::SuppressShortTimings, Qt::CTRL | Qt::SHIFT | Qt::Key_S);
@@ -431,48 +432,48 @@ Menu::Menu() : · 6 unmodified lines
431 Qt::CTRL | Qt::Key_A,432 Qt::CTRL | Qt::Key_A,
432 appInstance->getVoxels(),433 appInstance->getVoxels(),
433 SLOT(showAllLocalVoxels()));434 SLOT(showAllLocalVoxels()));
434 435
435 addActionToQMenuAndActionHash(renderDebugMenu,436 addActionToQMenuAndActionHash(renderDebugMenu,
436 MenuOption::KillLocalVoxels,437 MenuOption::KillLocalVoxels,
437 Qt::CTRL | Qt::Key_K,438 Qt::CTRL | Qt::Key_K,
438 appInstance, SLOT(doKillLocalVoxels()));439 appInstance, SLOT(doKillLocalVoxels()));
439 440
440 addActionToQMenuAndActionHash(renderDebugMenu,441 addActionToQMenuAndActionHash(renderDebugMenu,
441 MenuOption::RandomizeVoxelColors,442 MenuOption::RandomizeVoxelColors,
442 Qt::CTRL | Qt::Key_R,443 Qt::CTRL | Qt::Key_R,
443 appInstance->getVoxels(),444 appInstance->getVoxels(),
444 SLOT(randomizeVoxelColors()));445 SLOT(randomizeVoxelColors()));
445 446
446 addActionToQMenuAndActionHash(renderDebugMenu,447 addActionToQMenuAndActionHash(renderDebugMenu,
447 MenuOption::FalseColorRandomly,448 MenuOption::FalseColorRandomly,
448 0,449 0,
449 appInstance->getVoxels(),450 appInstance->getVoxels(),
450 SLOT(falseColorizeRandom()));451 SLOT(falseColorizeRandom()));
451 452
452 addActionToQMenuAndActionHash(renderDebugMenu,453 addActionToQMenuAndActionHash(renderDebugMenu,
453 MenuOption::FalseColorEveryOtherVoxel,454 MenuOption::FalseColorEveryOtherVoxel,
454 0,455 0,
455 appInstance->getVoxels(),456 appInstance->getVoxels(),
456 SLOT(falseColorizeRandomEveryOther()));457 SLOT(falseColorizeRandomEveryOther()));
457 458
458 addActionToQMenuAndActionHash(renderDebugMenu,459 addActionToQMenuAndActionHash(renderDebugMenu,
459 MenuOption::FalseColorByDistance,460 MenuOption::FalseColorByDistance,
460 0,461 0,
461 appInstance->getVoxels(),462 appInstance->getVoxels(),
462 SLOT(falseColorizeDistanceFromView()));463 SLOT(falseColorizeDistanceFromView()));
463 464
464 addActionToQMenuAndActionHash(renderDebugMenu,465 addActionToQMenuAndActionHash(renderDebugMenu,
465 MenuOption::FalseColorOutOfView,466 MenuOption::FalseColorOutOfView,
466 0,467 0,
467 appInstance->getVoxels(),468 appInstance->getVoxels(),
468 SLOT(falseColorizeInView()));469 SLOT(falseColorizeInView()));
469 470
470 addActionToQMenuAndActionHash(renderDebugMenu,471 addActionToQMenuAndActionHash(renderDebugMenu,
471 MenuOption::FalseColorBySource,472 MenuOption::FalseColorBySource,
472 0,473 0,
473 appInstance->getVoxels(),474 appInstance->getVoxels(),
474 SLOT(falseColorizeBySource()));475 SLOT(falseColorizeBySource()));
475 476
476 addActionToQMenuAndActionHash(renderDebugMenu,477 addActionToQMenuAndActionHash(renderDebugMenu,
477 MenuOption::ShowTrueColors,478 MenuOption::ShowTrueColors,
478 Qt::CTRL | Qt::Key_T,479 Qt::CTRL | Qt::Key_T,
@@ -485,32 +486,32 @@ Menu::Menu() : · 6 unmodified lines
485 0,486 0,
486 appInstance->getVoxels(),487 appInstance->getVoxels(),
487 SLOT(falseColorizeOccluded()));488 SLOT(falseColorizeOccluded()));
488 489
489 addActionToQMenuAndActionHash(renderDebugMenu,490 addActionToQMenuAndActionHash(renderDebugMenu,
490 MenuOption::FalseColorOccludedV2,491 MenuOption::FalseColorOccludedV2,
491 0,492 0,
492 appInstance->getVoxels(),493 appInstance->getVoxels(),
493 SLOT(falseColorizeOccludedV2()));494 SLOT(falseColorizeOccludedV2()));
494 495
495 addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::CoverageMap, Qt::SHIFT | Qt::CTRL | Qt::Key_O);496 addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::CoverageMap, Qt::SHIFT | Qt::CTRL | Qt::Key_O);
496 addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::CoverageMapV2, Qt::SHIFT | Qt::CTRL | Qt::Key_P);497 addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::CoverageMapV2, Qt::SHIFT | Qt::CTRL | Qt::Key_P);
497 498
498 QMenu* audioDebugMenu = developerMenu->addMenu("Audio Debugging Tools");499 QMenu* audioDebugMenu = developerMenu->addMenu("Audio Debugging Tools");
499 addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoServerAudio);500 addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoServerAudio);
500 addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoLocalAudio);501 addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoLocalAudio);
501 502
502 addActionToQMenuAndActionHash(developerMenu, MenuOption::PasteToVoxel, 503 addActionToQMenuAndActionHash(developerMenu, MenuOption::PasteToVoxel,
503 Qt::CTRL | Qt::SHIFT | Qt::Key_V, 504 Qt::CTRL | Qt::SHIFT | Qt::Key_V,
504 this,505 this,
505 SLOT(pasteToVoxel()));506 SLOT(pasteToVoxel()));
506 507
507 508
508#ifndef Q_OS_MAC509#ifndef Q_OS_MAC
509 QMenu* helpMenu = addMenu("Help");510 QMenu* helpMenu = addMenu("Help");
510 QAction* helpAction = helpMenu->addAction(MenuOption::AboutApp);511 QAction* helpAction = helpMenu->addAction(MenuOption::AboutApp);
511 connect(helpAction, SIGNAL(triggered()), this, SLOT(aboutApp()));512 connect(helpAction, SIGNAL(triggered()), this, SLOT(aboutApp()));
512#endif513#endif
513 514
514}515}
515 516
516Menu::~Menu() {517Menu::~Menu() {
@@ -522,7 +523,7 @@ void Menu::loadSettings(QSettings* settings) { · 5 unmodified lines
522 if (!settings) {523 if (!settings) {
523 settings = Application::getInstance()->getSettings();524 settings = Application::getInstance()->getSettings();
524 }525 }
525 526
526 _audioJitterBufferSamples = loadSetting(settings, "audioJitterBufferSamples", 0);527 _audioJitterBufferSamples = loadSetting(settings, "audioJitterBufferSamples", 0);
527 _fieldOfView = loadSetting(settings, "fieldOfView", DEFAULT_FIELD_OF_VIEW_DEGREES);528 _fieldOfView = loadSetting(settings, "fieldOfView", DEFAULT_FIELD_OF_VIEW_DEGREES);
528 _faceshiftEyeDeflection = loadSetting(settings, "faceshiftEyeDeflection", DEFAULT_FACESHIFT_EYE_DEFLECTION);529 _faceshiftEyeDeflection = loadSetting(settings, "faceshiftEyeDeflection", DEFAULT_FACESHIFT_EYE_DEFLECTION);
@@ -530,7 +531,7 @@ void Menu::loadSettings(QSettings* settings) { · 1 unmodified line
530 _maxVoxelPacketsPerSecond = loadSetting(settings, "maxVoxelsPPS", DEFAULT_MAX_VOXEL_PPS);531 _maxVoxelPacketsPerSecond = loadSetting(settings, "maxVoxelsPPS", DEFAULT_MAX_VOXEL_PPS);
531 _voxelSizeScale = loadSetting(settings, "voxelSizeScale", DEFAULT_OCTREE_SIZE_SCALE);532 _voxelSizeScale = loadSetting(settings, "voxelSizeScale", DEFAULT_OCTREE_SIZE_SCALE);
532 _boundaryLevelAdjust = loadSetting(settings, "boundaryLevelAdjust", 0);533 _boundaryLevelAdjust = loadSetting(settings, "boundaryLevelAdjust", 0);
533 534
534 settings->beginGroup("View Frustum Offset Camera");535 settings->beginGroup("View Frustum Offset Camera");
535 // in case settings is corrupt or missing loadSetting() will check for NaN536 // in case settings is corrupt or missing loadSetting() will check for NaN
536 _viewFrustumOffset.yaw = loadSetting(settings, "viewFrustumOffsetYaw", 0.0f);537 _viewFrustumOffset.yaw = loadSetting(settings, "viewFrustumOffsetYaw", 0.0f);
@@ -539,7 +540,7 @@ void Menu::loadSettings(QSettings* settings) { · 2 unmodified lines
539 _viewFrustumOffset.distance = loadSetting(settings, "viewFrustumOffsetDistance", 0.0f);540 _viewFrustumOffset.distance = loadSetting(settings, "viewFrustumOffsetDistance", 0.0f);
540 _viewFrustumOffset.up = loadSetting(settings, "viewFrustumOffsetUp", 0.0f);541 _viewFrustumOffset.up = loadSetting(settings, "viewFrustumOffsetUp", 0.0f);
541 settings->endGroup();542 settings->endGroup();
542 543
543 scanMenuBar(&loadAction, settings);544 scanMenuBar(&loadAction, settings);
544 Application::getInstance()->getAvatar()->loadData(settings);545 Application::getInstance()->getAvatar()->loadData(settings);
545 Application::getInstance()->getSwatch()->loadData(settings);546 Application::getInstance()->getSwatch()->loadData(settings);
@@ -552,7 +553,7 @@ void Menu::saveSettings(QSettings* settings) { · 6 unmodified lines
552 if (!settings) {553 if (!settings) {
553 settings = Application::getInstance()->getSettings();554 settings = Application::getInstance()->getSettings();
554 }555 }
555 556
556 settings->setValue("audioJitterBufferSamples", _audioJitterBufferSamples);557 settings->setValue("audioJitterBufferSamples", _audioJitterBufferSamples);
557 settings->setValue("fieldOfView", _fieldOfView);558 settings->setValue("fieldOfView", _fieldOfView);
558 settings->setValue("faceshiftEyeDeflection", _faceshiftEyeDeflection);559 settings->setValue("faceshiftEyeDeflection", _faceshiftEyeDeflection);
@@ -567,7 +568,7 @@ void Menu::saveSettings(QSettings* settings) { · 8 unmodified lines
567 settings->setValue("viewFrustumOffsetDistance", _viewFrustumOffset.distance);568 settings->setValue("viewFrustumOffsetDistance", _viewFrustumOffset.distance);
568 settings->setValue("viewFrustumOffsetUp", _viewFrustumOffset.up);569 settings->setValue("viewFrustumOffsetUp", _viewFrustumOffset.up);
569 settings->endGroup();570 settings->endGroup();
570 571
571 scanMenuBar(&saveAction, settings);572 scanMenuBar(&saveAction, settings);
572 Application::getInstance()->getAvatar()->saveData(settings);573 Application::getInstance()->getAvatar()->saveData(settings);
573 Application::getInstance()->getSwatch()->saveData(settings);574 Application::getInstance()->getSwatch()->saveData(settings);
@@ -612,7 +613,7 @@ void Menu::saveAction(QSettings* set, QAction* action) { · 38 unmodified lines
612 613
613void Menu::scanMenuBar(settingsAction modifySetting, QSettings* set) {614void Menu::scanMenuBar(settingsAction modifySetting, QSettings* set) {
614 QList<QMenu*> menus = this->findChildren<QMenu *>();615 QList<QMenu*> menus = this->findChildren<QMenu *>();
615 616
616 for (QList<QMenu *>::const_iterator it = menus.begin(); menus.end() != it; ++it) {617 for (QList<QMenu *>::const_iterator it = menus.begin(); menus.end() != it; ++it) {
617 scanMenu(*it, modifySetting, set);618 scanMenu(*it, modifySetting, set);
618 }619 }
@@ -620,7 +621,7 @@ void Menu::scanMenuBar(settingsAction modifySetting, QSettings* set) { · 1 unmodified line
620 621
621void Menu::scanMenu(QMenu* menu, settingsAction modifySetting, QSettings* set) {622void Menu::scanMenu(QMenu* menu, settingsAction modifySetting, QSettings* set) {
622 QList<QAction*> actions = menu->actions();623 QList<QAction*> actions = menu->actions();
623 624
624 set->beginGroup(menu->title());625 set->beginGroup(menu->title());
625 for (QList<QAction *>::const_iterator it = actions.begin(); actions.end() != it; ++it) {626 for (QList<QAction *>::const_iterator it = actions.begin(); actions.end() != it; ++it) {
626 if ((*it)->menu()) {627 if ((*it)->menu()) {
@@ -636,48 +637,48 @@ void Menu::scanMenu(QMenu* menu, settingsAction modifySetting, QSettings* set) { · 9 unmodified lines
636void Menu::handleViewFrustumOffsetKeyModifier(int key) {637void Menu::handleViewFrustumOffsetKeyModifier(int key) {
637 const float VIEW_FRUSTUM_OFFSET_DELTA = 0.5f;638 const float VIEW_FRUSTUM_OFFSET_DELTA = 0.5f;
638 const float VIEW_FRUSTUM_OFFSET_UP_DELTA = 0.05f;639 const float VIEW_FRUSTUM_OFFSET_UP_DELTA = 0.05f;
639 640
640 switch (key) {641 switch (key) {
641 case Qt::Key_BracketLeft:642 case Qt::Key_BracketLeft:
642 _viewFrustumOffset.yaw -= VIEW_FRUSTUM_OFFSET_DELTA;643 _viewFrustumOffset.yaw -= VIEW_FRUSTUM_OFFSET_DELTA;
643 break;644 break;
644 645
645 case Qt::Key_BracketRight:646 case Qt::Key_BracketRight:
646 _viewFrustumOffset.yaw += VIEW_FRUSTUM_OFFSET_DELTA;647 _viewFrustumOffset.yaw += VIEW_FRUSTUM_OFFSET_DELTA;
647 break;648 break;
648 649
649 case Qt::Key_BraceLeft:650 case Qt::Key_BraceLeft:
650 _viewFrustumOffset.pitch -= VIEW_FRUSTUM_OFFSET_DELTA;651 _viewFrustumOffset.pitch -= VIEW_FRUSTUM_OFFSET_DELTA;
651 break;652 break;
652 653
653 case Qt::Key_BraceRight:654 case Qt::Key_BraceRight:
654 _viewFrustumOffset.pitch += VIEW_FRUSTUM_OFFSET_DELTA;655 _viewFrustumOffset.pitch += VIEW_FRUSTUM_OFFSET_DELTA;
655 break;656 break;
656 657
657 case Qt::Key_ParenLeft:658 case Qt::Key_ParenLeft:
658 _viewFrustumOffset.roll -= VIEW_FRUSTUM_OFFSET_DELTA;659 _viewFrustumOffset.roll -= VIEW_FRUSTUM_OFFSET_DELTA;
659 break;660 break;
660 661
661 case Qt::Key_ParenRight:662 case Qt::Key_ParenRight:
662 _viewFrustumOffset.roll += VIEW_FRUSTUM_OFFSET_DELTA;663 _viewFrustumOffset.roll += VIEW_FRUSTUM_OFFSET_DELTA;
663 break;664 break;
664 665
665 case Qt::Key_Less:666 case Qt::Key_Less:
666 _viewFrustumOffset.distance -= VIEW_FRUSTUM_OFFSET_DELTA;667 _viewFrustumOffset.distance -= VIEW_FRUSTUM_OFFSET_DELTA;
667 break;668 break;
668 669
669 case Qt::Key_Greater:670 case Qt::Key_Greater:
670 _viewFrustumOffset.distance += VIEW_FRUSTUM_OFFSET_DELTA;671 _viewFrustumOffset.distance += VIEW_FRUSTUM_OFFSET_DELTA;
671 break;672 break;
672 673
673 case Qt::Key_Comma:674 case Qt::Key_Comma:
674 _viewFrustumOffset.up -= VIEW_FRUSTUM_OFFSET_UP_DELTA;675 _viewFrustumOffset.up -= VIEW_FRUSTUM_OFFSET_UP_DELTA;
675 break;676 break;
676 677
677 case Qt::Key_Period:678 case Qt::Key_Period:
678 _viewFrustumOffset.up += VIEW_FRUSTUM_OFFSET_UP_DELTA;679 _viewFrustumOffset.up += VIEW_FRUSTUM_OFFSET_UP_DELTA;
679 break;680 break;
680 681
681 default:682 default:
682 break;683 break;
683 }684 }
@@ -695,7 +696,7 @@ QAction* Menu::addActionToQMenuAndActionHash(QMenu* destinationMenu, · 11 unmodified lines
695 const char* member,696 const char* member,
696 QAction::MenuRole role) {697 QAction::MenuRole role) {
697 QAction* action;698 QAction* action;
698 699
699 if (receiver && member) {700 if (receiver && member) {
700 action = destinationMenu->addAction(actionName, receiver, member, shortcut);701 action = destinationMenu->addAction(actionName, receiver, member, shortcut);
701 } else {702 } else {
@@ -703,9 +704,9 @@ QAction* Menu::addActionToQMenuAndActionHash(QMenu* destinationMenu, · 1 unmodified line
703 action->setShortcut(shortcut);704 action->setShortcut(shortcut);
704 }705 }
705 action->setMenuRole(role);706 action->setMenuRole(role);
706 707
707 _actionHash.insert(actionName, action);708 _actionHash.insert(actionName, action);
708 709
709 return action;710 return action;
710}711}
711 712
@@ -718,7 +719,7 @@ QAction* Menu::addCheckableActionToQMenuAndActionHash(QMenu* destinationMenu, · 6 unmodified lines
718 QAction* action = addActionToQMenuAndActionHash(destinationMenu, actionName, shortcut, receiver, member);719 QAction* action = addActionToQMenuAndActionHash(destinationMenu, actionName, shortcut, receiver, member);
719 action->setCheckable(true);720 action->setCheckable(true);
720 action->setChecked(checked);721 action->setChecked(checked);
721 722
722 return action;723 return action;
723}724}
724 725
@@ -755,7 +756,7 @@ void Menu::aboutApp() { · 30 unmodified lines
755void sendFakeEnterEvent() {756void sendFakeEnterEvent() {
756 QPoint lastCursorPosition = QCursor::pos();757 QPoint lastCursorPosition = QCursor::pos();
757 QGLWidget* glWidget = Application::getInstance()->getGLWidget();758 QGLWidget* glWidget = Application::getInstance()->getGLWidget();
758 759
759 QPoint windowPosition = glWidget->mapFromGlobal(lastCursorPosition);760 QPoint windowPosition = glWidget->mapFromGlobal(lastCursorPosition);
760 QEnterEvent enterEvent = QEnterEvent(windowPosition, windowPosition, lastCursorPosition);761 QEnterEvent enterEvent = QEnterEvent(windowPosition, windowPosition, lastCursorPosition);
761 QCoreApplication::sendEvent(glWidget, &enterEvent);762 QCoreApplication::sendEvent(glWidget, &enterEvent);
@@ -772,62 +773,62 @@ void Menu::login() { · 10 unmodified lines
772 loginDialog.setTextValue(username);773 loginDialog.setTextValue(username);
773 loginDialog.setWindowFlags(Qt::Sheet);774 loginDialog.setWindowFlags(Qt::Sheet);
774 loginDialog.resize(loginDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, loginDialog.size().height());775 loginDialog.resize(loginDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, loginDialog.size().height());
775 776
776 int dialogReturn = loginDialog.exec();777 int dialogReturn = loginDialog.exec();
777 778
778 if (dialogReturn == QDialog::Accepted && !loginDialog.textValue().isEmpty() && loginDialog.textValue() != username) {779 if (dialogReturn == QDialog::Accepted && !loginDialog.textValue().isEmpty() && loginDialog.textValue() != username) {
779 // there has been a username change780 // there has been a username change
780 // ask for a profile reset with the new username781 // ask for a profile reset with the new username
781 Application::getInstance()->resetProfile(loginDialog.textValue());782 Application::getInstance()->resetProfile(loginDialog.textValue());
782 783
783 }784 }
784 785
785 sendFakeEnterEvent();786 sendFakeEnterEvent();
786}787}
787 788
788void Menu::editPreferences() {789void Menu::editPreferences() {
789 Application* applicationInstance = Application::getInstance();790 Application* applicationInstance = Application::getInstance();
790 791
791 QDialog dialog(applicationInstance->getWindow());792 QDialog dialog(applicationInstance->getWindow());
792 dialog.setWindowTitle("Interface Preferences");793 dialog.setWindowTitle("Interface Preferences");
793 QBoxLayout* layout = new QBoxLayout(QBoxLayout::TopToBottom);794 QBoxLayout* layout = new QBoxLayout(QBoxLayout::TopToBottom);
794 dialog.setLayout(layout);795 dialog.setLayout(layout);
795 796
796 QFormLayout* form = new QFormLayout();797 QFormLayout* form = new QFormLayout();
797 layout->addLayout(form, 1);798 layout->addLayout(form, 1);
798 799
799 QString faceURLString = applicationInstance->getProfile()->getFaceModelURL().toString();800 QString faceURLString = applicationInstance->getProfile()->getFaceModelURL().toString();
800 QLineEdit* faceURLEdit = new QLineEdit(faceURLString);801 QLineEdit* faceURLEdit = new QLineEdit(faceURLString);
801 faceURLEdit->setMinimumWidth(QLINE_MINIMUM_WIDTH);802 faceURLEdit->setMinimumWidth(QLINE_MINIMUM_WIDTH);
802 form->addRow("Face URL:", faceURLEdit);803 form->addRow("Face URL:", faceURLEdit);
803 804
804 QString skeletonURLString = applicationInstance->getProfile()->getSkeletonModelURL().toString();805 QString skeletonURLString = applicationInstance->getProfile()->getSkeletonModelURL().toString();
805 QLineEdit* skeletonURLEdit = new QLineEdit(skeletonURLString);806 QLineEdit* skeletonURLEdit = new QLineEdit(skeletonURLString);
806 skeletonURLEdit->setMinimumWidth(QLINE_MINIMUM_WIDTH);807 skeletonURLEdit->setMinimumWidth(QLINE_MINIMUM_WIDTH);
807 form->addRow("Skeleton URL:", skeletonURLEdit);808 form->addRow("Skeleton URL:", skeletonURLEdit);
808 809
809 QSlider* pupilDilation = new QSlider(Qt::Horizontal);810 QSlider* pupilDilation = new QSlider(Qt::Horizontal);
810 pupilDilation->setValue(applicationInstance->getAvatar()->getHead().getPupilDilation() * pupilDilation->maximum());811 pupilDilation->setValue(applicationInstance->getAvatar()->getHead().getPupilDilation() * pupilDilation->maximum());
811 form->addRow("Pupil Dilation:", pupilDilation);812 form->addRow("Pupil Dilation:", pupilDilation);
812 813
813 QSlider* faceshiftEyeDeflection = new QSlider(Qt::Horizontal);814 QSlider* faceshiftEyeDeflection = new QSlider(Qt::Horizontal);
814 faceshiftEyeDeflection->setValue(_faceshiftEyeDeflection * faceshiftEyeDeflection->maximum());815 faceshiftEyeDeflection->setValue(_faceshiftEyeDeflection * faceshiftEyeDeflection->maximum());
815 form->addRow("Faceshift Eye Deflection:", faceshiftEyeDeflection);816 form->addRow("Faceshift Eye Deflection:", faceshiftEyeDeflection);
816 817
817 QSpinBox* fieldOfView = new QSpinBox();818 QSpinBox* fieldOfView = new QSpinBox();
818 fieldOfView->setMaximum(180);819 fieldOfView->setMaximum(180);
819 fieldOfView->setMinimum(1);820 fieldOfView->setMinimum(1);
820 fieldOfView->setValue(_fieldOfView);821 fieldOfView->setValue(_fieldOfView);
821 form->addRow("Vertical Field of View (Degrees):", fieldOfView);822 form->addRow("Vertical Field of View (Degrees):", fieldOfView);
822 823
823 QDoubleSpinBox* leanScale = new QDoubleSpinBox();824 QDoubleSpinBox* leanScale = new QDoubleSpinBox();
824 leanScale->setValue(applicationInstance->getAvatar()->getLeanScale());825 leanScale->setValue(applicationInstance->getAvatar()->getLeanScale());
825 form->addRow("Lean Scale:", leanScale);826 form->addRow("Lean Scale:", leanScale);
826 827
827 QDoubleSpinBox* avatarScale = new QDoubleSpinBox();828 QDoubleSpinBox* avatarScale = new QDoubleSpinBox();
828 avatarScale->setValue(applicationInstance->getAvatar()->getScale());829 avatarScale->setValue(applicationInstance->getAvatar()->getScale());
829 form->addRow("Avatar Scale:", avatarScale);830 form->addRow("Avatar Scale:", avatarScale);
830 831
831 QSpinBox* audioJitterBufferSamples = new QSpinBox();832 QSpinBox* audioJitterBufferSamples = new QSpinBox();
832 audioJitterBufferSamples->setMaximum(10000);833 audioJitterBufferSamples->setMaximum(10000);
833 audioJitterBufferSamples->setMinimum(-10000);834 audioJitterBufferSamples->setMinimum(-10000);
@@ -853,93 +854,93 @@ void Menu::editPreferences() { · 19 unmodified lines
853 maxVoxelsPPS->setSingleStep(STEP_MAX_VOXELS_PPS);854 maxVoxelsPPS->setSingleStep(STEP_MAX_VOXELS_PPS);
854 maxVoxelsPPS->setValue(_maxVoxelPacketsPerSecond);855 maxVoxelsPPS->setValue(_maxVoxelPacketsPerSecond);
855 form->addRow("Maximum Voxels Packets Per Second:", maxVoxelsPPS);856 form->addRow("Maximum Voxels Packets Per Second:", maxVoxelsPPS);
856 857
857 QDialogButtonBox* buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);858 QDialogButtonBox* buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
858 dialog.connect(buttons, SIGNAL(accepted()), SLOT(accept()));859 dialog.connect(buttons, SIGNAL(accepted()), SLOT(accept()));
859 dialog.connect(buttons, SIGNAL(rejected()), SLOT(reject()));860 dialog.connect(buttons, SIGNAL(rejected()), SLOT(reject()));
860 layout->addWidget(buttons);861 layout->addWidget(buttons);
861 862
862 int ret = dialog.exec();863 int ret = dialog.exec();
863 if (ret == QDialog::Accepted) {864 if (ret == QDialog::Accepted) {
864 QUrl faceModelURL(faceURLEdit->text());865 QUrl faceModelURL(faceURLEdit->text());
865 866
866 if (faceModelURL.toString() != faceURLString) {867 if (faceModelURL.toString() != faceURLString) {
867 // change the faceModelURL in the profile, it will also update this user's BlendFace868 // change the faceModelURL in the profile, it will also update this user's BlendFace
868 applicationInstance->getProfile()->setFaceModelURL(faceModelURL);869 applicationInstance->getProfile()->setFaceModelURL(faceModelURL);
869 870
870 // send the new face mesh URL to the data-server (if we have a client UUID)871 // send the new face mesh URL to the data-server (if we have a client UUID)
871 DataServerClient::putValueForKey(DataServerKey::FaceMeshURL,872 DataServerClient::putValueForKey(DataServerKey::FaceMeshURL,
872 faceModelURL.toString().toLocal8Bit().constData());873 faceModelURL.toString().toLocal8Bit().constData());
873 }874 }
874 875
875 QUrl skeletonModelURL(skeletonURLEdit->text());876 QUrl skeletonModelURL(skeletonURLEdit->text());
876 877
877 if (skeletonModelURL.toString() != skeletonURLString) {878 if (skeletonModelURL.toString() != skeletonURLString) {
878 // change the skeletonModelURL in the profile, it will also update this user's Body879 // change the skeletonModelURL in the profile, it will also update this user's Body
879 applicationInstance->getProfile()->setSkeletonModelURL(skeletonModelURL);880 applicationInstance->getProfile()->setSkeletonModelURL(skeletonModelURL);
880 881
881 // send the new skeleton model URL to the data-server (if we have a client UUID)882 // send the new skeleton model URL to the data-server (if we have a client UUID)
882 DataServerClient::putValueForKey(DataServerKey::SkeletonURL,883 DataServerClient::putValueForKey(DataServerKey::SkeletonURL,
883 skeletonModelURL.toString().toLocal8Bit().constData());884 skeletonModelURL.toString().toLocal8Bit().constData());
884 }885 }
885 886
886 applicationInstance->getAvatar()->getHead().setPupilDilation(pupilDilation->value() / (float)pupilDilation->maximum());887 applicationInstance->getAvatar()->getHead().setPupilDilation(pupilDilation->value() / (float)pupilDilation->maximum());
887 888
888 _maxVoxels = maxVoxels->value();889 _maxVoxels = maxVoxels->value();
889 applicationInstance->getVoxels()->setMaxVoxels(_maxVoxels);890 applicationInstance->getVoxels()->setMaxVoxels(_maxVoxels);
890 891
891 _maxVoxelPacketsPerSecond = maxVoxelsPPS->value();892 _maxVoxelPacketsPerSecond = maxVoxelsPPS->value();
892 893
893 applicationInstance->getAvatar()->setLeanScale(leanScale->value());894 applicationInstance->getAvatar()->setLeanScale(leanScale->value());
894 applicationInstance->getAvatar()->setClampedTargetScale(avatarScale->value());895 applicationInstance->getAvatar()->setClampedTargetScale(avatarScale->value());
895 896
896 _audioJitterBufferSamples = audioJitterBufferSamples->value();897 _audioJitterBufferSamples = audioJitterBufferSamples->value();
897 898
898 if (_audioJitterBufferSamples != 0) {899 if (_audioJitterBufferSamples != 0) {
899 applicationInstance->getAudio()->setJitterBufferSamples(_audioJitterBufferSamples);900 applicationInstance->getAudio()->setJitterBufferSamples(_audioJitterBufferSamples);
900 }901 }
901 902
902 _fieldOfView = fieldOfView->value();903 _fieldOfView = fieldOfView->value();
903 applicationInstance->resizeGL(applicationInstance->getGLWidget()->width(), applicationInstance->getGLWidget()->height());904 applicationInstance->resizeGL(applicationInstance->getGLWidget()->width(), applicationInstance->getGLWidget()->height());
904 905
905 _faceshiftEyeDeflection = faceshiftEyeDeflection->value() / (float)faceshiftEyeDeflection->maximum();906 _faceshiftEyeDeflection = faceshiftEyeDeflection->value() / (float)faceshiftEyeDeflection->maximum();
906 }907 }
907 908
908 sendFakeEnterEvent();909 sendFakeEnterEvent();
909}910}
910 911
911void Menu::goToDomain() {912void Menu::goToDomain() {
912 913
913 QString currentDomainHostname = NodeList::getInstance()->getDomainHostname();914 QString currentDomainHostname = NodeList::getInstance()->getDomainHostname();
914 915
915 if (NodeList::getInstance()->getDomainPort() != DEFAULT_DOMAIN_SERVER_PORT) {916 if (NodeList::getInstance()->getDomainPort() != DEFAULT_DOMAIN_SERVER_PORT) {
916 // add the port to the currentDomainHostname string if it is custom917 // add the port to the currentDomainHostname string if it is custom
917 currentDomainHostname.append(QString(":%1").arg(NodeList::getInstance()->getDomainPort()));918 currentDomainHostname.append(QString(":%1").arg(NodeList::getInstance()->getDomainPort()));
918 }919 }
919 920
920 QInputDialog domainDialog(Application::getInstance()->getWindow());921 QInputDialog domainDialog(Application::getInstance()->getWindow());
921 domainDialog.setWindowTitle("Go to Domain");922 domainDialog.setWindowTitle("Go to Domain");
922 domainDialog.setLabelText("Domain server:");923 domainDialog.setLabelText("Domain server:");
923 domainDialog.setTextValue(currentDomainHostname);924 domainDialog.setTextValue(currentDomainHostname);
924 domainDialog.setWindowFlags(Qt::Sheet);925 domainDialog.setWindowFlags(Qt::Sheet);
925 domainDialog.resize(domainDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, domainDialog.size().height());926 domainDialog.resize(domainDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, domainDialog.size().height());
926 927
927 int dialogReturn = domainDialog.exec();928 int dialogReturn = domainDialog.exec();
928 if (dialogReturn == QDialog::Accepted) {929 if (dialogReturn == QDialog::Accepted) {
929 QString newHostname(DEFAULT_DOMAIN_HOSTNAME);930 QString newHostname(DEFAULT_DOMAIN_HOSTNAME);
930 931
931 if (domainDialog.textValue().size() > 0) {932 if (domainDialog.textValue().size() > 0) {
932 // the user input a new hostname, use that933 // the user input a new hostname, use that
933 newHostname = domainDialog.textValue();934 newHostname = domainDialog.textValue();
934 }935 }
935 936
936 // send a node kill request, indicating to other clients that they should play the "disappeared" effect937 // send a node kill request, indicating to other clients that they should play the "disappeared" effect
937 NodeList::getInstance()->sendKillNode(&NODE_TYPE_AVATAR_MIXER, 1);938 NodeList::getInstance()->sendKillNode(&NODE_TYPE_AVATAR_MIXER, 1);
938 939
939 // give our nodeList the new domain-server hostname940 // give our nodeList the new domain-server hostname
940 NodeList::getInstance()->setDomainHostname(domainDialog.textValue());941 NodeList::getInstance()->setDomainHostname(domainDialog.textValue());
941 }942 }
942 943
943 sendFakeEnterEvent();944 sendFakeEnterEvent();
944}945}
945 946
@@ -948,8 +949,8 @@ void Menu::goToLocation() { · 2 unmodified lines
948 glm::vec3 avatarPos = myAvatar->getPosition();949 glm::vec3 avatarPos = myAvatar->getPosition();
949 QString currentLocation = QString("%1, %2, %3").arg(QString::number(avatarPos.x),950 QString currentLocation = QString("%1, %2, %3").arg(QString::number(avatarPos.x),
950 QString::number(avatarPos.y), QString::number(avatarPos.z));951 QString::number(avatarPos.y), QString::number(avatarPos.z));
951 952
952 953
953 QInputDialog coordinateDialog(Application::getInstance()->getWindow());954 QInputDialog coordinateDialog(Application::getInstance()->getWindow());
954 coordinateDialog.setWindowTitle("Go to Location");955 coordinateDialog.setWindowTitle("Go to Location");
955 coordinateDialog.setLabelText("Coordinate as x,y,z:");956 coordinateDialog.setLabelText("Coordinate as x,y,z:");
@@ -960,10 +961,10 @@ void Menu::goToLocation() { · 4 unmodified lines
960 int dialogReturn = coordinateDialog.exec();961 int dialogReturn = coordinateDialog.exec();
961 if (dialogReturn == QDialog::Accepted && !coordinateDialog.textValue().isEmpty()) {962 if (dialogReturn == QDialog::Accepted && !coordinateDialog.textValue().isEmpty()) {
962 QByteArray newCoordinates;963 QByteArray newCoordinates;
963 964
964 QString delimiterPattern(",");965 QString delimiterPattern(",");
965 QStringList coordinateItems = coordinateDialog.textValue().split(delimiterPattern);966 QStringList coordinateItems = coordinateDialog.textValue().split(delimiterPattern);
966 967
967 const int NUMBER_OF_COORDINATE_ITEMS = 3;968 const int NUMBER_OF_COORDINATE_ITEMS = 3;
968 const int X_ITEM = 0;969 const int X_ITEM = 0;
969 const int Y_ITEM = 1;970 const int Y_ITEM = 1;
@@ -973,17 +974,17 @@ void Menu::goToLocation() { · 3 unmodified lines
973 double y = coordinateItems[Y_ITEM].toDouble();974 double y = coordinateItems[Y_ITEM].toDouble();
974 double z = coordinateItems[Z_ITEM].toDouble();975 double z = coordinateItems[Z_ITEM].toDouble();
975 glm::vec3 newAvatarPos(x, y, z);976 glm::vec3 newAvatarPos(x, y, z);
976 977
977 if (newAvatarPos != avatarPos) {978 if (newAvatarPos != avatarPos) {
978 // send a node kill request, indicating to other clients that they should play the "disappeared" effect979 // send a node kill request, indicating to other clients that they should play the "disappeared" effect
979 NodeList::getInstance()->sendKillNode(&NODE_TYPE_AVATAR_MIXER, 1);980 NodeList::getInstance()->sendKillNode(&NODE_TYPE_AVATAR_MIXER, 1);
980 981
981 qDebug("Going To Location: %f, %f, %f...", x, y, z);982 qDebug("Going To Location: %f, %f, %f...", x, y, z);
982 myAvatar->setPosition(newAvatarPos); 983 myAvatar->setPosition(newAvatarPos);
983 }984 }
984 }985 }
985 }986 }
986 987
987 sendFakeEnterEvent();988 sendFakeEnterEvent();
988}989}
989 990
@@ -995,7 +996,7 @@ void Menu::goToUser() { · 5 unmodified lines
995 userDialog.setTextValue(username);996 userDialog.setTextValue(username);
996 userDialog.setWindowFlags(Qt::Sheet);997 userDialog.setWindowFlags(Qt::Sheet);
997 userDialog.resize(userDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, userDialog.size().height());998 userDialog.resize(userDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, userDialog.size().height());
998 999
999 int dialogReturn = userDialog.exec();1000 int dialogReturn = userDialog.exec();
1000 if (dialogReturn == QDialog::Accepted && !userDialog.textValue().isEmpty()) {1001 if (dialogReturn == QDialog::Accepted && !userDialog.textValue().isEmpty()) {
1001 // there's a username entered by the user, make a request to the data-server1002 // there's a username entered by the user, make a request to the data-server
@@ -1003,7 +1004,7 @@ void Menu::goToUser() { · 1 unmodified line
1003 QStringList() << DataServerKey::Domain << DataServerKey::Position << DataServerKey::Orientation,1004 QStringList() << DataServerKey::Domain << DataServerKey::Position << DataServerKey::Orientation,
1004 userDialog.textValue());1005 userDialog.textValue());
1005 }1006 }
1006 1007
1007 sendFakeEnterEvent();1008 sendFakeEnterEvent();
1008}1009}
1009 1010
@@ -1014,15 +1015,15 @@ void Menu::pasteToVoxel() { · 4 unmodified lines
1014 QString octalCode = "";1015 QString octalCode = "";
1015 pasteToOctalCodeDialog.setTextValue(octalCode);1016 pasteToOctalCodeDialog.setTextValue(octalCode);
1016 pasteToOctalCodeDialog.setWindowFlags(Qt::Sheet);1017 pasteToOctalCodeDialog.setWindowFlags(Qt::Sheet);
1017 pasteToOctalCodeDialog.resize(pasteToOctalCodeDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW, 1018 pasteToOctalCodeDialog.resize(pasteToOctalCodeDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW,
1018 pasteToOctalCodeDialog.size().height());1019 pasteToOctalCodeDialog.size().height());
1019 1020
1020 int dialogReturn = pasteToOctalCodeDialog.exec();1021 int dialogReturn = pasteToOctalCodeDialog.exec();
1021 if (dialogReturn == QDialog::Accepted && !pasteToOctalCodeDialog.textValue().isEmpty()) {1022 if (dialogReturn == QDialog::Accepted && !pasteToOctalCodeDialog.textValue().isEmpty()) {
1022 // we got an octalCode to paste to...1023 // we got an octalCode to paste to...
1023 QString locationToPaste = pasteToOctalCodeDialog.textValue();1024 QString locationToPaste = pasteToOctalCodeDialog.textValue();
1024 unsigned char* octalCodeDestination = hexStringToOctalCode(locationToPaste);1025 unsigned char* octalCodeDestination = hexStringToOctalCode(locationToPaste);
1025 1026
1026 // check to see if it was a legit octcode...1027 // check to see if it was a legit octcode...
1027 if (locationToPaste == octalCodeToHexString(octalCodeDestination)) {1028 if (locationToPaste == octalCodeToHexString(octalCodeDestination)) {
1028 Application::getInstance()->pasteVoxelsToOctalCode(octalCodeDestination);1029 Application::getInstance()->pasteVoxelsToOctalCode(octalCodeDestination);
@@ -1030,7 +1031,7 @@ void Menu::pasteToVoxel() { · 1 unmodified line
1030 qDebug() << "Problem with octcode...";1031 qDebug() << "Problem with octcode...";
1031 }1032 }
1032 }1033 }
1033 1034
1034 sendFakeEnterEvent();1035 sendFakeEnterEvent();
1035}1036}
1036 1037
@@ -1039,7 +1040,7 @@ void Menu::bandwidthDetails() { · 2 unmodified lines
1039 _bandwidthDialog = new BandwidthDialog(Application::getInstance()->getGLWidget(),1040 _bandwidthDialog = new BandwidthDialog(Application::getInstance()->getGLWidget(),
1040 Application::getInstance()->getBandwidthMeter());1041 Application::getInstance()->getBandwidthMeter());
1041 connect(_bandwidthDialog, SIGNAL(closed()), SLOT(bandwidthDetailsClosed()));1042 connect(_bandwidthDialog, SIGNAL(closed()), SLOT(bandwidthDetailsClosed()));
1042 1043
1043 _bandwidthDialog->show();1044 _bandwidthDialog->show();
1044 }1045 }
1045 _bandwidthDialog->raise();1046 _bandwidthDialog->raise();
@@ -1112,7 +1113,7 @@ void Menu::updateVoxelModeActions() { · 66 unmodified lines
1112void Menu::chooseVoxelPaintColor() {1113void Menu::chooseVoxelPaintColor() {
1113 Application* appInstance = Application::getInstance();1114 Application* appInstance = Application::getInstance();
1114 QAction* paintColor = _actionHash.value(MenuOption::VoxelPaintColor);1115 QAction* paintColor = _actionHash.value(MenuOption::VoxelPaintColor);
1115 1116
1116 QColor selected = QColorDialog::getColor(paintColor->data().value<QColor>(),1117 QColor selected = QColorDialog::getColor(paintColor->data().value<QColor>(),
1117 appInstance->getGLWidget(),1118 appInstance->getGLWidget(),
1118 "Voxel Paint Color");1119 "Voxel Paint Color");
@@ -1120,7 +1121,7 @@ void Menu::chooseVoxelPaintColor() { · 1 unmodified line
1120 paintColor->setData(selected);1121 paintColor->setData(selected);
1121 paintColor->setIcon(Swatch::createIcon(selected));1122 paintColor->setIcon(Swatch::createIcon(selected));
1122 }1123 }
1123 1124
1124 // restore the main window's active state1125 // restore the main window's active state
1125 appInstance->getWindow()->activateWindow();1126 appInstance->getWindow()->activateWindow();
1126}1127}