From 1c7e66a2a609bf5e956c6f76bf7db7e585860731 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Thu, 11 Nov 2010 14:31:09 +0100 Subject: add EmpathyInputTextView --- libempathy-gtk/Makefile.am | 2 ++ libempathy-gtk/empathy-chat.c | 11 ++---- libempathy-gtk/empathy-input-text-view.c | 62 ++++++++++++++++++++++++++++++++ libempathy-gtk/empathy-input-text-view.h | 62 ++++++++++++++++++++++++++++++++ 4 files changed, 129 insertions(+), 8 deletions(-) create mode 100644 libempathy-gtk/empathy-input-text-view.c create mode 100644 libempathy-gtk/empathy-input-text-view.h (limited to 'libempathy-gtk') diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am index 6cc6c0992..def25e357 100644 --- a/libempathy-gtk/Makefile.am +++ b/libempathy-gtk/Makefile.am @@ -64,6 +64,7 @@ libempathy_gtk_handwritten_source = \ empathy-individual-store.c \ empathy-individual-view.c \ empathy-individual-widget.c \ + empathy-input-text-view.c \ empathy-irc-network-chooser.c \ empathy-irc-network-chooser-dialog.c \ empathy-irc-network-dialog.c \ @@ -125,6 +126,7 @@ libempathy_gtk_headers = \ empathy-individual-store.h \ empathy-individual-view.h \ empathy-individual-widget.h \ + empathy-input-text-view.h \ empathy-irc-network-chooser.h \ empathy-irc-network-chooser-dialog.h \ empathy-irc-network-dialog.h \ diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index 53f046bcd..7c238f0c4 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -48,6 +48,7 @@ #include "empathy-contact-list-store.h" #include "empathy-contact-list-view.h" #include "empathy-contact-menu.h" +#include "empathy-input-text-view.h" #include "empathy-search-bar.h" #include "empathy-theme-manager.h" #include "empathy-smiley-manager.h" @@ -2588,14 +2589,8 @@ chat_create_ui (EmpathyChat *chat) gtk_widget_show (GTK_WIDGET (chat->view)); /* Add input GtkTextView */ - chat->input_text_view = g_object_new (GTK_TYPE_TEXT_VIEW, - "pixels-above-lines", 2, - "pixels-below-lines", 2, - "pixels-inside-wrap", 1, - "right-margin", 2, - "left-margin", 2, - "wrap-mode", GTK_WRAP_WORD_CHAR, - NULL); + chat->input_text_view = empathy_input_text_view_new (); + g_signal_connect (chat->input_text_view, "key-press-event", G_CALLBACK (chat_input_key_press_event_cb), chat); diff --git a/libempathy-gtk/empathy-input-text-view.c b/libempathy-gtk/empathy-input-text-view.c new file mode 100644 index 000000000..73ef32a45 --- /dev/null +++ b/libempathy-gtk/empathy-input-text-view.c @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2002-2007 Imendio AB + * Copyright (C) 2007-2010 Collabora Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * Authors: Mikael Hallendal + * Richard Hult + * Martyn Russell + * Geert-Jan Van den Bogaerde + * Xavier Claessens + * Guillaume Desmottes + */ + +#include "empathy-input-text-view.h" + +G_DEFINE_TYPE (EmpathyInputTextView, empathy_input_text_view, + GTK_TYPE_TEXT_VIEW); + +struct _EmpathyInputTextViewPrivate +{ + gpointer unused; +}; + +static void +empathy_input_text_view_class_init (EmpathyInputTextViewClass *cls) +{ + g_type_class_add_private (cls, sizeof (EmpathyInputTextViewPrivate)); +} + +static void +empathy_input_text_view_init (EmpathyInputTextView *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EMPATHY_TYPE_INPUT_TEXT_VIEW, EmpathyInputTextViewPrivate); +} + +GtkWidget * +empathy_input_text_view_new (void) +{ + return g_object_new (EMPATHY_TYPE_INPUT_TEXT_VIEW, + "pixels-above-lines", 2, + "pixels-below-lines", 2, + "pixels-inside-wrap", 1, + "right-margin", 2, + "left-margin", 2, + "wrap-mode", GTK_WRAP_WORD_CHAR, + NULL); +} diff --git a/libempathy-gtk/empathy-input-text-view.h b/libempathy-gtk/empathy-input-text-view.h new file mode 100644 index 000000000..917e21e81 --- /dev/null +++ b/libempathy-gtk/empathy-input-text-view.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2002-2007 Imendio AB + * Copyright (C) 2007-2010 Collabora Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * Authors: Mikael Hallendal + * Richard Hult + * Martyn Russell + * Geert-Jan Van den Bogaerde + * Xavier Claessens + * Guillaume Desmottes + */ + +#ifndef __EMPATHY_INPUT_TEXT_VIEW_H__ +#define __EMPATHY_INPUT_TEXT_VIEW_H__ + +#include + +G_BEGIN_DECLS + +#define EMPATHY_TYPE_INPUT_TEXT_VIEW (empathy_input_text_view_get_type ()) +#define EMPATHY_INPUT_TEXT_VIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_INPUT_TEXT_VIEW, EmpathyInputTextView)) +#define EMPATHY_INPUT_TEXT_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_INPUT_TEXT_VIEW, EmpathyInputTextViewClass)) +#define EMPATHY_IS_INPUT_TEXT_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_INPUT_TEXT_VIEW)) +#define EMPATHY_IS_INPUT_TEXT_VIEW_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_INPUT_TEXT_VIEW)) +#define EMPATHY_INPUT_TEXT_VIEW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INPUT_TEXT_VIEW, EmpathyInputTextViewClass)) + +typedef struct _EmpathyInputTextView EmpathyInputTextView; +typedef struct _EmpathyInputTextViewClass EmpathyInputTextViewClass; +typedef struct _EmpathyInputTextViewPrivate EmpathyInputTextViewPrivate; + +struct _EmpathyInputTextView +{ + GtkTextView parent; + EmpathyInputTextViewPrivate *priv; +}; + +struct _EmpathyInputTextViewClass +{ + GtkTextViewClass parent_class; +}; + +GType empathy_input_text_view_get_type (void) G_GNUC_CONST; + +GtkWidget * empathy_input_text_view_new (void); + +G_END_DECLS +#endif /* __EMPATHY_INPUT_TEXT_VIEW_H__ */ -- cgit v1.2.3