src/output/cairo.c (xr_chart_renderer): Set the chart size to 0.8 of the smallest...
[pspp] / src / ui / gui / pspp-sheet-view.h
index b13d92d6920fc089d6f15fd204821cd01008124c..92d7315b8b77e35527b4699a092182cdcae070be 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPPIRE - a graphical user interface for PSPP.
-   Copyright (C) 2011 Free Software Foundation, Inc.
+   Copyright (C) 2011, 2012, 2013 Free Software Foundation, 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
@@ -53,6 +53,25 @@ typedef enum
 GType pspp_sheet_view_grid_lines_get_type (void) G_GNUC_CONST;
 #define PSPP_TYPE_SHEET_VIEW_GRID_LINES (pspp_sheet_view_grid_lines_get_type ())
 
+/* A "special cell" is a cell that is editable or activatable.  When a row that
+ * contains a special cell is selected, the cursor is drawn around a single
+ * cell; when other rows are selected, the cursor is drawn around the entire
+ * row.
+ *
+ * With the default of "detect", whether a given row contains a special cell is
+ * detected automatically.  This is the best choice most of the time.  For
+ * sheet views that contain more than 100 columns, an explicit "yes" or "no"
+ * improves performance. */
+typedef enum
+{
+  PSPP_SHEET_VIEW_SPECIAL_CELLS_DETECT,
+  PSPP_SHEET_VIEW_SPECIAL_CELLS_YES,
+  PSPP_SHEET_VIEW_SPECIAL_CELLS_NO,
+} PsppSheetViewSpecialCells;
+
+GType pspp_sheet_view_special_cells_get_type (void) G_GNUC_CONST;
+#define PSPP_TYPE_SHEET_VIEW_SPECIAL_CELLS (pspp_sheet_view_special_cells_get_type ())
+
 typedef enum
 {
   /* drop before/after this row */
@@ -65,6 +84,13 @@ typedef enum
   PSPP_SHEET_VIEW_DROP_INTO_OR_AFTER
 } PsppSheetViewDropPosition;
 
+typedef enum
+{
+  PSPP_SHEET_SELECT_MODE_TOGGLE = 1 << 0,
+  PSPP_SHEET_SELECT_MODE_EXTEND = 1 << 1
+}
+PsppSheetSelectMode;
+
 #define PSPP_TYPE_SHEET_VIEW           (pspp_sheet_view_get_type ())
 #define PSPP_SHEET_VIEW(obj)           (G_TYPE_CHECK_INSTANCE_CAST ((obj), PSPP_TYPE_SHEET_VIEW, PsppSheetView))
 #define PSPP_SHEET_VIEW_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST ((klass), PSPP_TYPE_SHEET_VIEW, PsppSheetViewClass))
@@ -82,7 +108,9 @@ struct _PsppSheetView
 {
   GtkContainer parent;
 
-  PsppSheetViewPrivate *GSEAL (priv);
+  PsppSheetViewPrivate *priv;
+
+  gboolean dispose_has_run ;
 };
 
 struct _PsppSheetViewClass
@@ -95,18 +123,6 @@ struct _PsppSheetViewClass
   void     (* row_activated)              (PsppSheetView       *tree_view,
                                           GtkTreePath       *path,
                                           PsppSheetViewColumn *column);
-  gboolean (* test_expand_row)            (PsppSheetView       *tree_view,
-                                          GtkTreeIter       *iter,
-                                          GtkTreePath       *path);
-  gboolean (* test_collapse_row)          (PsppSheetView       *tree_view,
-                                          GtkTreeIter       *iter,
-                                          GtkTreePath       *path);
-  void     (* row_expanded)               (PsppSheetView       *tree_view,
-                                          GtkTreeIter       *iter,
-                                          GtkTreePath       *path);
-  void     (* row_collapsed)              (PsppSheetView       *tree_view,
-                                          GtkTreeIter       *iter,
-                                          GtkTreePath       *path);
   void     (* columns_changed)            (PsppSheetView       *tree_view);
   void     (* cursor_changed)             (PsppSheetView       *tree_view);
 
