From 312e153a23a56d32547ed384a557d4711ac5e538 Mon Sep 17 00:00:00 2001
From: Nico Alt <nicoalt@posteo.org>
Date: Tue, 29 Dec 2020 12:00:00 +0000
Subject: [PATCH] Rename "controller" to "presenter"

I think the Model-View-Presenter pattern is better for this than the
Model-View-Controller pattern.
---
 briar-gtk/briar_gtk/actions/window.py         | 18 ++++-----
 briar-gtk/briar_gtk/handlers/__init__.py      |  2 +-
 .../{controllers => presenters}/__init__.py   |  2 +-
 .../main_window.py                            | 38 +++++++++----------
 .../private_chat.py                           | 14 +++----
 .../{controllers => presenters}/sidebar.py    |  2 +-
 briar-gtk/briar_gtk/views/__init__.py         |  2 +-
 briar-gtk/briar_gtk/views/add_contact.py      |  2 +-
 briar-gtk/briar_gtk/views/login.py            |  2 +-
 briar-gtk/briar_gtk/views/private_chat.py     |  2 +-
 briar-gtk/briar_gtk/views/registration.py     |  2 +-
 briar-gtk/briar_gtk/views/sidebar.py          |  2 +-
 briar-gtk/briar_gtk/window.py                 | 10 ++---
 13 files changed, 49 insertions(+), 49 deletions(-)
 rename briar-gtk/briar_gtk/{controllers => presenters}/__init__.py (55%)
 rename briar-gtk/briar_gtk/{controllers => presenters}/main_window.py (62%)
 rename briar-gtk/briar_gtk/{controllers => presenters}/private_chat.py (95%)
 rename briar-gtk/briar_gtk/{controllers => presenters}/sidebar.py (98%)

diff --git a/briar-gtk/briar_gtk/actions/window.py b/briar-gtk/briar_gtk/actions/window.py
index b18d7c5..58e071d 100644
--- a/briar-gtk/briar_gtk/actions/window.py
+++ b/briar-gtk/briar_gtk/actions/window.py
@@ -10,7 +10,7 @@ from gi.repository import GLib
 
 from briar_gtk.actions.actions import Actions
 from briar_gtk.actions.prefixes import WINDOW_PREFIX
-from briar_gtk.controllers.main_window import MainWindowController
+from briar_gtk.presenters.main_window import MainWindowPresenter
 from briar_gtk.define import APP
 
 
@@ -64,25 +64,25 @@ class WindowActions(Actions):
 
     # pylint: disable=unused-argument
     def _back_to_sidebar(self, action, parameter):
-        if isinstance(self.widget.main_window_controller,
-                      MainWindowController):
-            self.widget.main_window_controller.close_private_chat()
+        if isinstance(self.widget.main_window_presenter,
+                      MainWindowPresenter):
+            self.widget.main_window_presenter.close_private_chat()
 
     # pylint: disable=unused-argument
     def _delete_all_messages_dialog(self, action, parameter):
-        self.widget.main_window_controller.open_delete_all_messages_dialog()
+        self.widget.main_window_presenter.open_delete_all_messages_dialog()
 
     # pylint: disable=unused-argument
     def _delete_contact_dialog(self, action, parameter):
-        self.widget.main_window_controller.open_delete_contact_dialog()
+        self.widget.main_window_presenter.open_delete_contact_dialog()
 
     # pylint: disable=unused-argument
     def _change_alias_contact_dialog(self, action, parameter):
-        self.widget.main_window_controller.open_change_contact_alias_dialog()
+        self.widget.main_window_presenter.open_change_contact_alias_dialog()
 
     # pylint: disable=unused-argument
     def _open_about_page(self, action, parameter):
-        self.widget.main_window_controller.open_about_page()
+        self.widget.main_window_presenter.open_about_page()
 
     # pylint: disable=unused-argument
     def _open_add_contact(self, action, parameter):
@@ -94,5 +94,5 @@ class WindowActions(Actions):
 
     # pylint: disable=unused-argument
     def _open_private_chat(self, action, contact_id):
