sheet->sheet_window = NULL;
sheet->entry_widget = NULL;
- sheet->entry_container = NULL;
sheet->entry_handler_id = 0;
sheet->button = NULL;
/* create sheet entry */
- sheet->entry_type = 0;
+ sheet->entry_type = GTK_TYPE_ENTRY;
create_sheet_entry (sheet);
/* create global selection button */
* Returns: the new sheet widget
*/
GtkWidget *
-gtk_sheet_new (void *vgeo, void *hgeo, GSheetModel *model)
+gtk_sheet_new (GSheetModel *model)
{
GtkWidget *widget = g_object_new (GTK_TYPE_SHEET,
"model", model,
if (sheet->vaxis) g_object_unref (sheet->vaxis);
if (sheet->haxis) g_object_unref (sheet->haxis);
- g_object_unref (sheet->entry_container);
- sheet->entry_container = NULL;
-
g_object_unref (sheet->button);
sheet->button = NULL;
sheet->active_cell.row = -1;
sheet->active_cell.col = -1;
- text = gtk_entry_get_text (GTK_ENTRY (gtk_sheet_get_entry (sheet)));
-
-
+ text = gtk_entry_get_text (gtk_sheet_get_entry (sheet));
if (text && strlen (text) > 0)
{
GTK_WIDGET_SET_FLAGS (GTK_WIDGET (sheet->entry_widget), GTK_VISIBLE);
- sheet_entry = GTK_ENTRY (gtk_sheet_get_entry (sheet));
+ sheet_entry = gtk_sheet_get_entry (sheet);
gtk_sheet_get_attributes (sheet, row, col, &attributes);
if ( ! text )
text = g_strdup ("");
- gtk_entry_set_visibility (GTK_ENTRY (sheet_entry), attributes.is_visible);
+ gtk_entry_set_visibility (sheet_entry, attributes.is_visible);
if ( GTK_IS_ENTRY (sheet_entry))
{
const gchar *old_text = gtk_entry_get_text (GTK_ENTRY (sheet_entry));
if (strcmp (old_text, text) != 0)
- gtk_entry_set_text (GTK_ENTRY (sheet_entry), text);
+ gtk_entry_set_text (sheet_entry, text);
switch (attributes.justification)
{
gtk_sheet_size_allocate_entry (sheet);
+ gtk_widget_set_sensitive (GTK_WIDGET (sheet_entry),
+ g_sheet_model_is_editable (sheet->model,
+ row, col));
gtk_widget_map (sheet->entry_widget);
gtk_widget_grab_focus (GTK_WIDGET (sheet_entry));
if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet))) return;
if (!GTK_WIDGET_MAPPED (GTK_WIDGET (sheet))) return;
- sheet_entry = GTK_ENTRY (gtk_sheet_get_entry (sheet));
+ sheet_entry = gtk_sheet_get_entry (sheet);
if ( ! gtk_sheet_get_attributes (sheet, sheet->active_cell.row,
sheet->active_cell.col,
gtk_widget_unparent (sheet->entry_widget);
}
- if (sheet->entry_type)
- {
- sheet->entry_container = g_object_new (sheet->entry_type, NULL);
- g_object_ref_sink (sheet->entry_container);
- sheet->entry_widget = gtk_sheet_get_entry (sheet);
-
- if ( NULL == sheet->entry_widget)
- {
- g_warning ("Entry type is %s. It must be GtkEntry subclass, or a widget containing one. "
- "Using default", g_type_name (sheet->entry_type));
- g_object_unref (sheet->entry_container);
- sheet->entry_widget = sheet->entry_container = gtk_entry_new ();
- }
- else
- {
- sheet->entry_widget = sheet->entry_container ;
- }
- }
- else
- {
- sheet->entry_widget = sheet->entry_container = gtk_entry_new ();
- g_object_ref_sink (sheet->entry_container);
- }
+ sheet->entry_widget = g_object_new (sheet->entry_type, NULL);
+ g_object_ref_sink (sheet->entry_widget);
gtk_widget_size_request (sheet->entry_widget, NULL);
}
}
-GtkWidget *
+
+GtkEntry *
gtk_sheet_get_entry (GtkSheet *sheet)
{
- GtkWidget *parent;
- GtkWidget *entry = NULL;
+ GtkWidget *w = sheet->entry_widget;
g_return_val_if_fail (sheet != NULL, NULL);
g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL);
g_return_val_if_fail (sheet->entry_widget != NULL, NULL);
- if (GTK_IS_ENTRY (sheet->entry_container))
- return (sheet->entry_container);
-
- parent = sheet->entry_container;
-
- if (GTK_IS_CONTAINER (parent))
+ while (! GTK_IS_ENTRY (w))
{
- gtk_container_forall (GTK_CONTAINER (parent), find_entry, &entry);
-
- if (GTK_IS_ENTRY (entry))
- return entry;
- }
-
- if (!GTK_IS_ENTRY (entry)) return NULL;
+ GtkWidget *entry = NULL;
- return (entry);
+ if (GTK_IS_CONTAINER (w))
+ {
+ gtk_container_forall (GTK_CONTAINER (w), find_entry, &entry);
-}
+ if (NULL == entry)
+ break;
-GtkWidget *
-gtk_sheet_get_entry_widget (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, NULL);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL);
- g_return_val_if_fail (sheet->entry_widget != NULL, NULL);
+ w = entry;
+ }
+ }
- return (sheet->entry_widget);
+ return GTK_ENTRY (w);
}
if (sheet->button && sheet->button->parent)
(* callback) (sheet->button, callback_data);
- if (sheet->entry_container && GTK_IS_CONTAINER (sheet->entry_container))
- (* callback) (sheet->entry_container, callback_data);
+ if (sheet->entry_widget && GTK_IS_CONTAINER (sheet->entry_widget))
+ (* callback) (sheet->entry_widget, callback_data);
}