@@ -117,12 +133,9 @@ struct _PsppSheetViewClass
   gboolean (* select_all)                 (PsppSheetView       *tree_view);
   gboolean (* unselect_all)               (PsppSheetView       *tree_view);
   gboolean (* select_cursor_row)          (PsppSheetView       *tree_view,
-                                          gboolean           start_editing);
+                                          gboolean           start_editing,
+                                           PsppSheetSelectMode mode);
   gboolean (* toggle_cursor_row)          (PsppSheetView       *tree_view);
-  gboolean (* expand_collapse_cursor_row) (PsppSheetView       *tree_view,
-                                          gboolean           logical,
-                                          gboolean           expand,
-                                          gboolean           open_all);
   gboolean (* select_cursor_parent)       (PsppSheetView       *tree_view);
   gboolean (* start_interactive_search)   (PsppSheetView       *tree_view);
 
@@ -148,9 +161,6 @@ typedef gboolean (*PsppSheetViewSearchEqualFunc) (GtkTreeModel            *model
                                                const gchar             *key,
                                                GtkTreeIter             *iter,
                                                gpointer                 search_data);
-typedef gboolean (*PsppSheetViewRowSeparatorFunc) (GtkTreeModel      *model,
-                                                GtkTreeIter       *iter,
-                                                gpointer           data);
 typedef void     (*PsppSheetViewSearchPositionFunc) (PsppSheetView  *tree_view,
                                                   GtkWidget    *search_dialog,
                                                   gpointer      user_data);