-        self.widget.main_window_controller.open_private_chat(
+        self.widget.main_window_presenter.open_private_chat(
             contact_id.get_int32())
diff --git a/briar-gtk/briar_gtk/handlers/__init__.py b/briar-gtk/briar_gtk/handlers/__init__.py
index 57c1513..09832ee 100644
--- a/briar-gtk/briar_gtk/handlers/__init__.py
+++ b/briar-gtk/briar_gtk/handlers/__init__.py
@@ -2,6 +2,6 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 # License-Filename: LICENSE.md
 """
-Similar to controllers, handlers react to input, but they aren't attached
+Similar to presenters, handlers react to input, but they aren't attached
 to a view
 """
diff --git a/briar-gtk/briar_gtk/controllers/__init__.py b/briar-gtk/briar_gtk/presenters/__init__.py
similarity index 55%
rename from briar-gtk/briar_gtk/controllers/__init__.py
rename to briar-gtk/briar_gtk/presenters/__init__.py
index fb84ada..d793e06 100644
--- a/briar-gtk/briar_gtk/controllers/__init__.py
+++ b/briar-gtk/briar_gtk/presenters/__init__.py
@@ -2,5 +2,5 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 # License-Filename: LICENSE.md
 """
-Controllers reacting to user input in Briar GTK
+Presenters (of MVP pattern) reacting to user input and model/data updates in Briar GTK
 """
diff --git a/briar-gtk/briar_gtk/controllers/main_window.py b/briar-gtk/briar_gtk/presenters/main_window.py
similarity index 62%
rename from briar-gtk/briar_gtk/controllers/main_window.py
rename to briar-gtk/briar_gtk/presenters/main_window.py
index 186e436..cb81cd1 100644
--- a/briar-gtk/briar_gtk/controllers/main_window.py
+++ b/briar-gtk/briar_gtk/presenters/main_window.py
@@ -3,15 +3,15 @@
 # License-Filename: LICENSE.md
 
 from briar_gtk.handlers.notification import NotificationHandler
-from briar_gtk.controllers.private_chat import PrivateChatController
-from briar_gtk.controllers.sidebar import SidebarController
+from briar_gtk.presenters.private_chat import PrivateChatPresenter
+from briar_gtk.presenters.sidebar import SidebarPresenter
 from briar_gtk.define import APP
 from briar_gtk.views.private_chat import PrivateChatView
 from briar_gtk.views.sidebar import SidebarView
 from briar_gtk.widgets.about_dialog import AboutDialogWidget
 
 
-class MainWindowController:
+class MainWindowPresenter:
 
     def __init__(self, main_window_view, builder):
         self._main_window_view = main_window_view
@@ -27,41 +27,41 @@ class MainWindowController:
         about_dialog.show()
 
     def open_change_contact_alias_dialog(self):
-        if self._private_chat_controller is not None:
-            self._private_chat_controller.open_change_contact_alias_dialog()
+        if self._private_chat_presenter is not None:
+            self._private_chat_presenter.open_change_contact_alias_dialog()
 
     def open_delete_all_messages_dialog(self):
-        if self._private_chat_controller is not None:
-            self._private_chat_controller.open_delete_all_messages_dialog()
+        if self._private_chat_presenter is not None:
+            self._private_chat_presenter.open_delete_all_messages_dialog()
 
     def open_delete_contact_dialog(self):
-        if self._private_chat_controller is not None:
-            self._private_chat_controller.open_delete_contact_dialog()
+        if self._private_chat_presenter is not None:
+            self._private_chat_presenter.open_delete_contact_dialog()
 
     def close_private_chat(self):
-        if self._private_chat_controller is not None:
-            self._private_chat_controller.close_private_chat()
-            self._private_chat_controller = None
+        if self._private_chat_presenter is not None:
+            self._private_chat_presenter.close_private_chat()
+            self._private_chat_presenter = None
 
     def open_private_chat(self, contact_id):
         private_chat_view = PrivateChatView(self._builder)
-        self._private_chat_controller = PrivateChatController(
-            contact_id, private_chat_view, self._sidebar_controller,
+        self._private_chat_presenter = PrivateChatPresenter(
+            contact_id, private_chat_view, self._sidebar_presenter,
             self._builder, APP().api)
 
     def _setup_children(self):
         self._setup_notification_handler()
-        self._setup_sidebar_controller()
-        self._private_chat_controller = None
+        self._setup_sidebar_presenter()
+        self._private_chat_presenter = None
         contact_name_label = self._builder.get_object("contact_name")
         contact_name_label.set_text("")
 
     def _setup_notification_handler(self):
         self._notification_handler = NotificationHandler()
 
-    def _setup_sidebar_controller(self):
+    def _setup_sidebar_presenter(self):
         sidebar_view = SidebarView(self._builder)
-        self._sidebar_controller = SidebarController(
+        self._sidebar_presenter = SidebarPresenter(
             sidebar_view, APP().api)
 
     def _setup_destroy_listener(self):
@@ -72,7 +72,7 @@ class MainWindowController:
         self._disconnect_signals()
 
     def _disconnect_signals(self):
-        self._sidebar_controller.disconnect_signals()
+        self._sidebar_presenter.disconnect_signals()
         self._notification_handler.disconnect_signals()
         for signal in self._signals:
             APP().api.socket_listener.disconnect(signal)
diff --git a/briar-gtk/briar_gtk/controllers/private_chat.py b/briar-gtk/briar_gtk/presenters/private_chat.py
similarity index 95%
rename from briar-gtk/briar_gtk/controllers/private_chat.py
rename to briar-gtk/briar_gtk/presenters/private_chat.py
index 185a8b8..6af1ca5 100644
--- a/briar-gtk/briar_gtk/controllers/private_chat.py
+++ b/briar-gtk/briar_gtk/presenters/private_chat.py
@@ -13,13 +13,13 @@ from briar_gtk.widgets.edit_dialog import EditDialog
 
 
 # pylint: disable=too-many-arguments
-class PrivateChatController:
+class PrivateChatPresenter:
     _current_contact_id = 0
 
-    def __init__(self, contact_id, private_chat_view, sidebar_controller,
+    def __init__(self, contact_id, private_chat_view, sidebar_presenter,
                  builder, api):
         self._private_chat_view = private_chat_view
-        self._sidebar_controller = sidebar_controller
+        self._sidebar_presenter = sidebar_presenter
         self._builder = builder
         self._api = api
         self.open_private_chat(contact_id)
@@ -67,7 +67,7 @@ class PrivateChatController:
             Contacts(APP().api).set_alias(self._current_contact_id, user_alias)
             contact_name_label = self._builder.get_object("contact_name")
             contact_name_label.set_text(user_alias)
-            self._sidebar_controller.refresh_contacts()
+            self._sidebar_presenter.refresh_contacts()
             # TODO: Update name in chat history
 
     def open_delete_all_messages_dialog(self):
@@ -128,14 +128,14 @@ class PrivateChatController:
         if response_id == Gtk.ResponseType.OK:
             private_chat = PrivateChat(APP().api, self._current_contact_id)
             private_chat.delete_all_messages()
-            self._sidebar_controller.refresh_contacts()
+            self._sidebar_presenter.refresh_contacts()
             self.close_private_chat()
         widget.destroy()
 
     def _delete_contact(self, widget, response_id):
         if response_id == Gtk.ResponseType.OK:
             Contacts(APP().api).delete(self._current_contact_id)
-            self._sidebar_controller.refresh_contacts()
+            self._sidebar_presenter.refresh_contacts()
             self.close_private_chat()
         widget.destroy()
 
@@ -195,4 +195,4 @@ class PrivateChatController:
         if len(widget.get_text()) == 0:
             return
         self._private_chat_view.send_message(widget)
-        self._sidebar_controller.refresh_contacts()
+        self._sidebar_presenter.refresh_contacts()
diff --git a/briar-gtk/briar_gtk/controllers/sidebar.py b/briar-gtk/briar_gtk/presenters/sidebar.py
similarity index 98%
rename from briar-gtk/briar_gtk/controllers/sidebar.py
rename to briar-gtk/briar_gtk/presenters/sidebar.py
index 98198bd..dfbecf6 100644
--- a/briar-gtk/briar_gtk/controllers/sidebar.py
+++ b/briar-gtk/briar_gtk/presenters/sidebar.py
@@ -7,7 +7,7 @@ from gi.repository import GLib
 from briar_wrapper.models.contacts import Contacts
 
 
-class SidebarController:
+class SidebarPresenter:
 
     def __init__(self, sidebar_view, api):
         self._sidebar_view = sidebar_view
diff --git a/briar-gtk/briar_gtk/views/__init__.py b/briar-gtk/briar_gtk/views/__init__.py
index 687b248..485f798 100644
--- a/briar-gtk/briar_gtk/views/__init__.py
+++ b/briar-gtk/briar_gtk/views/__init__.py
@@ -2,5 +2,5 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 # License-Filename: LICENSE.md
 """
-Views displaying data in Briar GTK
+Views (of MVP pattern) displaying data in Briar GTK
 """
diff --git a/briar-gtk/briar_gtk/views/add_contact.py b/briar-gtk/briar_gtk/views/add_contact.py
index 76adb3a..5e6cfb4 100644
--- a/briar-gtk/briar_gtk/views/add_contact.py
+++ b/briar-gtk/briar_gtk/views/add_contact.py
@@ -14,7 +14,7 @@ from briar_gtk.define import APP, RESOURCES_DIR
 
 class AddContactView(Gtk.Overlay):
 
-    # TODO: Move more logic into AddContactController
+    # TODO: Move more logic into AddContactPresenter
 
     ADD_CONTACT_UI = "add_contact.ui"
     STACK_NAME = "add_contact_flow_stack"
diff --git a/briar-gtk/briar_gtk/views/login.py b/briar-gtk/briar_gtk/views/login.py
index 06e3dc7..0812716 100644
--- a/briar-gtk/briar_gtk/views/login.py
+++ b/briar-gtk/briar_gtk/views/login.py
@@ -13,7 +13,7 @@ from briar_gtk.define import APP, RESOURCES_DIR
 
 class LoginView(Gtk.Overlay):
 
-    # TODO: Move more logic into LoginController
+    # TODO: Move more logic into LoginPresenter
 
     LOGIN_UI = "login.ui"
     STACK_NAME = "login_flow_stack"
diff --git a/briar-gtk/briar_gtk/views/private_chat.py b/briar-gtk/briar_gtk/views/private_chat.py
index a3071ad..27ec4ae 100644
--- a/briar-gtk/briar_gtk/views/private_chat.py
+++ b/briar-gtk/briar_gtk/views/private_chat.py
@@ -18,7 +18,7 @@ from briar_gtk.widgets.private_message import PrivateMessageWidget
 # pylint: disable=too-many-instance-attributes
 class PrivateChatView(Gtk.Overlay):
 
-    # TODO: Move more logic into PrivateChatController
+    # TODO: Move more logic into PrivateChatPresenter
 
     CONTAINER_UI = "private_chat.ui"
 
diff --git a/briar-gtk/briar_gtk/views/registration.py b/briar-gtk/briar_gtk/views/registration.py
index 4ef9246..fc075da 100644
--- a/briar-gtk/briar_gtk/views/registration.py
+++ b/briar-gtk/briar_gtk/views/registration.py
@@ -13,7 +13,7 @@ from briar_gtk.define import APP, RESOURCES_DIR
 
 class RegistrationView(Gtk.Overlay):
 
-    # TODO: Move more logic into RegistrationController
+    # TODO: Move more logic into RegistrationPresenter
 
     REGISTRATION_UI = "registration.ui"
     STACK_NAME = "registration_flow_stack"
diff --git a/briar-gtk/briar_gtk/views/sidebar.py b/briar-gtk/briar_gtk/views/sidebar.py
index a3146a0..710a7fa 100644
--- a/briar-gtk/briar_gtk/views/sidebar.py
+++ b/briar-gtk/briar_gtk/views/sidebar.py
@@ -7,7 +7,7 @@ from briar_gtk.widgets.contact_row import ContactRowWidget
 
 class SidebarView:
 
-    # TODO: Move more logic into SidebarController
+    # TODO: Move more logic into SidebarPresenter
 
     def __init__(self, builder):
         self._builder = builder
diff --git a/briar-gtk/briar_gtk/window.py b/briar-gtk/briar_gtk/window.py
index 3358249..cd4fa4d 100644
--- a/briar-gtk/briar_gtk/window.py
+++ b/briar-gtk/briar_gtk/window.py
@@ -9,7 +9,7 @@ from gi.repository import Gio, Gtk
 
 from briar_gtk.actions.window import WindowActions
 from briar_gtk.views.add_contact import AddContactView
-from briar_gtk.controllers.main_window import MainWindowController
+from briar_gtk.presenters.main_window import MainWindowPresenter
 from briar_gtk.views.main_window import MainWindowView
 from briar_gtk.views.startup import StartupView
 from briar_gtk.define import APP, APPLICATION_ID, APPLICATION_NAME
@@ -22,7 +22,7 @@ class Window(Gtk.ApplicationWindow):
     DEFAULT_WINDOW_SIZE = (900, 600)
 
     def __init__(self):
-        self.main_window_controller = None
+        self.main_window_presenter = None
         self._initialize_gtk_application_window()
         WindowActions(self)
         self._setup_content()
@@ -34,8 +34,8 @@ class Window(Gtk.ApplicationWindow):
 
     def show_add_contact_view(self):
         self._current_view.destroy()
-        if self.main_window_controller is not None:
-            self.main_window_controller = None
+        if self.main_window_presenter is not None:
+            self.main_window_presenter = None
         self._setup_add_contact_view()
 
     # pylint: disable=arguments-differ,unused-argument
@@ -107,7 +107,7 @@ class Window(Gtk.ApplicationWindow):
     def _setup_main_window_view(self):
         builder = self._setup_builder()
         main_window_view = MainWindowView(builder, self)
-        self.main_window_controller = MainWindowController(
+        self.main_window_presenter = MainWindowPresenter(
             main_window_view, builder)
         self._setup_view(main_window_view)
         builder.get_object("chat_menu_button").hide()  # TODO: Make default
-- 
GitLab