aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/misc/e-cell-percent.c
diff options
context:
space:
mode:
authorDamon Chaplin <damon@ximian.com>2001-10-23 07:47:32 +0800
committerDamon Chaplin <damon@src.gnome.org>2001-10-23 07:47:32 +0800
commitf59604582dc64d50c7b6974aa4322863da594483 (patch)
tree157cef3013b6a0ef414d3637f76c0968e2c9f68d /widgets/misc/e-cell-percent.c
parent1c090bee53d04e7ba57c12e700c5f4f142c6bbf7 (diff)
downloadgsoc2013-evolution-f59604582dc64d50c7b6974aa4322863da594483.tar.gz
gsoc2013-evolution-f59604582dc64d50c7b6974aa4322863da594483.tar.zst
gsoc2013-evolution-f59604582dc64d50c7b6974aa4322863da594483.zip
use the new ECellText methods to get the text and set the value.
2001-10-22 Damon Chaplin <damon@ximian.com> * e-cell-date-edit.c (e_cell_date_edit_set_popup_values): (e_cell_date_edit_update_cell): use the new ECellText methods to get the text and set the value. * e-cell-percent.c: new subclass of ECellText to display & edit a percentage value. svn path=/trunk/; revision=13916
Diffstat (limited to 'widgets/misc/e-cell-percent.c')
-rw-r--r--widgets/misc/e-cell-percent.c159
1 files changed, 159 insertions, 0 deletions
diff --git a/widgets/misc/e-cell-percent.c b/widgets/misc/e-cell-percent.c
new file mode 100644
index 0000000000..e1e14212e6
--- /dev/null
+++ b/widgets/misc/e-cell-percent.c
@@ -0,0 +1,159 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * Author :
+ * Damon Chaplin <damon@ximian.com>
+ *
+ * Copyright 2001, Ximian, Inc.
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
+/*
+ * ECellPercent - a subclass of ECellText used to show an integer percentage
+ * in an ETable.
+ */
+
+#include <config.h>
+
+#include <ctype.h>
+
+#include <sys/time.h>
+#include <unistd.h>
+#include <gal/util/e-util.h>
+#include <libgnomeui/gnome-messagebox.h>
+#include <libgnomeui/gnome-stock.h>
+#include <libgnome/gnome-i18n.h>
+
+#include "e-cell-percent.h"
+
+#define PARENT_TYPE e_cell_text_get_type ()
+
+static ECellTextClass *parent_class;
+
+
+static char *
+ecp_get_text (ECellText *cell, ETableModel *model, int col, int row)
+{
+ int percent;
+ static char buffer[8];
+
+ percent = GPOINTER_TO_INT (e_table_model_value_at (model, col, row));
+
+ /* A -ve value means the property is not set. */
+ if (percent < 0) {
+ buffer[0] = '\0';
+ } else {
+ g_snprintf (buffer, sizeof (buffer), "%i%%", percent);
+ }
+
+ return buffer;
+}
+
+static void
+ecp_free_text(ECellText *cell, char *text)
+{
+ /* Do Nothing. */
+}
+
+/* FIXME: We need to set the "transient_for" property for the dialog. */
+static void
+show_percent_warning (void)
+{
+ GtkWidget *dialog;
+
+ dialog = gnome_message_box_new (_("The percent value must be between 0 and 100, inclusive"),
+ GNOME_MESSAGE_BOX_ERROR,
+ GNOME_STOCK_BUTTON_OK, NULL);
+ gtk_widget_show (dialog);
+}
+
+static void
+ecp_set_value (ECellText *cell, ETableModel *model, int col, int row,
+ const char *text)
+{
+ int matched, percent;
+ gboolean empty = TRUE;
+ const char *p;
+
+ if (text) {
+ p = text;
+ while (*p) {
+ if (!isspace ((unsigned char) *p)) {
+ empty = FALSE;
+ break;
+ }
+ p++;
+ }
+ }
+
+ if (empty) {
+ percent = -1;
+ } else {
+ matched = sscanf (text, "%i", &percent);
+
+ if (matched != 1 || percent < 0 || percent > 100) {
+ show_percent_warning ();
+ return;
+ }
+ }
+
+ e_table_model_set_value_at (model, col, row,
+ GINT_TO_POINTER (percent));
+}
+
+static void
+e_cell_percent_class_init (GtkObjectClass *object_class)
+{
+ ECellTextClass *ectc = (ECellTextClass *) object_class;
+
+ parent_class = gtk_type_class (PARENT_TYPE);
+
+ ectc->get_text = ecp_get_text;
+ ectc->free_text = ecp_free_text;
+ ectc->set_value = ecp_set_value;
+}
+
+static void
+e_cell_percent_init (GtkObject *object)
+{
+}
+
+/**
+ * e_cell_percent_new:
+ * @fontname: font to be used to render on the screen
+ * @justify: Justification of the string in the cell.
+ *
+ * Creates a new ECell renderer that can be used to render an integer
+ * percentage that comes from the model. The value returned from the model is
+ * interpreted as being an int.
+ *
+ * See ECellText for other features.
+ *
+ * Returns: an ECell object that can be used to render numbers.
+ */
+ECell *
+e_cell_percent_new (const char *fontname, GtkJustification justify)
+{
+ ECellPercent *ecn = gtk_type_new (e_cell_percent_get_type ());
+
+ e_cell_text_construct (E_CELL_TEXT(ecn), fontname, justify);
+
+ return (ECell *) ecn;
+}
+
+E_MAKE_TYPE (e_cell_percent, "ECellPercent", ECellPercent,
+ e_cell_percent_class_init, e_cell_percent_init, PARENT_TYPE);
'deletions'>-163/+76 * First pass of Shavian translationThomas Thurman2009-11-082-0/+9056 * Updated Spanish translationJorge González2009-11-071-87/+77 * Updated Spanish translationJorge González2009-11-071-153/+143 * Updated Spanish translationJorge González2009-11-061-181/+153 * Updated Slovenian translationMatej Urbančič2009-11-061-3/+3 * Updated Slovenian translationMatej Urbančič2009-11-061-8615/+8845 * Updated Spanish translationJorge González2009-11-051-163/+101 * Updated Spanish translationJorge González2009-11-051-72/+41 * Added Tamil translationvasudeven2009-11-021-454/+488 * Updated Spanish translationJorge González2009-11-021-8378/+9582 * Fix distcheck errors.Matthew Barnes2009-10-301-8/+8 * Updated Tamil translationdrtvasudevan2009-10-271-86/+138 * Updating Estonian translationIvar Smolin2009-10-261-3/+3 * Fix distcheck errors.Matthew Barnes2009-10-241-0/+4 * Updated Norwegian Nynorsk translationÅsmund Skjæveland2009-10-231-344/+262 * Updated Tamil translationdrtvasudevan2009-10-211-943/+1054 * Updated Russian translationLeonid Kanter2009-10-201-11026/+10848 * Updated Norwegian Nynorsk translationÅsmund Skjæveland2009-10-171-6762/+7935 * Updated Catalan translation from the gnome-2-28 branchDavid Planella2009-10-131-11021/+12269 * Updated Italian translationLuca Ferretti2009-10-121-216/+215 * Updated Tamil translationdrtvasudevan2009-10-111-360/+211 * Updated Tamil translationdrtvasudevan2009-10-111-8366/+7551 * Updated Tamil translationdrtvasudevan2009-10-111-70/+138 * Updated Slovenian translationAndrej Žnidaršič2009-10-081-339/+309 * Updated Swedish translationDaniel Nylander2009-10-051-2/+2 * Updated Italian translationLuca Ferretti2009-10-051-5687/+6315 * Updated Swedish translationDaniel Nylander2009-10-041-8283/+8378 * Updated Swedish translationDaniel Nylander2009-10-041-5/+5 * Updating Estonian translationMattias Põldaru2009-10-031-5/+14 * Bug #456240 - Move exchange plugin to exchange packageMilan Crha2009-10-022-17/+0 * Updating Estonian translationIvar Smolin2009-10-011-5/+5 * Fix distcheck errors.Matthew Barnes2009-09-301-1/+1 * Bug #593609 - Have buildable exchange-operations plugin againMilan Crha2009-09-251-13/+0 * Updated Arabic translationKhaled Hosny2009-09-251-2618/+2662 * Updated Slovenian translationMatej Urbančič2009-09-241-5926/+5966 * Fix distcheck errors.Matthew Barnes2009-09-231-0/+1 * GN-bug #593617 - GroupWise plugins are not builtMilan Crha2009-09-232-2/+2 * Updated Japanese translationTakayuki KUSANO2009-09-231-5719/+6186 * Kill the ipod-sync plugin, along with the HAL dependency.Matthew Barnes2009-09-221-3/+0 * Updated Romanian translationAdi Roiban2009-09-221-5871/+4949 * Update Czech translationAndre Klapper2009-09-211-280/+7 * Update Czech translationAndre Klapper2009-09-211-6963/+8117 * Updated Bulgarian translationYavor Doganov2009-09-211-8609/+8054 * Fix distcheck errors.Matthew Barnes2009-09-201-0/+5 * Updated Greek translation.Kostas Papadimas2009-09-191-10057/+11577 * Updated Traditional Chinese translation(Hong Kong and Taiwan)Chao-Hsiung Liao2009-09-192-6606/+4926 * Updating Estonian translationMattias Põldaru2009-09-191-9/+11 * Updated Hungarian translationGabor Kelemen2009-09-191-5831/+4999 * Fix a distcheck error.Matthew Barnes2009-09-191-1/+0 * Updated Norwegian bokmål translation.Kjartan Maraas2009-09-181-1521/+1440 * Updating Estonian translationIvar Smolin2009-09-171-8/+12 * Updated Marathi TranslationsSandeep Shedmake2009-09-161-7358/+8496 * Updated Telugu Translationskrishnababu k2009-09-151-5805/+4943 * Updated Gujarati TranslationsSweta Kothari2009-09-151-104/+76 * Updated Gujarati TranslationsSweta Kothari2009-09-141-71/+78 * Updated Polish translationWadim Dziedzic2009-09-141-10833/+11497 * Updated Welsh translationIestyn Pryce2009-09-131-7416/+7878 * Updated Danish translationAsk H. Larsen2009-09-131-177/+173 * Updated Finnish translationIlkka Tuohela2009-09-131-10001/+11099 * Updating Translation for PunjabiA S Alam2009-09-131-5775/+6549 * Merged updated British English translation from gnome-2-28 branchBruce Cowan2009-09-131-10067/+11513 * Updated Danish translationKenneth Nielsen2009-09-121-8078/+9375 * Updated Gujarati TranslationsSweta Kothari2009-09-101-156/+70 * Updated Portuguese translationDuarte Loreto2009-09-101-10201/+11534 * Fix distcheck errors.Matthew Barnes2009-09-091-6/+0 * Finish killing Bonobo.Matthew Barnes2009-09-091-1/+2 * Updated Arabic translationKhaled Hosny2009-09-08