00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef ABI_WIDGET_H
00024 #define ABI_WIDGET_H
00025
00026 #include "ut_compiler.h"
00027 ABI_W_NO_CONST_QUAL
00028 #include <gtk/gtk.h>
00029 ABI_W_POP
00030 #include <gsf/gsf-input.h>
00031 #include <gsf/gsf-output.h>
00032
00033 G_BEGIN_DECLS
00034
00035
00036
00037
00038
00039 #include <glib-object.h>
00040
00041 #ifdef G_ENABLE_DEBUG
00042 #define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
00043 #define g_marshal_value_peek_char(v) g_value_get_char (v)
00044 #define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
00045 #define g_marshal_value_peek_int(v) g_value_get_int (v)
00046 #define g_marshal_value_peek_uint(v) g_value_get_uint (v)
00047 #define g_marshal_value_peek_long(v) g_value_get_long (v)
00048 #define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
00049 #define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
00050 #define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
00051 #define g_marshal_value_peek_enum(v) g_value_get_enum (v)
00052 #define g_marshal_value_peek_flags(v) g_value_get_flags (v)
00053 #define g_marshal_value_peek_float(v) g_value_get_float (v)
00054 #define g_marshal_value_peek_double(v) g_value_get_double (v)
00055 #define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
00056 #define g_marshal_value_peek_param(v) g_value_get_param (v)
00057 #define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
00058 #define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
00059 #define g_marshal_value_peek_object(v) g_value_get_object (v)
00060 #else
00061
00062
00063
00064
00065 #define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
00066 #define g_marshal_value_peek_char(v) (v)->data[0].v_int
00067 #define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
00068 #define g_marshal_value_peek_int(v) (v)->data[0].v_int
00069 #define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
00070 #define g_marshal_value_peek_long(v) (v)->data[0].v_long
00071 #define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
00072 #define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
00073 #define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
00074 #define g_marshal_value_peek_enum(v) (v)->data[0].v_long
00075 #define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong
00076 #define g_marshal_value_peek_float(v) (v)->data[0].v_float
00077 #define g_marshal_value_peek_double(v) (v)->data[0].v_double
00078 #define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
00079 #define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
00080 #define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
00081 #define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
00082 #define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
00083 #endif
00084
00085
00086
00087
00088 #define ABI_TYPE_WIDGET (abi_widget_get_type ())
00089 #define ABI_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), ABI_TYPE_WIDGET, AbiWidget))
00090 #define IS_ABI_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), ABI_TYPE_WIDGET))
00091 #define IS_ABI_WIDGET_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ABI_TYPE_WIDGET))
00092 #define ABI_WIDGET_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ABI_TYPE_WIDGET, AbiWidgetClass))
00093
00094
00095 typedef struct _AbiWidget AbiWidget;
00096 typedef struct _AbiWidgetClass AbiWidgetClass;
00097 typedef struct _AbiPrivData AbiPrivData;
00098
00099
00100
00101
00102
00103 typedef gboolean (*Abi_EditMethod) (AbiWidget *, const char *, gint32, gint32);
00104 typedef gboolean (*Abi_Void__Bool_EditMethod) (AbiWidget *);
00105 typedef gboolean (*Abi_Int_Int__Bool_EditMethod) (AbiWidget *, gint32, gint32);
00106 typedef gboolean (*Abi_CharPtr__Bool_EditMethod) (AbiWidget *, const char *);
00107
00108
00109
00110
00111
00112 typedef gboolean (*AbiSignal) (AbiWidget *, gpointer closure);
00113
00114 struct _AbiWidget
00115 {
00116 GtkBin bin;
00117 GtkWidget * child;
00118
00119 AbiPrivData * priv;
00120 };
00121
00122 struct _AbiWidgetClass {
00123 GtkBinClass parent_class;
00124
00125
00126 gboolean (*invoke) (AbiWidget *, const char * mthdName);
00127 gboolean (*invoke_ex) (AbiWidget *, const char * mthdName,
00128 const char * data, gint32 x, gint32 y);
00129
00130
00131 Abi_Void__Bool_EditMethod align_center;
00132 Abi_Void__Bool_EditMethod align_justify;
00133 Abi_Void__Bool_EditMethod align_left;
00134 Abi_Void__Bool_EditMethod align_right;
00135
00136 Abi_Void__Bool_EditMethod copy;
00137 Abi_Void__Bool_EditMethod cut;
00138 Abi_Void__Bool_EditMethod paste;
00139 Abi_Void__Bool_EditMethod paste_special;
00140 Abi_Void__Bool_EditMethod select_all;
00141 Abi_Void__Bool_EditMethod select_block;
00142 Abi_Void__Bool_EditMethod select_line;
00143 Abi_Void__Bool_EditMethod select_word;
00144
00145 Abi_Void__Bool_EditMethod undo;
00146 Abi_Void__Bool_EditMethod redo;
00147
00148 Abi_CharPtr__Bool_EditMethod insert_data;
00149 Abi_Void__Bool_EditMethod insert_space;
00150
00151 Abi_Void__Bool_EditMethod delete_bob;
00152 Abi_Void__Bool_EditMethod delete_bod;
00153 Abi_Void__Bool_EditMethod delete_bol;
00154 Abi_Void__Bool_EditMethod delete_bow;
00155 Abi_Void__Bool_EditMethod delete_eob;
00156 Abi_Void__Bool_EditMethod delete_eod;
00157 Abi_Void__Bool_EditMethod delete_eol;
00158 Abi_Void__Bool_EditMethod delete_eow;
00159 Abi_Void__Bool_EditMethod delete_left;
00160 Abi_Void__Bool_EditMethod delete_right;
00161
00162 Abi_Void__Bool_EditMethod edit_header;
00163 Abi_Void__Bool_EditMethod edit_footer;
00164
00165 Abi_Void__Bool_EditMethod file_open;
00166 Abi_Void__Bool_EditMethod file_save;
00167
00168 Abi_Void__Bool_EditMethod remove_header;
00169 Abi_Void__Bool_EditMethod remove_footer;
00170
00171 Abi_Void__Bool_EditMethod save_immediate;
00172
00173 Abi_Void__Bool_EditMethod select_bob;
00174 Abi_Void__Bool_EditMethod select_bod;
00175 Abi_Void__Bool_EditMethod select_bol;
00176 Abi_Void__Bool_EditMethod select_bow;
00177 Abi_Void__Bool_EditMethod select_eob;
00178 Abi_Void__Bool_EditMethod select_eod;
00179 Abi_Void__Bool_EditMethod select_eol;
00180 Abi_Void__Bool_EditMethod select_eow;
00181 Abi_Void__Bool_EditMethod select_left;
00182 Abi_Void__Bool_EditMethod select_next_line;
00183 Abi_Void__Bool_EditMethod select_page_down;
00184 Abi_Void__Bool_EditMethod select_page_up;
00185 Abi_Void__Bool_EditMethod select_prev_line;
00186 Abi_Void__Bool_EditMethod select_right;
00187 Abi_Void__Bool_EditMethod select_screen_down;
00188 Abi_Void__Bool_EditMethod select_screen_up;
00189 Abi_Int_Int__Bool_EditMethod select_to_xy;
00190
00191 Abi_Void__Bool_EditMethod toggle_bold;
00192 Abi_Void__Bool_EditMethod toggle_underline;
00193 Abi_Void__Bool_EditMethod toggle_bottomline;
00194 Abi_Void__Bool_EditMethod toggle_insert_mode;
00195 Abi_Void__Bool_EditMethod toggle_italic;
00196 Abi_Void__Bool_EditMethod toggle_overline;
00197 Abi_Void__Bool_EditMethod toggle_plain;
00198 Abi_Void__Bool_EditMethod toggle_strike;
00199 Abi_Void__Bool_EditMethod toggle_sub;
00200 Abi_Void__Bool_EditMethod toggle_super;
00201 Abi_Void__Bool_EditMethod toggle_topline;
00202 Abi_Void__Bool_EditMethod toggle_unindent;
00203 Abi_Void__Bool_EditMethod toggle_bullets;
00204 Abi_Void__Bool_EditMethod toggle_numbering;
00205
00206 Abi_Void__Bool_EditMethod view_formatting_marks;
00207 Abi_Void__Bool_EditMethod view_print_layout;
00208 Abi_Void__Bool_EditMethod view_normal_layout;
00209 Abi_Void__Bool_EditMethod view_online_layout;
00210
00211 Abi_Void__Bool_EditMethod moveto_bob;
00212 Abi_Void__Bool_EditMethod moveto_bod;
00213 Abi_Void__Bool_EditMethod moveto_bol;
00214 Abi_Void__Bool_EditMethod moveto_bop;
00215 Abi_Void__Bool_EditMethod moveto_bow;
00216 Abi_Void__Bool_EditMethod moveto_eob;
00217 Abi_Void__Bool_EditMethod moveto_eod;
00218 Abi_Void__Bool_EditMethod moveto_eol;
00219 Abi_Void__Bool_EditMethod moveto_eop;
00220 Abi_Void__Bool_EditMethod moveto_eow;
00221 Abi_Void__Bool_EditMethod moveto_left;
00222 Abi_Void__Bool_EditMethod moveto_next_line;
00223 Abi_Void__Bool_EditMethod moveto_next_page;
00224 Abi_Void__Bool_EditMethod moveto_next_screen;
00225 Abi_Void__Bool_EditMethod moveto_prev_line;
00226 Abi_Void__Bool_EditMethod moveto_prev_page;
00227 Abi_Void__Bool_EditMethod moveto_prev_screen;
00228 Abi_Void__Bool_EditMethod moveto_right;
00229 Abi_Int_Int__Bool_EditMethod moveto_to_xy;
00230
00231 Abi_Void__Bool_EditMethod zoom_whole;
00232 Abi_Void__Bool_EditMethod zoom_width;
00233
00234 Abi_EditMethod em_pad[20];
00235
00236
00237 void (* signal_bold) (AbiWidget * widget, gboolean value);
00238 void (* signal_italic) (AbiWidget * widget, gboolean value);
00239 void (* signal_underline) (AbiWidget * widget, gboolean value);
00240 void (* signal_overline) (AbiWidget * widget, gboolean value);
00241 void (* signal_line_through) (AbiWidget * widget, gboolean value);
00242 void (* signal_topline) (AbiWidget * widget, gboolean value);
00243 void (* signal_bottomline) (AbiWidget * widget, gboolean value);
00244 void (* signal_superscript) (AbiWidget * widget, gboolean value);
00245 void (* signal_subscript) (AbiWidget * widget, gboolean value);
00246 void (* signal_color) (AbiWidget * widget, int r, int g, int b);
00247 void (* signal_font_size) (AbiWidget * widget, double value);
00248 void (* signal_font_family) (AbiWidget * widget, const char * value);
00249 void (* signal_changed) (AbiWidget * widget, gboolean value);
00250 void (* signal_can_undo) (AbiWidget * widget, gboolean value);
00251 void (* signal_can_redo) (AbiWidget * widget, gboolean value);
00252 void (* signal_is_dirty) (AbiWidget * widget, gboolean value);
00253 void (* signal_left_align) (AbiWidget * widget, gboolean value);
00254 void (* signal_right_align) (AbiWidget * widget, gboolean value);
00255 void (* signal_center_align) (AbiWidget * widget, gboolean value);
00256 void (* signal_justify_align) (AbiWidget * widget, gboolean value);
00257 void (* signal_style_name) (AbiWidget * widget, const char * value);
00258 void (* signal_text_selected) (AbiWidget * widget, gboolean value);
00259 void (* signal_image_selected) (AbiWidget * widget, gboolean value);
00260 void (* signal_selection_cleared) (AbiWidget * widget, gboolean value);
00261 void (* signal_enter_selection) (AbiWidget * widget, gboolean value);
00262 void (* signal_leave_selection) (AbiWidget * widget, gboolean value);
00263 void (* signal_table_state) (AbiWidget * widget, gboolean value);
00264 void (* signal_page_count) (AbiWidget * widget, guint32 value);
00265 void (* signal_current_page) (AbiWidget * widget, guint32 value);
00266 void (* signal_zoom_percentage) (AbiWidget * widget, gint32 value);
00267
00268 AbiSignal sig_pad[20];
00269 };
00270
00271
00272
00273
00274 GtkWidget * abi_widget_new (void);
00275 GtkWidget * abi_widget_new_with_file (const gchar * file);
00276 GType abi_widget_get_type (void);
00277 void abi_widget_turn_on_cursor(AbiWidget * widget);
00278 void abi_widget_draw(AbiWidget * w);
00279
00280 void abi_widget_set_property(GObject *object,
00281 guint arg_id,
00282 const GValue *arg,
00283 GParamSpec *pspec);
00284 void abi_widget_get_property(GObject *object,
00285 guint arg_id,
00286 GValue *arg,
00287 GParamSpec *pspec);
00288
00289
00290
00291
00292 gboolean abi_widget_file_open (AbiWidget * w);
00293 gboolean abi_widget_file_save (AbiWidget * w);
00294 gboolean abi_widget_load_file(AbiWidget * w, const gchar * pszFile, const gchar * mimetype);
00295 gboolean abi_widget_load_file_from_gsf(AbiWidget * w, GsfInput * input);
00296 gboolean abi_widget_load_file_from_memory(AbiWidget * w, const gchar * extension_or_mimetype, const gchar * buf, gint length);
00297 gboolean abi_widget_save ( AbiWidget * w, const gchar * fname, const gchar * extension_or_mimetype, const gchar * exp_props );
00298 gboolean abi_widget_save_immediate (AbiWidget * w);
00299 gboolean abi_widget_save_to_gsf ( AbiWidget * w, GsfOutput * output, const gchar * extension_or_mimetype, const gchar *exp_props);
00300
00301
00302 gboolean abi_widget_align_center (AbiWidget * w);
00303 gboolean abi_widget_align_justify (AbiWidget * w);
00304 gboolean abi_widget_align_left (AbiWidget * w);
00305 gboolean abi_widget_align_right (AbiWidget * w);
00306
00307
00308 gboolean abi_widget_copy (AbiWidget * w);
00309 gboolean abi_widget_cut (AbiWidget * w);
00310 gboolean abi_widget_paste (AbiWidget * w);
00311 gboolean abi_widget_paste_special (AbiWidget * w);
00312 gboolean abi_widget_select_all (AbiWidget * w);
00313 gboolean abi_widget_select_block (AbiWidget * w);
00314 gboolean abi_widget_select_line (AbiWidget * w);
00315 gboolean abi_widget_select_word (AbiWidget * w);
00316
00317
00318 gboolean abi_widget_undo (AbiWidget * w);
00319 gboolean abi_widget_redo (AbiWidget * w);
00320
00321
00322 gboolean abi_widget_insert_data (AbiWidget * w, const char * str);
00323 gboolean abi_widget_insert_space (AbiWidget * w);
00324
00325 gboolean abi_widget_delete_bob (AbiWidget * w);
00326 gboolean abi_widget_delete_bod (AbiWidget * w);
00327 gboolean abi_widget_delete_bol (AbiWidget * w);
00328 gboolean abi_widget_delete_bow (AbiWidget * w);
00329 gboolean abi_widget_delete_eob (AbiWidget * w);
00330 gboolean abi_widget_delete_eod (AbiWidget * w);
00331 gboolean abi_widget_delete_eol (AbiWidget * w);
00332 gboolean abi_widget_delete_eow (AbiWidget * w);
00333 gboolean abi_widget_delete_left (AbiWidget * w);
00334 gboolean abi_widget_delete_right (AbiWidget * w);
00335
00336 gchar * abi_widget_get_content (AbiWidget * w, const gchar * extension_or_mimetype, const gchar * exp_props, gint* iLength);
00337 gchar * abi_widget_get_selection (AbiWidget * w, const gchar * extension_or_mimetype, gint* iLength);
00338
00339
00340 gboolean abi_widget_select_bob (AbiWidget * w);
00341 gboolean abi_widget_select_bod (AbiWidget * w);
00342 gboolean abi_widget_select_bol (AbiWidget * w);
00343 gboolean abi_widget_select_bow (AbiWidget * w);
00344 gboolean abi_widget_select_eob (AbiWidget * w);
00345 gboolean abi_widget_select_eod (AbiWidget * w);
00346 gboolean abi_widget_select_eol (AbiWidget * w);
00347 gboolean abi_widget_select_eow (AbiWidget * w);
00348 gboolean abi_widget_select_left (AbiWidget * w);
00349 gboolean abi_widget_select_next_line (AbiWidget * w);
00350 gboolean abi_widget_select_page_down (AbiWidget * w);
00351 gboolean abi_widget_select_page_up (AbiWidget * w);
00352 gboolean abi_widget_select_prev_line (AbiWidget * w);
00353 gboolean abi_widget_select_right (AbiWidget * w);
00354 gboolean abi_widget_select_screen_down (AbiWidget * w);
00355 gboolean abi_widget_select_screen_up (AbiWidget * w);
00356 gboolean abi_widget_select_to_xy (AbiWidget * w, gint32 x, gint32 y);
00357
00358
00359 gboolean abi_widget_toggle_bold (AbiWidget * w);
00360 gboolean abi_widget_toggle_underline (AbiWidget * w);
00361 gboolean abi_widget_toggle_bottomline (AbiWidget * w);
00362 gboolean abi_widget_toggle_insert_mode (AbiWidget * w);
00363 gboolean abi_widget_toggle_italic (AbiWidget * w);
00364 gboolean abi_widget_toggle_overline (AbiWidget * w);
00365 gboolean abi_widget_toggle_plain (AbiWidget * w);
00366 gboolean abi_widget_toggle_strike (AbiWidget * w);
00367 gboolean abi_widget_toggle_sub (AbiWidget * w);
00368 gboolean abi_widget_toggle_super (AbiWidget * w);
00369 gboolean abi_widget_toggle_topline (AbiWidget * w);
00370 gboolean abi_widget_toggle_unindent (AbiWidget * w);
00371 gboolean abi_widget_set_text_color(AbiWidget * w, guint8 red, guint8 green, guint8 blue);
00372 gboolean abi_widget_toggle_bullets (AbiWidget * w);
00373 gboolean abi_widget_toggle_numbering (AbiWidget * w);
00374
00375
00376 gboolean abi_widget_moveto_bob (AbiWidget * w);
00377 gboolean abi_widget_moveto_bod (AbiWidget * w);
00378 gboolean abi_widget_moveto_bol (AbiWidget * w);
00379 gboolean abi_widget_moveto_bop (AbiWidget * w);
00380 gboolean abi_widget_moveto_bow (AbiWidget * w);
00381 gboolean abi_widget_moveto_eob (AbiWidget * w);
00382 gboolean abi_widget_moveto_eod (AbiWidget * w);
00383 gboolean abi_widget_moveto_eol (AbiWidget * w);
00384 gboolean abi_widget_moveto_eop (AbiWidget * w);
00385 gboolean abi_widget_moveto_eow (AbiWidget * w);
00386 gboolean abi_widget_moveto_left (AbiWidget * w);
00387 gboolean abi_widget_moveto_next_line (AbiWidget * w);
00388 gboolean abi_widget_moveto_next_page (AbiWidget * w);
00389 gboolean abi_widget_moveto_next_screen (AbiWidget * w);
00390 gboolean abi_widget_moveto_prev_line (AbiWidget * w);
00391 gboolean abi_widget_moveto_prev_page (AbiWidget * w);
00392 gboolean abi_widget_moveto_prev_screen (AbiWidget * w);
00393 gboolean abi_widget_moveto_right (AbiWidget * w);
00394 gboolean abi_widget_moveto_to_xy (AbiWidget * w, gint32 x, gint32 y);
00395
00396
00397 void abi_widget_set_find_string (AbiWidget * w, gchar * search_str);
00398 gboolean abi_widget_find_next (AbiWidget * w, gboolean sel_start);
00399 gboolean abi_widget_find_prev (AbiWidget * w);
00400
00401
00402 guint32 abi_widget_get_page_count(AbiWidget * w);
00403 guint32 abi_widget_get_current_page_num(AbiWidget * w);
00404 void abi_widget_set_current_page(AbiWidget * w, guint32 curpage);
00405
00406
00407 gboolean abi_widget_view_formatting_marks (AbiWidget * w);
00408 gboolean abi_widget_view_print_layout (AbiWidget * w);
00409 gboolean abi_widget_view_normal_layout (AbiWidget * w);
00410 gboolean abi_widget_view_online_layout (AbiWidget * w);
00411
00412 gboolean abi_widget_zoom_whole (AbiWidget * w);
00413 gboolean abi_widget_zoom_width (AbiWidget * w);
00414 gboolean abi_widget_set_zoom_percentage (AbiWidget * w, guint32 zoom);
00415 guint32 abi_widget_get_zoom_percentage (AbiWidget * w);
00416
00417 gboolean abi_widget_set_word_selections (AbiWidget * w, gboolean b);
00418 gboolean abi_widget_get_word_selections (AbiWidget * w);
00419
00420 gboolean abi_widget_set_show_margin (AbiWidget * w, gboolean bShowMargin);
00421 gboolean abi_widget_get_show_margin (AbiWidget * w);
00422
00423 gboolean abi_widget_set_show_authors (AbiWidget * w, gboolean bShowAuthors);
00424 gboolean abi_widget_get_show_authors (AbiWidget * w);
00425
00426 GdkPixbuf * abi_widget_render_page_to_image(AbiWidget *w, int page_number);
00427
00428
00429 gboolean abi_widget_remove_header (AbiWidget * w);
00430 gboolean abi_widget_remove_footer (AbiWidget * w);
00431 gboolean abi_widget_edit_header (AbiWidget * w);
00432 gboolean abi_widget_edit_footer (AbiWidget * w);
00433
00434
00435 void abi_widget_toggle_rulers(AbiWidget * abi, gboolean visible);
00436
00437
00438 gboolean abi_widget_insert_table(AbiWidget * w, gint32 rows, gint32 cols);
00439 gboolean abi_widget_get_mouse_pos(AbiWidget * w, gint32 * x, gint32 * y);
00440
00441
00442 gboolean abi_widget_set_font_name(AbiWidget * w, gchar * szFontName);
00443 gboolean abi_widget_set_font_size(AbiWidget * w, gchar * szFontsize);
00444 const gchar** abi_widget_get_font_names (AbiWidget * w);
00445
00446
00447 gboolean abi_widget_set_style(AbiWidget * w, char* szName);
00448
00449
00450 gboolean abi_widget_insert_image(AbiWidget * w, char* szFile, gboolean positioned);
00451
00452
00453 gboolean abi_widget_invoke(AbiWidget * w, const char * mthdName);
00454 gboolean abi_widget_invoke_ex (AbiWidget * w, const char *mthdName, const char * data, gint32 x, gint32 y);
00455
00456 #ifdef ABIWORD_INTERNAL
00457
00458 XAP_Frame * abi_widget_get_frame ( AbiWidget * w ) ;
00459 #endif
00460
00461 G_END_DECLS
00462
00463 #endif