99
1010__author__ = "robertbasic"
1111
12- from PyQt5 .QtCore import Qt
12+ from PyQt5 .QtCore import Qt , pyqtSignal
1313from PyQt5 .QtWidgets import (QMainWindow , QToolBar , QMenuBar , QDockWidget ,
1414 QAction )
1515from PyQt5 .QtGui import QFont , QKeySequence
1616
1717from pugdebug .gui .file_browser import PugdebugFileBrowser
1818from pugdebug .gui .settings import PugdebugSettingsWindow
19+ from pugdebug .gui .projects import (PugdebugNewProjectWindow ,
20+ PugdebugProjectsBrowser )
1921from pugdebug .gui .documents import PugdebugDocumentViewer
2022from pugdebug .gui .variables import PugdebugVariableViewer
2123from pugdebug .gui .stacktraces import PugdebugStacktraceViewer
2729
2830class PugdebugMainWindow (QMainWindow ):
2931
32+ new_project_created_signal = pyqtSignal (str )
33+
3034 def __init__ (self ):
3135 super (PugdebugMainWindow , self ).__init__ ()
3236 self .setObjectName ("pugdebug" )
@@ -36,7 +40,9 @@ def __init__(self):
3640 self .restoreGeometry (get_setting ("window/geometry" ))
3741
3842 self .file_browser = PugdebugFileBrowser ()
43+ self .projects_browser = PugdebugProjectsBrowser ()
3944 self .settings_window = PugdebugSettingsWindow (self )
45+ self .new_project_window = PugdebugNewProjectWindow (self )
4046 self .document_viewer = PugdebugDocumentViewer ()
4147 self .variable_viewer = PugdebugVariableViewer ()
4248 self .breakpoint_viewer = PugdebugBreakpointViewer ()
@@ -60,6 +66,8 @@ def setup_gui_elements(self):
6066 self .setup_fonts ()
6167 self .setup_docks ()
6268
69+ self .setup_file_actions ()
70+
6371 self .setup_actions ()
6472 self .toggle_actions (False )
6573
@@ -85,6 +93,12 @@ def setup_docks(self):
8593 Qt .LeftDockWidgetArea
8694 )
8795
96+ self .__add_dock_widget (
97+ self .projects_browser ,
98+ "Projects Browser" ,
99+ Qt .LeftDockWidgetArea
100+ )
101+
88102 self .__add_dock_widget (
89103 self .variable_viewer ,
90104 "Variables" ,
@@ -109,6 +123,29 @@ def setup_docks(self):
109123 Qt .BottomDockWidgetArea
110124 )
111125
126+ def setup_file_actions (self ):
127+ self .new_project_action = QAction ("&New project" , self )
128+ self .new_project_action .setToolTip ("Create a new project (Ctrl+N)" )
129+ self .new_project_action .setStatusTip (
130+ "Create a new project. Shortcut: Ctrl+N"
131+ )
132+ self .new_project_action .setShortcut (QKeySequence ("Ctrl+N" ))
133+ self .new_project_action .triggered .connect (self .new_project_window .exec )
134+
135+ self .show_settings_action = QAction ("&Settings" , self )
136+ self .show_settings_action .setToolTip ("Show settings (Ctrl+S)" )
137+ self .show_settings_action .setStatusTip (
138+ "Show the settings window. Shortcut: Ctrl+S"
139+ )
140+ self .show_settings_action .setShortcut (QKeySequence ("Ctrl+S" ))
141+ self .show_settings_action .triggered .connect (self .settings_window .exec )
142+
143+ self .quit_action = QAction ("&Quit" , self )
144+ self .quit_action .setToolTip ("Exit the application (Alt+F4)" )
145+ self .quit_action .setStatusTip ("Exit the application. Shortcut: Alt+F4" )
146+ self .quit_action .setShortcut (QKeySequence ("Alt+F4" ))
147+ self .quit_action .triggered .connect (self .close )
148+
112149 def setup_actions (self ):
113150 self .start_debug_action = QAction ("Start" , self )
114151 self .start_debug_action .setToolTip ("Start server (F1)" )
@@ -167,17 +204,6 @@ def setup_actions(self):
167204 )
168205 self .step_out_action .setShortcut (QKeySequence ("F8" ))
169206
170- self .show_settings_action = QAction ("&Settings" , self )
171- self .show_settings_action .setToolTip ("Show settings" )
172- self .show_settings_action .setStatusTip ("Show the settings window." )
173- self .show_settings_action .triggered .connect (self .settings_window .exec )
174-
175- self .quit_action = QAction ("&Quit" , self )
176- self .quit_action .setToolTip ("Exit the application (Alt+F4)" )
177- self .quit_action .setStatusTip ("Exit the application. Shortcut: Alt+F4" )
178- self .quit_action .setShortcut (QKeySequence ("Alt+F4" ))
179- self .quit_action .triggered .connect (self .close )
180-
181207 def setup_toolbar (self ):
182208 toolbar = QToolBar ("Main Toolbar" )
183209 toolbar .setObjectName ("main-toolbar" )
@@ -197,6 +223,7 @@ def setup_menubar(self):
197223 menu_bar = QMenuBar ()
198224
199225 file_menu = menu_bar .addMenu ("&File" )
226+ file_menu .addAction (self .new_project_action )
200227 file_menu .addAction (self .show_settings_action )
201228 file_menu .addSeparator ()
202229 file_menu .addAction (self .quit_action )
@@ -231,6 +258,9 @@ def toggle_actions(self, enabled):
231258 def get_file_browser (self ):
232259 return self .file_browser
233260
261+ def get_projects_browser (self ):
262+ return self .projects_browser
263+
234264 def get_settings (self ):
235265 return self .settings_window
236266
0 commit comments