[bijiben] Settings: dialog with font and color
- From: Pierre-Yves Luyten <pyluyten src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [bijiben] Settings: dialog with font and color
- Date: Sun, 18 Nov 2012 20:44:28 +0000 (UTC)
commit e6c8c91bae5a2fe3c80b86550ccef1536d6c0a29
Author: Pierre-Yves Luyten <py luyten fr>
Date: Sun Nov 18 16:12:02 2012 +0100
Settings: dialog with font and color
src/bjb-app-menu.c | 45 +++++++++----
src/bjb-note-view.c | 9 ++-
src/bjb-settings.c | 159 +++++++++++++++++++++++++-------------------
src/bjb-settings.h | 9 +--
src/resources/app-menu.ui | 16 ++---
5 files changed, 139 insertions(+), 99 deletions(-)
---
diff --git a/src/bjb-app-menu.c b/src/bjb-app-menu.c
index 09bf426..effed0f 100644
--- a/src/bjb-app-menu.c
+++ b/src/bjb-app-menu.c
@@ -8,24 +8,29 @@
void show_about_dialog(GtkApplication *app)
{
- GList * windows = gtk_application_get_windows(app);
+ GList * windows = gtk_application_get_windows (app);
- gtk_show_about_dialog(
- g_list_nth_data(windows,0),
- "program-name", "Bijiben",
- "comments", "Simple noteboook for GNOME",
- "license", "GPLv3",
- "version", "0.2.0",
- "copyright", "Pierre-Yves Luyten 2012",
- NULL,NULL,NULL);
+ gtk_show_about_dialog( g_list_nth_data (windows, 0),
+ "program-name", "Bijiben",
+ "comments", "Simple noteboook for GNOME",
+ "license", "GPLv3",
+ "version", "0.2.0",
+ "copyright", "Pierre-Yves Luyten 2012",
+ NULL,NULL,NULL);
}
void
summary()
{
- GError *error = NULL;
- gtk_show_uri (NULL, "ghelp:bijiben", gtk_get_current_event_time (), &error);
+ GError *error = NULL;
+ gtk_show_uri (NULL, "ghelp:bijiben", gtk_get_current_event_time (), &error);
+
+ if (error)
+ {
+ g_warning (error->message);
+ g_error_free (error);
+ }
}
static void
@@ -37,6 +42,15 @@ new_activated (GSimpleAction *action,
}
static void
+preferences_activated (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GList * windows = gtk_application_get_windows (GTK_APPLICATION(user_data));
+ show_bijiben_settings_window (g_list_nth_data (windows, 0));
+}
+
+static void
about_activated (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
@@ -51,6 +65,12 @@ help_activated (GSimpleAction *action,
{
GError *error = NULL;
gtk_show_uri (NULL, "ghelp:bijiben", gtk_get_current_event_time (), &error);
+
+ if (error)
+ {
+ g_warning (error->message);
+ g_error_free (error);
+ }
}
static void
@@ -67,8 +87,9 @@ quit_activated (GSimpleAction *action,
static GActionEntry app_entries[] = {
{ "new", new_activated, NULL, NULL, NULL },
- { "help", help_activated, NULL, NULL, NULL },
+ { "preferences", preferences_activated, NULL, NULL, NULL },
{ "about", about_activated, NULL, NULL, NULL },
+ { "help", help_activated, NULL, NULL, NULL },
{ "quit", quit_activated, NULL, NULL, NULL },
};
diff --git a/src/bjb-note-view.c b/src/bjb-note-view.c
index cc92adc..32929bc 100644
--- a/src/bjb-note-view.c
+++ b/src/bjb-note-view.c
@@ -449,7 +449,7 @@ bjb_note_view_constructed (GObject *obj)
ClutterActor *stage, *vbox;
ClutterConstraint *constraint;
ClutterLayoutManager *full, *box, *bin;
- gchar *font;
+ gchar *default_font, *default_color;
/* view new from note deserializes the note-content. */
priv->view = biji_note_obj_open (priv->note);
@@ -521,15 +521,18 @@ bjb_note_view_constructed (GObject *obj)
clutter_actor_set_y_expand(text_actor,TRUE);
/* Apply the selected font */
- g_object_get (G_OBJECT(settings),"font",&font,NULL);
+ g_object_get (G_OBJECT(settings),"font",&default_font,NULL);
gtk_widget_modify_font(GTK_WIDGET(priv->view),
- pango_font_description_from_string(font));
+ pango_font_description_from_string(default_font));
/* User defined color */
GdkRGBA color ;
if (!biji_note_obj_get_rgba(priv->note, &color))
gdk_rgba_parse (&color, DEFAULT_NOTE_COLOR);
+ g_object_get (G_OBJECT(settings),"color", &default_color,NULL);
+
+
biji_note_obj_set_rgba (priv->note, &color);
/* Edition Toolbar */
diff --git a/src/bjb-settings.c b/src/bjb-settings.c
index 21f69d9..2cf4294 100644
--- a/src/bjb-settings.c
+++ b/src/bjb-settings.c
@@ -4,6 +4,9 @@
#include "bjb-bijiben.h"
#include "bjb-settings.h"
+#define WIDTH_SETTING_DIALOG_SIZE_DIFF 150
+#define HEIGHT_SETTING_DIALOG_SIZE_DIFF 180
+
struct _BjbSettingsPrivate
{
GSettings *settings ;
@@ -16,10 +19,7 @@ enum
// Note Editor.
PROP_FONT,
- PROP_HIGHLIGHT_COLOR,
-
- // Interface / desktop integration
- PROP_CASE_SENSITIVE_SEARCH, // Hidden setting.
+ PROP_COLOR,
N_PROPERTIES
};
@@ -43,24 +43,20 @@ bjb_settings_finalize (GObject *object)
static void
bjb_settings_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
BjbSettings *settings = BJB_SETTINGS (object);
switch (prop_id)
- {
- case PROP_CASE_SENSITIVE_SEARCH:
- g_value_set_boolean (value,settings->case_sensitive_search);
- break;
-
+ {
case PROP_FONT:
g_value_set_string (value,settings->font);
break;
- case PROP_HIGHLIGHT_COLOR:
- g_value_set_string (value,settings->highlight_color);
+ case PROP_COLOR:
+ g_value_set_string (value,settings->color);
break;
default:
@@ -71,30 +67,26 @@ bjb_settings_get_property (GObject *object,
static void
bjb_settings_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
BjbSettings *settings = BJB_SETTINGS (object);
switch (prop_id)
{
- case PROP_CASE_SENSITIVE_SEARCH:
- settings->case_sensitive_search = g_value_get_boolean (value);
- break;
-
case PROP_FONT:
settings->font = g_value_dup_string(value) ;
break;
- case PROP_HIGHLIGHT_COLOR:
- settings->highlight_color = g_value_dup_string(value);
+ case PROP_COLOR:
+ settings->color = g_value_dup_string(value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
- }
+ }
}
static void
@@ -107,26 +99,19 @@ bjb_settings_class_init (BjbSettingsClass *klass)
object_class->finalize = bjb_settings_finalize;
object_class->get_property = bjb_settings_get_property;
object_class->set_property = bjb_settings_set_property;
-
- g_object_class_install_property (object_class,PROP_CASE_SENSITIVE_SEARCH,
- g_param_spec_boolean ("case-sensitive-search",
- "Case Sensitive Search",
- "Case man!",
- FALSE,
- G_PARAM_READWRITE));
g_object_class_install_property (object_class,PROP_FONT,
g_param_spec_string("font",
- "Font",
- "Font for notes",
+ "Notes Font",
+ "Font for Notes",
NULL,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (object_class,PROP_HIGHLIGHT_COLOR,
- g_param_spec_string("highlight-color",
- "Highlight Color",
- "Color text",
+ g_object_class_install_property (object_class,PROP_COLOR,
+ g_param_spec_string("color",
+ "New Notes Color",
+ "Default Color for New Notes",
NULL,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
@@ -135,70 +120,106 @@ bjb_settings_class_init (BjbSettingsClass *klass)
// only init from bijiben
BjbSettings *
-initialize_settings(void)
+initialize_settings (void)
{
BjbSettings *result = g_object_new (BJB_TYPE_SETTINGS,NULL) ;
-
- result->priv->settings= g_settings_new("org.gnome.bijiben");
-
- // UI settings
-
- g_settings_bind (result->priv->settings, "case-sensitive-search",
- result,"case_sensitive_search",
- G_SETTINGS_BIND_DEFAULT);
+ result->priv->settings= g_settings_new ("org.gnome.bijiben");
// Note editor settings
-
g_settings_bind (result->priv->settings, "font",
result,"font",
G_SETTINGS_BIND_DEFAULT);
- g_settings_bind (result->priv->settings, "highlight-color",
- result,"highlight_color",
+ g_settings_bind (result->priv->settings, "color",
+ result,"color",
G_SETTINGS_BIND_DEFAULT);
-
+
return result ;
}
static void
-on_font_selected(GtkFontButton *widget, BjbSettings *settings)
+on_font_selected (GtkFontButton *widget,
+ BjbSettings *settings)
{
- g_object_set(settings,"font",gtk_font_button_get_font_name(widget),NULL);
+ g_settings_set_string (settings->priv->settings,
+ "font",
+ gtk_font_button_get_font_name (widget));
+}
+
+static void
+on_color_set (GtkColorButton *button,
+ BjbSettings *settings)
+{
+ GdkRGBA color;
+ gchar *color_str;
+
+ gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (button), &color);
+ color_str = gdk_rgba_to_string (&color);
+
+ g_settings_set_string (settings->priv->settings,
+ "color",
+ color_str);
+
+ g_free (color_str);
}
void
-show_bijiben_settings_window(GtkMenuItem* item, GtkWidget *parent_window)
+show_bijiben_settings_window (GtkWidget *parent_window)
{
- GtkWidget *dialog,*area,*notebook,*page,*frame,*picker;
+ GtkWidget *dialog,*area,*notebook,*page, *hbox, *label, *picker;
+ gint width, height;
+
BjbSettings *settings = bjb_app_get_settings(g_application_get_default());
- // create dialog
+ /* create dialog */
dialog = gtk_dialog_new_with_buttons("Notes tag",
- GTK_WINDOW(parent_window),
- GTK_DIALOG_MODAL|
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_STOCK_OK,
- GTK_RESPONSE_OK,
- NULL);
+ GTK_WINDOW(parent_window),
+ GTK_DIALOG_MODAL|
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_STOCK_OK,
+ GTK_RESPONSE_OK,
+ NULL);
+
+ gtk_window_get_size (GTK_WINDOW (parent_window), &width, &height);
+ gtk_window_set_default_size (GTK_WINDOW (dialog),
+ width - WIDTH_SETTING_DIALOG_SIZE_DIFF,
+ height - HEIGHT_SETTING_DIALOG_SIZE_DIFF);
area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
gtk_container_set_border_width (GTK_CONTAINER (area), 8);
+ gtk_widget_set_hexpand (area, TRUE);
+ gtk_widget_set_vexpand (area, TRUE);
+
notebook = gtk_notebook_new();
- // page 1 = Note Edition -> Font, Highlight-color
- page = gtk_box_new(GTK_ORIENTATION_VERTICAL,2);
+ /* Edition Page */
+ page = gtk_box_new (GTK_ORIENTATION_VERTICAL, 32);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 20);
+ gtk_box_pack_start (GTK_BOX (page), hbox, TRUE, FALSE, 2);
+ label = gtk_label_new ("Default font");
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, FALSE, 2);
picker = gtk_font_button_new_with_font (settings->font);
g_signal_connect(picker,"font-set",
G_CALLBACK(on_font_selected),settings);
- gtk_box_pack_start (GTK_BOX(page),picker,FALSE,FALSE,2);
- frame = gtk_frame_new("Special Formating");
- gtk_box_pack_start (GTK_BOX(page),frame,FALSE,FALSE,2);
- picker = gtk_color_button_new ();
- gtk_box_pack_start (GTK_BOX(page),picker,FALSE,FALSE,2);
+ gtk_box_pack_start (GTK_BOX (hbox), picker, TRUE, FALSE, 2);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 20);
+ gtk_box_pack_start (GTK_BOX (page), hbox, TRUE, FALSE, 2);
+ label = gtk_label_new ("Default color");
+ gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, FALSE, 2);
+ picker = gtk_color_button_new ();
+ g_signal_connect (picker, "color-set",
+ G_CALLBACK(on_color_set), settings);
+ gtk_box_pack_start (GTK_BOX (hbox),picker,TRUE,FALSE,2);
+
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),page,
gtk_label_new("Note Editor"));
- // pack, show, run, kill
+ /* External data Page */
+ // TODO
+
+ /* pack, show, run, kill */
gtk_box_pack_start (GTK_BOX (area), notebook, TRUE, TRUE,2);
gtk_widget_show_all(dialog);
gtk_dialog_run (GTK_DIALOG(dialog));
diff --git a/src/bjb-settings.h b/src/bjb-settings.h
index 6a711f3..f6e38c3 100644
--- a/src/bjb-settings.h
+++ b/src/bjb-settings.h
@@ -28,19 +28,16 @@ struct _BjbSettings
GObject parent_instance;
BjbSettingsPrivate *priv ;
- // Note edition settings
+ /* Note edition settings */
gchar *font ;
- gchar *highlight_color ;
-
- // Other settings
- gboolean case_sensitive_search ;
+ gchar *color ;
};
GType bjb_settings_get_type (void) G_GNUC_CONST;
BjbSettings * initialize_settings(void);
-void show_bijiben_settings_window(GtkMenuItem* item,GtkWidget *parent_window);
+void show_bijiben_settings_window (GtkWidget *parent_window);
G_END_DECLS
diff --git a/src/resources/app-menu.ui b/src/resources/app-menu.ui
index fe5e66d..5de8ff6 100644
--- a/src/resources/app-menu.ui
+++ b/src/resources/app-menu.ui
@@ -9,21 +9,19 @@
</section>
<section>
<item>
- <attribute name="label" translatable="yes">_Tags</attribute>
- <attribute name="action">app.tags</attribute>
+ <attribute name="label" translatable="yes">_Preferences</attribute>
+ <attribute name="action">app.preferences</attribute>
</item>
</section>
<section>
<item>
- <attribute name="label" translatable="yes">_Help</attribute>
- <attribute name="action">app.help</attribute>
- </item>
- <item>
<attribute name="label" translatable="yes">_About Bijiben</attribute>
<attribute name="action">app.about</attribute>
</item>
- </section>
- <section>
+ <item>
+ <attribute name="label" translatable="yes">_Help</attribute>
+ <attribute name="action">app.help</attribute>
+ </item>
<item>
<attribute name="label" translatable="yes">_Quit</attribute>
<attribute name="action">app.quit</attribute>
@@ -31,4 +29,4 @@
</item>
</section>
</menu>
-</interface>
\ No newline at end of file
+</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]