/* SciGraphica - Scientific graphics and data manipulation
* Copyright (C) 2001 Adrian E. Feiguin <feiguin@ifir.edu.ar>
*
* 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 <gdk/gdk.h>
#include <gtk/gtk.h>
#include <gtkextra/gtkextra.h>
#include "sg_worksheet_tools.h"
#include "sg.h"
#include "sg_dialogs.h"
#include "sg_formula_dialog.h"
#include "sg_worksheet.h"
#include "sg_clipboard.h"
#include "sg_menu.h"
#include "../pixmaps/pixmaps.h"
static void worksheet_import (GtkWidget *widget, gpointer data);
static void worksheet_export (GtkWidget *widget, gpointer data);
static void worksheet_add_column (GtkWidget *widget, gpointer data);
static void worksheet_set_column (GtkWidget *widget, gpointer data);
static void worksheet_cut (GtkWidget *widget, gpointer data);
static void worksheet_copy (GtkWidget *widget, gpointer data);
static void worksheet_paste (GtkWidget *widget, gpointer data);
static void worksheet_recalc (GtkWidget *widget, gpointer data);
GtkWidget *
sg_worksheet_build_toolbar(SGworksheet *worksheet)
{
GnomeUIInfo worksheet_toolbar[] =
{
GNOMEUIINFO_ITEM_DATA("Import", "Import file", worksheet_import,
worksheet,
open_xpm),
GNOMEUIINFO_ITEM_DATA("Save", "Save worksheet", worksheet_export,
worksheet,
save_xpm),
GNOMEUIINFO_SEPARATOR,
GNOMEUIINFO_ITEM_DATA("Cut", "Cut", worksheet_cut,
worksheet,
cut_xpm),
GNOMEUIINFO_ITEM_DATA("Copy", "Copy", worksheet_copy,
worksheet,
copy_xpm),
GNOMEUIINFO_ITEM_DATA("Paste", "Paste", worksheet_paste,
worksheet,
paste_xpm),
GNOMEUIINFO_SEPARATOR,
GNOMEUIINFO_ITEM_DATA("Column", "Add new column", worksheet_add_column,
worksheet,
add_column_xpm),
GNOMEUIINFO_ITEM_DATA("Values", "Set column values", worksheet_set_column,
worksheet,
set_column_xpm),
GNOMEUIINFO_ITEM_DATA("Recalc", "Recalculate selected cells", worksheet_recalc,
worksheet,
reload_xpm),
GNOMEUIINFO_END
};
#ifdef WITH_GNOME
gnome_app_create_toolbar(GNOME_APP(worksheet) , worksheet_toolbar);
#else
sg_ui_create_toolbar(GTK_BIN(worksheet)->child , worksheet_toolbar);
#endif /* WITH_GNOME */
return NULL;
}
static void
worksheet_import (GtkWidget *widget, gpointer data)
{
active_worksheet = (SGworksheet *) data;
sg_worksheet_import();
}
static void
worksheet_export (GtkWidget *widget, gpointer data)
{
active_worksheet = (SGworksheet *) data;
sg_worksheet_export();
}
static void
worksheet_add_column (GtkWidget *widget, gpointer data)
{
active_worksheet = (SGworksheet *) data;
sg_worksheet_add_columns(active_worksheet, 1);
gtk_sheet_select_column(GTK_SHEET(active_worksheet->sheet),
GTK_SHEET(active_worksheet->sheet)->maxcol);
}
static void
worksheet_set_column (GtkWidget *widget, gpointer data)
{
GtkSheet *sheet;
active_worksheet = (SGworksheet *) data;
sheet = GTK_SHEET(active_worksheet->sheet);
if(sheet->state == GTK_SHEET_COLUMN_SELECTED)
sg_formula_dialog(active_worksheet, sheet->range.col0);
}
static void
worksheet_cut (GtkWidget *widget, gpointer data)
{
active_worksheet = (SGworksheet *) data;
sg_clipboard_copy(active_worksheet,TRUE);
}
static void
worksheet_copy (GtkWidget *widget, gpointer data)
{
active_worksheet = (SGworksheet *) data;
sg_clipboard_copy(active_worksheet,FALSE);
}
static void
worksheet_paste (GtkWidget *widget, gpointer data)
{
active_worksheet = (SGworksheet *) data;
sg_clipboard_paste(active_worksheet);
}
static void
worksheet_recalc (GtkWidget *widget, gpointer data)
{
GtkSheet *sheet;
active_worksheet = (SGworksheet *) data;
sheet=GTK_SHEET(active_worksheet->sheet);
sg_worksheet_unupdate_exp_range(active_worksheet,
sheet->range.row0,sheet->range.rowi,
sheet->range.col0,sheet->range.coli);
sg_worksheet_update_exp_range(active_worksheet,
sheet->range.row0,sheet->range.rowi,
sheet->range.col0,sheet->range.coli);
}
syntax highlighted by Code2HTML, v. 0.9.1