Commit 53a2ffc0 authored by Andreas J. Guelzow 's avatar Andreas J. Guelzow

Add single sample t-test.

2012-06-11  Andreas J. Guelzow <aguelzow@pyrshep.ca>

	* component/Gnumeric-embed.xml.in: add ToolsOneMeanTest
	* src/GNOME_Gnumeric-gtk.xml.in: ditto
	* src/wbc-gtk-actions.c (cb_tools_one_mean_test): new
	(actions): add ToolsOneMeanTest

2012-06-11  Andreas J. Guelzow <aguelzow@pyrshep.ca>

	* analysis-one-mean-test.c: new
	* analysis-one-mean-test.h: new
	* Makefile.am: add the above

2012-06-11  Andreas J. Guelzow <aguelzow@pyrshep.ca>

	* one-mean-test.ui: new
	* dialog-analysis-tool-one-mean.c: new
	* Makefile.am: add the above
	* help.h (GNUMERIC_HELP_LINK_ONE_MEAN): new
	* dialogs.h (dialog_one_mean_test_tool): new
parent 215c8314
2012-06-11 Andreas J. Guelzow <aguelzow@pyrshep.ca>
* component/Gnumeric-embed.xml.in: add ToolsOneMeanTest
* src/GNOME_Gnumeric-gtk.xml.in: ditto
* src/wbc-gtk-actions.c (cb_tools_one_mean_test): new
(actions): add ToolsOneMeanTest
2012-06-10 Jean Brefort <jean.brefort@normalesup.org>
* src/wbc-gtk.c (cb_scroll_wheel): make mouse wheel scrolling work
......
......@@ -20,6 +20,7 @@ Andreas:
* Fix space handling on ODF import. [Part of #676535]
* Fix TIME and add ODF.TIME. [#676596]
* Fix Wilcoxon Mann Whitney Test in the presence of empty cells.
* Add single sample t-test.
Jean:
* Fix graph series headers when a multiple selection is used. [#675913]
......
......@@ -231,6 +231,7 @@
<separator/>
<menu name="StatisticsOneSample" action="MenuStatisticsOneSample">
<menuitem action="ToolsNormalityTests"/>
<menuitem action="ToolsOneMeanTest"/>
<menu name="ToolOneMedian" action="MenuToolOneMedian">
<menuitem action="ToolsOneMedianSignTest"/>
<menuitem action="ToolsOneMedianWilcoxonSignedRank"/>
......
2012-06-11 Andreas J. Guelzow <aguelzow@pyrshep.ca>
* POTFILES.in: add src/dialogs/dialog-analysis-tool-one-mean.c,
src/dialogs/one-mean-test.ui and src/tools/analysis-one-mean-test.c
2012-05-01 Andreas J. Guelzow <aguelzow@pyrshep.ca>
* README.translators: add information
......
......@@ -81,6 +81,7 @@ src/dialogs/dialog-analysis-tool-chi-squared.c
src/dialogs/dialog-analysis-tool-frequency.c
src/dialogs/dialog-analysis-tool-kaplan-meier.c
src/dialogs/dialog-analysis-tool-normality.c
src/dialogs/dialog-analysis-tool-one-mean.c
src/dialogs/dialog-analysis-tool-principal-components.c
src/dialogs/dialog-analysis-tool-sign-test.c
src/dialogs/dialog-analysis-tool-wilcoxon-mann-whitney.c
......@@ -185,6 +186,7 @@ src/dialogs/dialog-zoom.c
[type: gettext/glade]src/dialogs/merge.ui
[type: gettext/glade]src/dialogs/moving-averages.ui
[type: gettext/glade]src/dialogs/normality-tests.ui
[type: gettext/glade]src/dialogs/one-mean-test.ui
[type: gettext/glade]src/dialogs/paste-special.ui
[type: gettext/glade]src/dialogs/plugin-manager.ui
[type: gettext/glade]src/dialogs/preferences.ui
......@@ -287,6 +289,7 @@ src/tools/analysis-frequency.c
src/tools/analysis-histogram.c
src/tools/analysis-kaplan-meier.c
src/tools/analysis-normality.c
src/tools/analysis-one-mean-test.c
src/tools/analysis-principal-components.c
src/tools/analysis-sign-test.c
src/tools/analysis-signed-rank-test.c
......
2012-06-11 Andreas J. Guelzow <aguelzow@pyrshep.ca>
* POTFILES.in: add src/dialogs/dialog-analysis-tool-one-mean.c,
src/dialogs/one-mean-test.ui and src/tools/analysis-one-mean-test.c
2012-04-21 Morten Welinder <terra@gnome.org>
* Release 1.11.3
......
......@@ -140,6 +140,7 @@ src/dialogs/dialog-analysis-tool-chi-squared.c
src/dialogs/dialog-analysis-tool-frequency.c
src/dialogs/dialog-analysis-tool-kaplan-meier.c
src/dialogs/dialog-analysis-tool-normality.c
src/dialogs/dialog-analysis-tool-one-mean.c
src/dialogs/dialog-analysis-tool-principal-components.c
src/dialogs/dialog-analysis-tool-sign-test.c
src/dialogs/dialog-analysis-tool-wilcoxon-mann-whitney.c
......@@ -244,6 +245,7 @@ src/dialogs/dialog-zoom.c
[type: gettext/glade]src/dialogs/merge.ui
[type: gettext/glade]src/dialogs/moving-averages.ui
[type: gettext/glade]src/dialogs/normality-tests.ui
[type: gettext/glade]src/dialogs/one-mean-test.ui
[type: gettext/glade]src/dialogs/paste-special.ui
[type: gettext/glade]src/dialogs/plugin-manager.ui
[type: gettext/glade]src/dialogs/preferences.ui
......@@ -346,6 +348,7 @@ src/tools/analysis-frequency.c
src/tools/analysis-histogram.c
src/tools/analysis-kaplan-meier.c
src/tools/analysis-normality.c
src/tools/analysis-one-mean-test.c
src/tools/analysis-principal-components.c
src/tools/analysis-sign-test.c
src/tools/analysis-signed-rank-test.c
......
......@@ -236,6 +236,7 @@
<separator/>
<menu name="StatisticsOneSample" action="MenuStatisticsOneSample">
<menuitem action="ToolsNormalityTests"/>
<menuitem action="ToolsOneMeanTest"/>
<menu name="ToolOneMedian" action="MenuToolOneMedian">
<menuitem action="ToolsOneMedianSignTest"/>
<menuitem action="ToolsOneMedianWilcoxonSignedRank"/>
......
2012-06-11 Andreas J. Guelzow <aguelzow@pyrshep.ca>
* one-mean-test.ui: new
* dialog-analysis-tool-one-mean.c: new
* Makefile.am: add the above
* help.h (GNUMERIC_HELP_LINK_ONE_MEAN): new
* dialogs.h (dialog_one_mean_test_tool): new
2012-05-29 Morten Welinder <terra@gnome.org>
* dialog-cell-format-cond.c (c_fmt_dialog_get_condition): Use
......
......@@ -31,6 +31,7 @@ base_files = \
dialog-analysis-tool-frequency.c \
dialog-analysis-tool-kaplan-meier.c \
dialog-analysis-tool-normality.c \
dialog-analysis-tool-one-mean.c \
dialog-analysis-tool-principal-components.c \
dialog-analysis-tool-sign-test.c \
dialog-analysis-tool-wilcoxon-mann-whitney.c \
......@@ -145,6 +146,7 @@ embedded_uis = \
merge.ui \
moving-averages.ui \
normality-tests.ui \
one-mean-test.ui \
paste-special.ui \
plugin-manager.ui \
preferences.ui \
......
/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* dialog-analysis-tool-one-mean.c:
*
* Authors:
* Andreas J. Guelzow <aguelzow@pyrshep.ca>
*
* (C) Copyright 2012 by Andreas J. Guelzow <aguelzow@pyrshep.ca>
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <gnumeric-config.h>
#include <glib/gi18n-lib.h>
#include <gnumeric.h>
#include "dialogs.h"
#include "analysis-one-mean-test.h"
#include "analysis-tools.h"
#include <workbook.h>
#include <workbook-control.h>
#include <wbc-gtk.h>
#include <workbook-view.h>
#include <gui-util.h>
#include <parse-util.h>
#include <gnm-format.h>
#include <tool-dialogs.h>
#include <dao-gui-utils.h>
#include <sheet.h>
#include <expr.h>
#include <number-match.h>
#include <ranges.h>
#include <selection.h>
#include <value.h>
#include <commands.h>
#include "help.h"
#include <widgets/gnm-dao.h>
#include <widgets/gnumeric-expr-entry.h>
#include <string.h>
#include <gtk/gtk.h>
#define ONE_MEAN_TEST_KEY "analysistools-one-mean-test-dialog"
static char const * const grouped_by_group[] = {
"grouped_by_row",
"grouped_by_col",
"grouped_by_area",
NULL
};
typedef struct {
GenericToolState base;
GtkWidget *alpha_entry;
GtkWidget *mean_entry;
} OneeMeanTestToolState;
/**
* one_mean_test_tool_update_common_sensitivity_cb:
* @dummy:
* @state:
*
* Update the dialog widgets sensitivity
**/
static gboolean
one_mean_test_tool_update_common_sensitivity_cb (OneeMeanTestToolState *state)
{
gnm_float alpha;
gnm_float mean;
gboolean err;
/* Checking Mean*/
err = entry_to_float
(GTK_ENTRY (state->mean_entry), &mean, FALSE);
if (err) {
gtk_label_set_text (GTK_LABEL (state->base.warning),
_("The predicted mean should be a number."));
gtk_widget_set_sensitive (state->base.ok_button, FALSE);
return FALSE;
}
/* Checking Alpha*/
alpha = gtk_spin_button_get_value
(GTK_SPIN_BUTTON (state->alpha_entry));
if (!(alpha > 0 && alpha < 1)) {
gtk_label_set_text (GTK_LABEL (state->base.warning),
_("The alpha value should "
"be a number between 0 and 1."));
gtk_widget_set_sensitive (state->base.ok_button, FALSE);
return FALSE;
}
/* Checking Output Page */
if (!gnm_dao_is_ready (GNM_DAO (state->base.gdao))) {
gtk_label_set_text (GTK_LABEL (state->base.warning),
_("The output specification "
"is invalid."));
gtk_widget_set_sensitive (state->base.ok_button, FALSE);
return FALSE;
}
return TRUE;
}
/************************************************************************************/
/**
* one_mean_test_tool_ok_clicked_cb:
* @button:
* @state:
*
* Retrieve the information from the dialog and call the one_mean_test_tool.
* Note that we assume that the ok_button is only active if the entry fields
* contain sensible data.
**/
static void
one_mean_test_tool_ok_clicked_cb (G_GNUC_UNUSED GtkWidget *button,
OneeMeanTestToolState *state)
{
data_analysis_output_t *dao;
GtkWidget *w;
analysis_tools_data_one_mean_test_t *data;
data = g_new0 (analysis_tools_data_one_mean_test_t, 1);
dao = parse_output ((GenericToolState *)state, NULL);
data->base.input = gnm_expr_entry_parse_as_list (
GNM_EXPR_ENTRY (state->base.input_entry), state->base.sheet);
data->base.group_by = gnm_gui_group_value (state->base.gui, grouped_by_group);
w = go_gtk_builder_get_widget (state->base.gui, "labels_button");
data->base.labels = gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON (w));
entry_to_float
(GTK_ENTRY (state->mean_entry), &data->mean, FALSE);
data->alpha = gtk_spin_button_get_value
(GTK_SPIN_BUTTON (state->alpha_entry));
if (!cmd_analysis_tool (WORKBOOK_CONTROL (state->base.wbcg),
state->base.sheet,
dao, data, analysis_tool_one_mean_test_engine,
TRUE))
gtk_widget_destroy (state->base.dialog);
return;
}
/**
* one_mean_test_tool_update_sensitivity_cb:
* @dummy:
* @state:
*
* Update the dialog widgets sensitivity
**/
static void
one_mean_test_tool_update_sensitivity_cb (G_GNUC_UNUSED GtkWidget *dummy,
OneeMeanTestToolState *state)
{
GSList *input_range;
/* Checking first input range*/
input_range = gnm_expr_entry_parse_as_list
(GNM_EXPR_ENTRY (state->base.input_entry),
state->base.sheet);
if (input_range == NULL) {
gtk_label_set_text (GTK_LABEL (state->base.warning),
(state->base.input_entry_2 == NULL)
? _("The input range is invalid.")
: _("The first input range is invalid."));
gtk_widget_set_sensitive (state->base.ok_button, FALSE);
return;
} else
range_list_destroy (input_range);
if (one_mean_test_tool_update_common_sensitivity_cb (state)) {
gtk_label_set_text (GTK_LABEL (state->base.warning), "");
gtk_widget_set_sensitive (state->base.ok_button, TRUE);
}
}
/**
* dialog_one_mean_test_tool:
*
**/
int
dialog_one_mean_test_tool (WBCGtk *wbcg, Sheet *sheet)
{
char const * plugins[] = { "Gnumeric_fnstat",
"Gnumeric_fnlogical",
"Gnumeric_fnmath",
"Gnumeric_fninfo",
NULL};
OneeMeanTestToolState *state;
if ((wbcg == NULL) ||
gnm_check_for_plugins_missing (plugins, wbcg_toplevel (wbcg)))
return 1;
/* Only pop up one copy per workbook */
if (gnumeric_dialog_raise_if_exists (wbcg, ONE_MEAN_TEST_KEY))
return 0;
state = g_new0 (OneeMeanTestToolState, 1);
if (dialog_tool_init (&state->base, wbcg, sheet,
GNUMERIC_HELP_LINK_ONE_MEAN,
"one-mean-test.ui", "One-Mean-Test",
_("Could not create the Student-t Test Tool dialog."),
ONE_MEAN_TEST_KEY,
G_CALLBACK (one_mean_test_tool_ok_clicked_cb),
NULL,
G_CALLBACK (one_mean_test_tool_update_sensitivity_cb),
0))
return 0;
state->alpha_entry = tool_setup_update
(&state->base, "alpha-entry",
G_CALLBACK (one_mean_test_tool_update_sensitivity_cb),
state);
state->mean_entry = tool_setup_update
(&state->base, "mean-entry",
G_CALLBACK (one_mean_test_tool_update_sensitivity_cb),
state);
int_to_entry (GTK_ENTRY (state->mean_entry), 0);
float_to_entry (GTK_ENTRY (state->alpha_entry), 0.05);
gnm_dao_set_put (GNM_DAO (state->base.gdao), TRUE, TRUE);
one_mean_test_tool_update_sensitivity_cb (NULL, state);
tool_load_selection ((GenericToolState *)state, TRUE);
return 0;
}
......@@ -100,6 +100,7 @@ int dialog_histogram_tool (WBCGtk *wbcg, Sheet *sheet);
int dialog_frequency_tool (WBCGtk *wbcg, Sheet *sheet);
int dialog_kaplan_meier_tool (WBCGtk *wbcg, Sheet *sheet);
int dialog_normality_tool (WBCGtk *wbcg, Sheet *sheet);
int dialog_one_mean_test_tool (WBCGtk *wbcg, Sheet *sheet);
int dialog_chi_square_tool (WBCGtk *wbcg, Sheet *sheet, gboolean independence);
int dialog_principal_components_tool (WBCGtk *wbcg, Sheet *sheet);
int dialog_wilcoxon_m_w_tool (WBCGtk *wbcg, Sheet *sheet);
......
......@@ -161,6 +161,9 @@
/* dialog-analysis-tool-kaplan-meier.c */
#define GNUMERIC_HELP_LINK_KAPLAN_MEIER "kaplan-meier-tool"
/* dialog-analysis-tool-sign-test.c */
#define GNUMERIC_HELP_LINK_ONE_MEAN "one-mean-tool"
/* dialog-analysis-tool-normality.c */
#define GNUMERIC_HELP_LINK_NORMALITY "normality-tool"
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkDialog" id="One-Mean-Test">
<property name="can_focus">False</property>
<property name="border_width">5</property>
<property name="title" translatable="yes">Student-t Test</property>
<property name="type_hint">normal</property>
<child internal-child="vbox">
<object class="GtkBox" id="vbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="helpbutton">
<property name="label">gtk-help</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="cancelbutton">
<property name="label">gtk-cancel</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="okbutton">
<property name="label">gtk-ok</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="has_default">True</property>
<property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkNotebook" id="notebook1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="border_width">5</property>
<child>
<object class="GtkGrid" id="input-grid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">12</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<object class="GtkLabel" id="var1-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_Input range:</property>
<property name="use_underline">True</property>
<property name="justify">right</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Grouped by:</property>
<property name="justify">center</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="grouped_by_col">
<property name="label" translatable="yes" context="groupby" comments="Group by Columns">_Columns</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="grouped_by_row">
<property name="label" translatable="yes" context="groupby" comments="Group by Rows">_Rows</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
<property name="group">grouped_by_col</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="grouped_by_area">
<property name="label" translatable="yes">_Areas</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
<property name="group">grouped_by_col</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="labels_button">
<property name="label" translatable="yes">_Labels</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_action_appearance">False</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">4</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
</child>
<child type="tab">
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Input</property>
</object>
<packing>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="test-grid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">12</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkLabel" id="mean-entry-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_Predicted Mean:</property>
<property name="use_underline">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_Alpha:</property>
<property name="use_underline">True</property>
<property name="justify">right</property>
<property name="mnemonic_widget">alpha-entry</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="alpha-entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char"></property>
<property name="invisible_char_set">True</property>
<property name="adjustment">adjustment1</property>
<property name="climb_rate">0.01</property>
<property name="digits">2</property>
<property name="numeric">True</property>
<property name="update_policy">if-valid</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="mean-entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char"></property>
<property name="text">0</property>
<property name="invisible_char_set">True</property>
<property name="caps_lock_warning">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can_fo