@@ -209,9 +219,6 @@ GList                 *pspp_sheet_view_get_columns                   (PsppSheetV
 void                   pspp_sheet_view_move_column_after             (PsppSheetView               *tree_view,
                                                                    PsppSheetViewColumn         *column,
                                                                    PsppSheetViewColumn         *base_column);
-void                   pspp_sheet_view_set_expander_column           (PsppSheetView               *tree_view,
-                                                                   PsppSheetViewColumn         *column);
-PsppSheetViewColumn     *pspp_sheet_view_get_expander_column           (PsppSheetView               *tree_view);
 void                   pspp_sheet_view_set_column_drag_function      (PsppSheetView               *tree_view,
                                                                    PsppSheetViewColumnDropFunc  func,
                                                                    gpointer                   user_data,
@@ -230,20 +237,6 @@ void                   pspp_sheet_view_scroll_to_cell                (PsppSheetV
 void                   pspp_sheet_view_row_activated                 (PsppSheetView               *tree_view,
                                                                    GtkTreePath               *path,
                                                                    PsppSheetViewColumn         *column);
-void                   pspp_sheet_view_expand_all                    (PsppSheetView               *tree_view);
-void                   pspp_sheet_view_collapse_all                  (PsppSheetView               *tree_view);
-void                   pspp_sheet_view_expand_to_path                (PsppSheetView               *tree_view,
-                                                                   GtkTreePath               *path);
-gboolean               pspp_sheet_view_expand_row                    (PsppSheetView               *tree_view,
-                                                                   GtkTreePath               *path,
-                                                                   gboolean                   open_all);
-gboolean               pspp_sheet_view_collapse_row                  (PsppSheetView               *tree_view,
-                                                                   GtkTreePath               *path);
-void                   pspp_sheet_view_map_expanded_rows             (PsppSheetView               *tree_view,
-                                                                   PsppSheetViewMappingFunc     func,
-                                                                   gpointer                   data);
-gboolean               pspp_sheet_view_row_expanded                  (PsppSheetView               *tree_view,
-                                                                   GtkTreePath               *path);
 void                   pspp_sheet_view_set_reorderable               (PsppSheetView               *tree_view,
                                                                    gboolean                   reorderable);
 gboolean               pspp_sheet_view_get_reorderable               (PsppSheetView               *tree_view);
@@ -323,8 +316,6 @@ gboolean               pspp_sheet_view_get_dest_row_at_pos           (PsppSheetV
                                                                    gint                       drag_y,
                                                                    GtkTreePath              **path,
                                                                    PsppSheetViewDropPosition   *pos);
-GdkPixmap             *pspp_sheet_view_create_row_drag_icon          (PsppSheetView               *tree_view,
-                                                                   GtkTreePath               *path);
 
 /* Interactive search */
 void                       pspp_sheet_view_set_enable_search     (PsppSheetView                *tree_view,
@@ -391,39 +382,26 @@ void pspp_sheet_view_set_destroy_count_func (PsppSheetView             *tree_vie
                                           gpointer                 data,
                                           GDestroyNotify           destroy);
 
-void     pspp_sheet_view_set_fixed_height_mode (PsppSheetView          *tree_view,
-                                             gboolean              enable);
-gboolean pspp_sheet_view_get_fixed_height_mode (PsppSheetView          *tree_view);
 void     pspp_sheet_view_set_hover_selection   (PsppSheetView          *tree_view,
                                              gboolean              hover);
 gboolean pspp_sheet_view_get_hover_selection   (PsppSheetView          *tree_view);
-void     pspp_sheet_view_set_hover_expand      (PsppSheetView          *tree_view,
-                                             gboolean              expand);
-gboolean pspp_sheet_view_get_hover_expand      (PsppSheetView          *tree_view);
 void     pspp_sheet_view_set_rubber_banding    (PsppSheetView          *tree_view,
                                              gboolean              enable);
 gboolean pspp_sheet_view_get_rubber_banding    (PsppSheetView          *tree_view);
 
 gboolean pspp_sheet_view_is_rubber_banding_active (PsppSheetView       *tree_view);
 
-PsppSheetViewRowSeparatorFunc pspp_sheet_view_get_row_separator_func (PsppSheetView               *tree_view);
-void                        pspp_sheet_view_set_row_separator_func (PsppSheetView                *tree_view,
-                                                                 PsppSheetViewRowSeparatorFunc func,
-                                                                 gpointer                    data,
-                                                                 GDestroyNotify              destroy);
-
 PsppSheetViewGridLines        pspp_sheet_view_get_grid_lines         (PsppSheetView                *tree_view);
 void                        pspp_sheet_view_set_grid_lines         (PsppSheetView                *tree_view,
                                                                  PsppSheetViewGridLines        grid_lines);
-gboolean                    pspp_sheet_view_get_enable_tree_lines  (PsppSheetView                *tree_view);
-void                        pspp_sheet_view_set_enable_tree_lines  (PsppSheetView                *tree_view,
-                                                                 gboolean                    enabled);
-void                        pspp_sheet_view_set_show_expanders     (PsppSheetView                *tree_view,
-                                                                 gboolean                    enabled);
-gboolean                    pspp_sheet_view_get_show_expanders     (PsppSheetView                *tree_view);
-void                        pspp_sheet_view_set_level_indentation  (PsppSheetView                *tree_view,
-                                                                 gint                        indentation);
-gint                        pspp_sheet_view_get_level_indentation  (PsppSheetView                *tree_view);
+
+PsppSheetViewSpecialCells pspp_sheet_view_get_special_cells (PsppSheetView                *tree_view);
+void                        pspp_sheet_view_set_special_cells (PsppSheetView                *tree_view,
+                                                               PsppSheetViewSpecialCells);
+
+int           pspp_sheet_view_get_fixed_height (const PsppSheetView *);
+void          pspp_sheet_view_set_fixed_height (PsppSheetView *,
+                                                int fixed_height);
 
 /* Convenience functions for setting tooltips */
 void          pspp_sheet_view_set_tooltip_row    (PsppSheetView       *tree_view,
@@ -445,6 +423,9 @@ void          pspp_sheet_view_set_tooltip_column (PsppSheetView       *tree_view
                                                gint               column);
 gint          pspp_sheet_view_get_tooltip_column (PsppSheetView       *tree_view);
 
+void pspp_sheet_view_stop_editing (PsppSheetView *tree_view,
+                                   gboolean     cancel_editing);
+
 G_END_DECLS