mirror of
https://github.com/fatiando/moulder.git
synced 2025-12-21 02:23:46 +08:00
Initial Commit
This commit is contained in:
110
moulder.py
Normal file
110
moulder.py
Normal file
@@ -0,0 +1,110 @@
|
||||
from __future__ import print_function
|
||||
from future.builtins import super
|
||||
|
||||
import os
|
||||
import sys
|
||||
import numpy as np
|
||||
import matplotlib
|
||||
from matplotlib.figure import Figure
|
||||
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg
|
||||
from PyQt5.QtGui import QIcon
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtWidgets import QSizePolicy, QMainWindow, QApplication, QAction
|
||||
from PyQt5.QtWidgets import QMenu, QWidget, QVBoxLayout, QMessageBox
|
||||
from PyQt5.QtWidgets import QSlider, QHBoxLayout, QLabel, QDialog
|
||||
from PyQt5.QtWidgets import QDialogButtonBox
|
||||
|
||||
from figure_canvas import GravityModelCanvas
|
||||
from new_dialog import NewModelDialog
|
||||
|
||||
|
||||
class Moulder(QMainWindow):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.setWindowTitle("Moulder")
|
||||
self.setWindowIcon(QIcon.fromTheme('python-logo'))
|
||||
self.setGeometry(200, 200, 1024, 800)
|
||||
self.init_ui()
|
||||
self.set_callbacks()
|
||||
|
||||
self.canvas = GravityModelCanvas(self,
|
||||
width=5, height=4, dpi=100)
|
||||
self.canvas.setFocus()
|
||||
self.setCentralWidget(self.canvas)
|
||||
|
||||
def closeEvent(self, event):
|
||||
event.ignore()
|
||||
self._quit_callback()
|
||||
|
||||
def init_ui(self):
|
||||
self._define_actions()
|
||||
self._configure_menubar()
|
||||
self._configure_toolbar()
|
||||
|
||||
def set_callbacks(self):
|
||||
self.new_action.triggered.connect(self._new_model_callback)
|
||||
self.about_action.triggered.connect(self._about_callback)
|
||||
# self.file_menu.triggered.connect(self._file_menu_callback)
|
||||
self.quit_action.triggered.connect(self._quit_callback)
|
||||
|
||||
def _define_actions(self):
|
||||
self.new_action = QAction(QIcon.fromTheme('document-new'),
|
||||
'&New model', self)
|
||||
self.new_action.setShortcut('Ctrl+N')
|
||||
self.open_action = QAction(QIcon.fromTheme('document-open'),
|
||||
'&Open model', self)
|
||||
self.open_action.setShortcut('Ctrl+O')
|
||||
self.save_action = QAction(QIcon.fromTheme('document-save'),
|
||||
'&Save model', self)
|
||||
self.save_action.setShortcut('Ctrl+S')
|
||||
self.save_as_action = QAction(QIcon.fromTheme('document-save-as'),
|
||||
'&Save model as...', self)
|
||||
self.save_as_action.setShortcut('Ctrl+Shift+S')
|
||||
self.quit_action = QAction(QIcon.fromTheme('application-exit'),
|
||||
'&Quit', self)
|
||||
self.quit_action.setShortcut('Ctrl+Q')
|
||||
self.about_action = QAction("&About", self)
|
||||
|
||||
def _configure_menubar(self):
|
||||
self.menubar = self.menuBar()
|
||||
self.file_menu = self.menubar.addMenu('File')
|
||||
self.file_menu.addAction(self.open_action)
|
||||
self.file_menu.addAction(self.save_action)
|
||||
self.file_menu.addAction(self.quit_action)
|
||||
self.about_menu = self.menubar.addMenu('About')
|
||||
self.about_menu.addAction(self.about_action)
|
||||
|
||||
def _configure_toolbar(self):
|
||||
self.toolbar = self.addToolBar("adasd")
|
||||
self.toolbar.addAction(self.new_action)
|
||||
self.toolbar.addAction(self.open_action)
|
||||
self.toolbar.addAction(self.save_action)
|
||||
self.toolbar.addAction(self.save_as_action)
|
||||
|
||||
def _about_callback(self):
|
||||
QMessageBox.about(self, "About Moulder",
|
||||
"About Moulder\nVersion 0.1")
|
||||
|
||||
def _new_model_callback(self):
|
||||
new_model_dialog = NewModelDialog(parent=self)
|
||||
new_model_dialog.exec_()
|
||||
if new_model_dialog.is_completed():
|
||||
self.canvas.x = new_model_dialog.x
|
||||
self.canvas.z = new_model_dialog.z
|
||||
self.canvas.update_plot()
|
||||
|
||||
def _quit_callback(self):
|
||||
answer = QMessageBox.question(self, "Quit",
|
||||
"Are you sure you want to quit?",
|
||||
QMessageBox.Yes, QMessageBox.No)
|
||||
if answer == QMessageBox.Yes:
|
||||
sys.exit()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
app.setApplicationName("Moulder")
|
||||
moulder = Moulder()
|
||||
moulder.show()
|
||||
sys.exit(app.exec_())
|
||||
Reference in New Issue
Block a user