| 210 | } |
| 211 | |
| 212 | void Plot3DCanvas::contextMenuEvent(QContextMenuEvent * e) |
| 213 | { |
| 214 | //Abort of there are no layers |
| 215 | if (layers_.empty()) |
| 216 | { |
| 217 | return; |
| 218 | } |
| 219 | QMenu * context_menu = new QMenu(this); |
| 220 | QAction * result = nullptr; |
| 221 | |
| 222 | //Display name and warn if current layer invisible |
| 223 | String layer_name = String("Layer: ") + getCurrentLayer().getName(); |
| 224 | if (!getCurrentLayer().visible) |
| 225 | { |
| 226 | layer_name += " (invisible)"; |
| 227 | } |
| 228 | context_menu->addAction(layer_name.toQString())->setEnabled(false); |
| 229 | context_menu->addSeparator(); |
| 230 | context_menu->addAction("Layer meta data"); |
| 231 | |
| 232 | QMenu * save_menu = new QMenu("Save"); |
| 233 | context_menu->addMenu(save_menu); |
| 234 | save_menu->addAction("Layer"); |
| 235 | save_menu->addAction("Visible layer data"); |
| 236 | |
| 237 | QMenu * settings_menu = new QMenu("Settings"); |
| 238 | context_menu->addMenu(settings_menu); |
| 239 | settings_menu->addAction("Show/hide grid lines"); |
| 240 | settings_menu->addAction("Show/hide axis legends"); |
| 241 | settings_menu->addSeparator(); |
| 242 | settings_menu->addAction("Preferences"); |
| 243 | |
| 244 | context_menu->addAction("Switch to 2D view"); |
| 245 | |
| 246 | //add external context menu |
| 247 | if (context_add_) |
| 248 | { |
| 249 | context_menu->addSeparator(); |
| 250 | context_menu->addMenu(context_add_); |
| 251 | } |
| 252 | |
| 253 | //evaluate menu |
| 254 | if ((result = context_menu->exec(mapToGlobal(e->pos())))) |
| 255 | { |
| 256 | if (result->text() == "Preferences") |
| 257 | { |
| 258 | showCurrentLayerPreferences(); |
| 259 | } |
| 260 | else if (result->text() == "Show/hide grid lines") |
| 261 | { |
| 262 | showGridLines(!gridLinesShown()); |
| 263 | } |
| 264 | else if (result->text() == "Show/hide axis legends") |
| 265 | { |
| 266 | emit changeLegendVisibility(); |
| 267 | } |
| 268 | else if (result->text() == "Layer" || result->text() == "Visible layer data") |
| 269 | { |