diff --git a/bulk_reminders/gui.py b/bulk_reminders/gui.py
index 2e4e10d..c75318a 100644
--- a/bulk_reminders/gui.py
+++ b/bulk_reminders/gui.py
@@ -15,6 +15,7 @@ logging.basicConfig(format='[%(asctime)s] [%(levelname)s] [%(threadName)s] %(mes
logger = logging.getLogger(__file__)
logger.setLevel(logging.DEBUG)
+
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, *args, **kwargs):
# Initial UI setup
@@ -77,22 +78,27 @@ class MainWindow(QMainWindow, Ui_MainWindow):
dial = LoadDialog()
dial.plainTextEdit.setPlainText(self.cachedLoadText)
result = dial.exec()
+
if result == QMessageBox.Accepted:
self.cachedLoadText = dial.plainTextEdit.toPlainText()
self.readyEvents = dial.parsed
self.populate()
- elif result == QMessageBox.Cancel:
- pass
def undo(self) -> None:
- # Get the latest undo stage and delete all events in that stage
+ """Get the latest undo stage and delete all events in that stage"""
latest = self.history.pop()
- for entry in latest.events:
+ logging.info(f'Deleting {len(latest.events)} Events from Calendar {latest.commonCalendar}')
+
+ self.progressBar.show()
+ self.progressBar.setMaximum(len(latest.events))
+ for i, entry in enumerate(latest.events):
+ logging.debug(f'Deleting Event {entry.eventID}')
self.calendar.service.events().delete(calendarId=entry.calendarID, eventId=entry.eventID).execute()
+ self.progressBar.setValue(i + 1)
+ self.progressBar.hide()
# Disable the undo button until undo stages are available
self.undoButton.setDisabled(len(self.history) == 0)
-
self.populate() # Refresh
def getForeign(self) -> Iterator[IDPair]:
@@ -105,10 +111,18 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def submit(self) -> None:
newStage = Stage(index=self.history.nextIndex(), commonCalendar=self.currentCalendarID)
- while self.readyEvents:
- event: Event = self.readyEvents.pop(0)
+ logger.info(f'Submitting {len(self.readyEvents)} events to API')
+
+ self.progressBar.show()
+ self.progressBar.setMaximum(len(self.readyEvents))
+ for i, event in enumerate(self.readyEvents):
+ logger.debug(f'Submitting "{event.summary}" scheduled to start on {event.start.isoformat()}....')
result = self.calendar.service.events().insert(calendarId=self.currentCalendarID, body=event.body).execute()
newStage.events.append(IDPair(self.currentCalendarID, result.get('id')))
+ self.progressBar.setValue(i + 1)
+
+ self.readyEvents.clear()
+ self.progressBar.hide()
self.history.addStage(newStage)
self.populate()
@@ -129,6 +143,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
for row, event in enumerate(events):
event.fill_row(row, self.eventsView)
+ self.submitButton.setDisabled(len(self.readyEvents) < 0)
+
@QtCore.pyqtSlot(int)
def comboBoxChanged(self, row) -> None:
"""When the Calendar Selection combobox"""
diff --git a/bulk_reminders/gui.ui b/bulk_reminders/gui.ui
index 2786cbd..d46ed27 100644
--- a/bulk_reminders/gui.ui
+++ b/bulk_reminders/gui.ui
@@ -6,7 +6,7 @@
0
0
- 672
+ 844
553
@@ -82,17 +82,17 @@
-
-
-
- Qt::Horizontal
+
+
+ 0
-
-
- 30
- 20
-
+
+ 0
-
+
+ false
+
+
-
@@ -112,7 +112,7 @@
0
0
- 672
+ 844
21
diff --git a/bulk_reminders/gui_base.py b/bulk_reminders/gui_base.py
index 6ba4199..d023b64 100644
--- a/bulk_reminders/gui_base.py
+++ b/bulk_reminders/gui_base.py
@@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
- MainWindow.resize(672, 553)
+ MainWindow.resize(844, 553)
self.centralwidget = QtWidgets.QWidget(MainWindow)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(1)
@@ -60,8 +60,12 @@ class Ui_MainWindow(object):
self.eventCountLabel.setSizePolicy(sizePolicy)
self.eventCountLabel.setObjectName("eventCountLabel")
self.horizontalLayout.addWidget(self.eventCountLabel)
- spacerItem = QtWidgets.QSpacerItem(30, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.horizontalLayout.addItem(spacerItem)
+ self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
+ self.progressBar.setMaximum(0)
+ self.progressBar.setProperty("value", 0)
+ self.progressBar.setTextVisible(False)
+ self.progressBar.setObjectName("progressBar")
+ self.horizontalLayout.addWidget(self.progressBar)
self.undoButton = QtWidgets.QPushButton(self.centralwidget)
self.undoButton.setObjectName("undoButton")
self.horizontalLayout.addWidget(self.undoButton)
@@ -69,7 +73,7 @@ class Ui_MainWindow(object):
self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 672, 21))
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 844, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
diff --git a/bulk_reminders/load.py b/bulk_reminders/load.py
index ba3a920..6f19dd2 100644
--- a/bulk_reminders/load.py
+++ b/bulk_reminders/load.py
@@ -14,7 +14,7 @@ logger = logging.getLogger(__file__)
logger.setLevel(logging.DEBUG)
REGEX = re.compile(
- r'\s*([\w\d\s,.;\'!\[\]()]{1,})\s+\|\s+(\d{4}-\d{2}-\d{2})\s+(\d{1,2}:\d{2}(?:AM|PM))?\s*(\d{4}-\d{2}-\d{2})(\d{1,2}:\d{2}(?:AM|PM))?')
+ r'\s*([\w\d\s,-.;\'!\[\]()]{1,})\s+\|\s+(\d{4}-\d{2}-\d{2})\s+(\d{1,2}:\d{2}(?:AM|PM))?\s*(\d{4}-\d{2}-\d{2})(\d{1,2}:\d{2}(?:AM|PM))?')
class LoadDialog(QDialog, Ui_Dialog):
diff --git a/bulk_reminders/undo.py b/bulk_reminders/undo.py
index 1dcbd09..d5d4a82 100644
--- a/bulk_reminders/undo.py
+++ b/bulk_reminders/undo.py
@@ -31,7 +31,7 @@ class HistoryManager(object):
"""Save data to the undo history file."""
logger.info('Saving to undo history file.')
with open(self.file, 'w') as file:
- file.write(jsonpickle.encode(self.stages))
+ file.write(jsonpickle.encode(self.stages, indent=4))
def getTotal(self) -> int:
"""Returns the total number of undoable events known."""