Skip to content
This repository was archived by the owner on Aug 28, 2020. It is now read-only.

Commit 80d93cd

Browse files
committed
Merge pull request #150 from robertbasic/fix/issue148
Fix/issue148. Fixes #148
2 parents f3a83ee + 466ed35 commit 80d93cd

File tree

5 files changed

+42
-3
lines changed

5 files changed

+42
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
- Fix for GTK critical errors on Ubuntu
1212
- Do not jump to top of the file every time a debugging session starts
1313
- Updating settings now updates current project's settings as well
14+
- Deleting current project doesn't break pugdebug any more
1415

1516
### Removed
1617

pugdebug/gui/main_window.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ def __init__(self):
5959
if has_setting("current_project"):
6060
self.set_window_title(get_setting("current_project"))
6161

62+
self.projects_browser.project_deleted_signal.connect(
63+
self.handle_project_deleted
64+
)
65+
6266
def closeEvent(self, event):
6367
set_setting("window/geometry", self.saveGeometry())
6468
set_setting("window/state", self.saveState())
@@ -298,8 +302,15 @@ def get_breakpoint_viewer(self):
298302
def get_expression_viewer(self):
299303
return self.expression_viewer
300304

305+
def handle_project_deleted(self, is_project_current):
306+
if is_project_current:
307+
self.set_window_title(None)
308+
301309
def set_window_title(self, project_name):
302-
title = "pugdebug / %s " % project_name
310+
if project_name is not None:
311+
title = "pugdebug / %s " % project_name
312+
else:
313+
title = "pugdebug"
303314
self.setWindowTitle(title)
304315

305316
def set_debugging_status(self, status):

pugdebug/gui/projects.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
__author__ = "robertbasic"
1111

12-
from PyQt5.QtCore import Qt
12+
from PyQt5.QtCore import Qt, pyqtSignal
1313
from PyQt5.QtWidgets import (QDialog, QPushButton, QVBoxLayout, QHBoxLayout,
1414
QFormLayout, QLineEdit, QTreeView, QAction, QMenu,
1515
QMessageBox)
@@ -90,6 +90,8 @@ def load_settings(self):
9090

9191
class PugdebugProjectsBrowser(QTreeView):
9292

93+
project_deleted_signal = pyqtSignal(bool)
94+
9395
def __init__(self):
9496
super(PugdebugProjectsBrowser, self).__init__()
9597

@@ -141,6 +143,10 @@ def handle_delete_action(self):
141143
answer = messageBox.exec()
142144

143145
if answer == QMessageBox.Yes:
146+
is_project_current = project.is_project_current()
147+
144148
project.delete()
145149

146150
self.load_projects()
151+
152+
self.project_deleted_signal.emit(is_project_current)

pugdebug/models/projects.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
from PyQt5.QtCore import QCoreApplication, QSettings
1515
from PyQt5.QtGui import QStandardItemModel, QStandardItem
1616

17-
from pugdebug.models.settings import get_projects, has_setting, delete_project
17+
from pugdebug.models.settings import (get_projects, delete_project,
18+
get_setting, has_setting,
19+
remove_setting)
1820

1921

2022
class PugdebugProject(QSettings):
@@ -38,6 +40,15 @@ def __init__(self, project_name):
3840
def get_project_name(self):
3941
return self.project_name
4042

43+
def is_project_current(self):
44+
if has_setting('current_project'):
45+
current_project = get_setting('current_project')
46+
47+
if current_project == self.get_project_name():
48+
return True
49+
50+
return False
51+
4152
def get_settings(self):
4253
project_settings = {}
4354

@@ -52,6 +63,9 @@ def set_settings(self, new_settings):
5263
self.setValue(key, value)
5364

5465
def delete(self):
66+
if self.is_project_current():
67+
remove_setting('current_project')
68+
5569
delete_project(self.get_project_name())
5670

5771
filename = self.fileName()

pugdebug/models/settings.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ def has(self, key):
6363
def set(self, key, value):
6464
return self.application_settings.setValue(key, value)
6565

66+
def remove(self, key):
67+
return self.application_settings.remove(key)
68+
6669
def add_project(self, project):
6770
index = self.__get_next_index(project)
6871

@@ -161,6 +164,10 @@ def set_setting(key, value):
161164
settings.set(key, value)
162165

163166

167+
def remove_setting(key):
168+
settings.remove(key)
169+
170+
164171
def save_settings(new_settings):
165172
changed_settings = {}
166173

0 commit comments

Comments
 (0)