[gnome-notes] editor-toolbar: Simplify



commit 60a2c13a778e02441b59e2e253926d3d6f841342
Author: Mohammed Sadiq <sadiq sadiqpk org>
Date:   Wed Jun 1 12:35:35 2022 +0530

    editor-toolbar: Simplify
    
    Set note after toolbar is created.  Eventually we shall use
    a single editor toolbar for every note instead of creating
    a toolbar for every open note.

 src/bjb-editor-toolbar.c | 92 ++++++++++++------------------------------------
 src/bjb-editor-toolbar.h |  3 +-
 src/bjb-note-view.c      |  4 ++-
 3 files changed, 27 insertions(+), 72 deletions(-)
---
diff --git a/src/bjb-editor-toolbar.c b/src/bjb-editor-toolbar.c
index 0cdcd13a..195eb171 100644
--- a/src/bjb-editor-toolbar.c
+++ b/src/bjb-editor-toolbar.c
@@ -28,13 +28,6 @@
 #include "bjb-editor-toolbar.h"
 #include "bjb-window.h"
 
-enum
-{
-  PROP_0,
-  PROP_NOTE,
-  NUM_PROPERTIES
-};
-
 struct _BjbEditorToolbar
 {
   GtkActionBar   parent_instance;
@@ -153,44 +146,10 @@ bjb_editor_toolbar_map (GtkWidget *widget)
   gtk_window_add_accel_group (GTK_WINDOW (self->window), self->accel);
 }
 
-static void
-bjb_editor_toolbar_get_property (GObject    *object,
-                                 guint       property_id,
-                                 GValue     *value,
-                                 GParamSpec *pspec)
-{
-  switch (property_id)
-  {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-      break;
-  }
-}
-
-static void
-bjb_editor_toolbar_set_property (GObject      *object,
-                                 guint         property_id,
-                                 const GValue *value,
-                                 GParamSpec   *pspec)
-{
-  BjbEditorToolbar *self = BJB_EDITOR_TOOLBAR (object);
-
-  switch (property_id)
-  {
-    case PROP_NOTE:
-      self->note = g_value_get_object (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-      break;
-  }
-}
-
 static void
 bjb_editor_toolbar_constructed (GObject *object)
 {
   BjbEditorToolbar *self;
-  gboolean          can_format;
 
   G_OBJECT_CLASS (bjb_editor_toolbar_parent_class)->constructed (object);
 
@@ -204,18 +163,6 @@ bjb_editor_toolbar_constructed (GObject *object)
 
   gtk_widget_add_accelerator (self->strike_button, "clicked", self->accel,
                               GDK_KEY_s, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
-
-  can_format = biji_note_obj_can_format (self->note);
-
-  gtk_widget_set_sensitive (self->bold_button, can_format);
-  gtk_widget_set_sensitive (self->italic_button, can_format);
-  gtk_widget_set_sensitive (self->strike_button, can_format);
-
-  gtk_widget_set_sensitive (self->bullets_button, can_format);
-  gtk_widget_set_sensitive (self->list_button, can_format);
-
-  gtk_widget_set_sensitive (self->indent_button, can_format);
-  gtk_widget_set_sensitive (self->outdent_button, can_format);
 }
 
 static void
@@ -241,23 +188,11 @@ bjb_editor_toolbar_class_init (BjbEditorToolbarClass *klass)
   object_class = G_OBJECT_CLASS (klass);
   widget_class = GTK_WIDGET_CLASS (klass);
 
-  object_class->get_property = bjb_editor_toolbar_get_property;
-  object_class->set_property = bjb_editor_toolbar_set_property;
   object_class->constructed = bjb_editor_toolbar_constructed;
   object_class->finalize = bjb_editor_toolbar_finalize;
 
   widget_class->map = bjb_editor_toolbar_map;
 
-  g_object_class_install_property (object_class,
-                                   PROP_NOTE,
-                                   g_param_spec_object ("note",
-                                                        "Note",
-                                                        "Biji Note Obj",
-                                                        BIJI_TYPE_NOTE_OBJ,
-                                                        G_PARAM_READWRITE |
-                                                        G_PARAM_CONSTRUCT |
-                                                        G_PARAM_STATIC_STRINGS));
-
   gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Notes/editor-toolbar.ui");
 
   gtk_widget_class_bind_template_child (widget_class, BjbEditorToolbar, bold_button);
@@ -286,10 +221,27 @@ bjb_editor_toolbar_init (BjbEditorToolbar *self)
   self->accel = gtk_accel_group_new ();
 }
 
-GtkWidget *
-bjb_editor_toolbar_new (BijiNoteObj *note)
+void
+bjb_editor_toolbar_set_note (BjbEditorToolbar *self,
+                             BijiNoteObj      *note)
 {
-  return g_object_new (BJB_TYPE_EDITOR_TOOLBAR,
-                       "note", note,
-                       NULL);
+  gboolean can_format = FALSE;
+
+  g_return_if_fail (BJB_IS_EDITOR_TOOLBAR (self));
+  g_return_if_fail (!note || BIJI_IS_NOTE_OBJ (note));
+
+  self->note = note;
+
+  if (note && biji_note_obj_can_format (note))
+    can_format = TRUE;
+
+  gtk_widget_set_sensitive (self->bold_button, can_format);
+  gtk_widget_set_sensitive (self->italic_button, can_format);
+  gtk_widget_set_sensitive (self->strike_button, can_format);
+
+  gtk_widget_set_sensitive (self->bullets_button, can_format);
+  gtk_widget_set_sensitive (self->list_button, can_format);
+
+  gtk_widget_set_sensitive (self->indent_button, can_format);
+  gtk_widget_set_sensitive (self->outdent_button, can_format);
 }
diff --git a/src/bjb-editor-toolbar.h b/src/bjb-editor-toolbar.h
index 44a06db6..e9557ddd 100644
--- a/src/bjb-editor-toolbar.h
+++ b/src/bjb-editor-toolbar.h
@@ -27,6 +27,7 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (BjbEditorToolbar, bjb_editor_toolbar, BJB, EDITOR_TOOLBAR, GtkActionBar)
 
-GtkWidget *bjb_editor_toolbar_new (BijiNoteObj *note);
+void     bjb_editor_toolbar_set_note    (BjbEditorToolbar *self,
+                                         BijiNoteObj      *note);
 
 G_END_DECLS
diff --git a/src/bjb-note-view.c b/src/bjb-note-view.c
index 9005dbc5..012e921e 100644
--- a/src/bjb-note-view.c
+++ b/src/bjb-note-view.c
@@ -222,7 +222,9 @@ bjb_note_view_constructed (GObject *obj)
   /* Edition Toolbar for text selection */
   if (!biji_note_obj_is_trashed (BIJI_NOTE_OBJ (self->note)))
     {
-      self->edit_bar = bjb_editor_toolbar_new (self->note);
+      self->edit_bar = g_object_new (BJB_TYPE_EDITOR_TOOLBAR, NULL);
+      bjb_editor_toolbar_set_note (BJB_EDITOR_TOOLBAR (self->edit_bar), self->note);
+
       gtk_box_pack_start (GTK_BOX (self->box), self->edit_bar, FALSE, TRUE, 0);
     }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]