/poppler/ext/poppler/rbpoppler-form-field.c
https://github.com/geoffyoungs/ruby-gnome2 · C · 291 lines · 230 code · 48 blank · 13 comment · 2 complexity · 78ee2091aea6da6892bfe12ba035dd5a MD5 · raw file
- /* -*- c-file-style: "ruby" -*- */
- /**********************************************************************
- rbpoppler-form-field.c -
- Copyright (C) 2008 Ruby-GNOME2 Project Team
- **********************************************************************/
- #include "rbpoppler-private.h"
- #define RVAL2FF(obj) RVAL2POPPLER_FORM_FIELD(obj)
- #define RVAL2TF(obj) RVAL2FF(obj)
- #define RVAL2BF(obj) RVAL2FF(obj)
- #define RVAL2CF(obj) RVAL2FF(obj)
- #define FFT2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_FORM_FIELD_TYPE))
- #define RVAL2FFT(obj) (RVAL2GENUM(obj, POPPLER_TYPE_FORM_FIELD_TYPE))
- #define FBT2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_FORM_BUTTON_TYPE))
- #define FTT2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_FORM_TEXT_TYPE))
- #define FCT2RVAL(obj) (GENUM2RVAL(obj, POPPLER_TYPE_FORM_CHOICE_TYPE))
- static VALUE cUnknownField, cTextField, cButtonField;
- static VALUE cChoiceField, cSignatureField;
- VALUE
- rb_poppler_ruby_object_from_form_field(PopplerFormField *field)
- {
- VALUE obj;
- obj = rbgobj_ruby_object_from_instance2(field, FALSE);
- if (NIL_P(obj)) {
- switch (poppler_form_field_get_field_type(field)) {
- case POPPLER_FORM_FIELD_UNKNOWN:
- obj = rbgobj_create_object(cUnknownField);
- break;
- case POPPLER_FORM_FIELD_BUTTON:
- obj = rbgobj_create_object(cButtonField);
- break;
- case POPPLER_FORM_FIELD_TEXT:
- obj = rbgobj_create_object(cTextField);
- break;
- case POPPLER_FORM_FIELD_CHOICE:
- obj = rbgobj_create_object(cChoiceField);
- break;
- case POPPLER_FORM_FIELD_SIGNATURE:
- obj = rbgobj_create_object(cSignatureField);
- break;
- }
- g_object_ref(field);
- G_INITIALIZE(obj, (gpointer)field);
- }
- return obj;
- }
- /* FormField */
- static VALUE
- form_field_get_id(VALUE self)
- {
- return INT2NUM(poppler_form_field_get_id(RVAL2FF(self)));
- }
- static VALUE
- form_field_get_font_size(VALUE self)
- {
- return rb_float_new(poppler_form_field_get_font_size(RVAL2FF(self)));
- }
- static VALUE
- form_field_is_read_only(VALUE self)
- {
- return CBOOL2RVAL(poppler_form_field_is_read_only(RVAL2FF(self)));
- }
- /* Button Field */
- static VALUE
- button_field_get_button_type(VALUE self)
- {
- return FBT2RVAL(poppler_form_field_button_get_button_type(RVAL2FF(self)));
- }
- static VALUE
- button_field_get_state(VALUE self)
- {
- return CBOOL2RVAL(poppler_form_field_button_get_state(RVAL2BF(self)));
- }
- static VALUE
- button_field_set_state(VALUE self, VALUE state)
- {
- poppler_form_field_button_set_state(RVAL2BF(self), RVAL2CBOOL(state));
- return Qnil;
- }
- /* Text Field */
- static VALUE
- text_field_get_text_type(VALUE self)
- {
- return FTT2RVAL(poppler_form_field_text_get_text_type(RVAL2TF(self)));
- }
- static VALUE
- text_field_get_text(VALUE self)
- {
- return CSTR2RVAL(poppler_form_field_text_get_text(RVAL2TF(self)));
- }
- static VALUE
- text_field_set_text(VALUE self, VALUE text)
- {
- poppler_form_field_text_set_text(RVAL2TF(self), RVAL2CSTR_ACCEPT_NIL(text));
- return Qnil;
- }
- static VALUE
- text_field_get_max_length(VALUE self)
- {
- return INT2NUM(poppler_form_field_text_get_max_len(RVAL2TF(self)));
- }
- static VALUE
- text_field_do_spell_check(VALUE self)
- {
- return CBOOL2RVAL(poppler_form_field_text_do_spell_check(RVAL2TF(self)));
- }
- static VALUE
- text_field_do_scroll(VALUE self)
- {
- return CBOOL2RVAL(poppler_form_field_text_do_scroll(RVAL2TF(self)));
- }
- static VALUE
- text_field_is_rich_text(VALUE self)
- {
- return CBOOL2RVAL(poppler_form_field_text_is_rich_text(RVAL2TF(self)));
- }
- static VALUE
- text_field_is_password(VALUE self)
- {
- return CBOOL2RVAL(poppler_form_field_text_is_password(RVAL2TF(self)));
- }
- /* Choice Field */
- static VALUE
- choice_field_get_choice_type(VALUE self)
- {
- return FCT2RVAL(poppler_form_field_choice_get_choice_type(RVAL2CF(self)));
- }
- static VALUE
- choice_field_is_editable(VALUE self)
- {
- return CBOOL2RVAL(poppler_form_field_choice_is_editable(RVAL2CF(self)));
- }
- static VALUE
- choice_field_can_select_multiple(VALUE self)
- {
- return CBOOL2RVAL(poppler_form_field_choice_can_select_multiple(RVAL2CF(self)));
- }
- static VALUE
- choice_field_do_spell_check(VALUE self)
- {
- return CBOOL2RVAL(poppler_form_field_choice_do_spell_check(RVAL2CF(self)));
- }
- static VALUE
- choice_field_commit_on_change(VALUE self)
- {
- return CBOOL2RVAL(poppler_form_field_choice_commit_on_change(RVAL2CF(self)));
- }
- static VALUE
- choice_field_get_n_items(VALUE self)
- {
- return INT2NUM(poppler_form_field_choice_get_n_items(RVAL2CF(self)));
- }
- static VALUE
- choice_field_get_item(VALUE self, VALUE index)
- {
- return CSTR2RVAL(poppler_form_field_choice_get_item(RVAL2CF(self),
- NUM2INT(index)));
- }
- static VALUE
- choice_field_is_item_selected(VALUE self, VALUE index)
- {
- return CBOOL2RVAL(poppler_form_field_choice_is_item_selected(RVAL2CF(self),
- NUM2INT(index)));
- }
- static VALUE
- choice_field_select_item(VALUE self, VALUE index)
- {
- poppler_form_field_choice_select_item(RVAL2CF(self), NUM2INT(index));
- return Qnil;
- }
- static VALUE
- choice_field_unselect_all(VALUE self)
- {
- poppler_form_field_choice_unselect_all(RVAL2CF(self));
- return Qnil;
- }
- static VALUE
- choice_field_toggle_item(VALUE self, VALUE index)
- {
- poppler_form_field_choice_toggle_item(RVAL2CF(self), NUM2INT(index));
- return Qnil;
- }
- static VALUE
- choice_field_set_text(VALUE self, VALUE text)
- {
- poppler_form_field_choice_set_text(RVAL2CF(self), RVAL2CSTR_ACCEPT_NIL(text));
- return Qnil;
- }
- static VALUE
- choice_field_get_text(VALUE self)
- {
- return CSTR2RVAL(poppler_form_field_choice_get_text(RVAL2CF(self)));
- }
- void
- Init_poppler_form_field(VALUE mPoppler)
- {
- VALUE cFormField;
- cFormField = G_DEF_CLASS(POPPLER_TYPE_FORM_FIELD, "FormField", mPoppler);
- cUnknownField = rb_define_class_under(mPoppler, "UnknownField", cFormField);
- cTextField = rb_define_class_under(mPoppler, "TextField", cFormField);
- cButtonField = rb_define_class_under(mPoppler, "ButtonField", cFormField);
- cChoiceField = rb_define_class_under(mPoppler, "ChoiceField", cFormField);
- cSignatureField = rb_define_class_under(mPoppler, "SignatureField",
- cFormField);
- /* FormField */
- rb_define_method(cFormField, "id", form_field_get_id, 0);
- rb_define_method(cFormField, "font_size", form_field_get_font_size, 0);
- rb_define_method(cFormField, "read_only?", form_field_is_read_only, 0);
- G_DEF_SETTERS(cFormField);
- rb_define_method(cButtonField, "type", button_field_get_button_type, 0);
- rb_define_method(cButtonField, "active?", button_field_get_state, 0);
- rb_define_method(cButtonField, "set_active", button_field_set_state, 1);
- G_DEF_SETTERS(cButtonField);
- rb_define_method(cTextField, "type", text_field_get_text_type, 0);
- rb_define_method(cTextField, "text", text_field_get_text, 0);
- rb_define_method(cTextField, "set_text", text_field_set_text, 1);
- rb_define_method(cTextField, "max_length", text_field_get_max_length, 0);
- rb_define_method(cTextField, "spell_check?", text_field_do_spell_check, 0);
- rb_define_method(cTextField, "scroll?", text_field_do_scroll, 0);
- rb_define_method(cTextField, "rich_text?", text_field_is_rich_text, 0);
- rb_define_method(cTextField, "password?", text_field_is_password, 0);
- G_DEF_SETTERS(cTextField);
- rb_define_method(cChoiceField, "type", choice_field_get_choice_type, 0);
- rb_define_method(cChoiceField, "editable?", choice_field_is_editable, 0);
- rb_define_method(cChoiceField, "select_multiple?",
- choice_field_can_select_multiple, 0);
- rb_define_method(cChoiceField, "spell_check?",
- choice_field_do_spell_check, 0);
- rb_define_method(cChoiceField, "commit_on_change?",
- choice_field_commit_on_change, 0);
- rb_define_method(cChoiceField, "n_items", choice_field_get_n_items, 0);
- rb_define_method(cChoiceField, "[]", choice_field_get_item, 1);
- rb_define_method(cChoiceField, "selected?",
- choice_field_is_item_selected, 1);
- rb_define_method(cChoiceField, "select", choice_field_select_item, 1);
- rb_define_method(cChoiceField, "unselect_all", choice_field_unselect_all, 0);
- rb_define_method(cChoiceField, "toggle", choice_field_toggle_item, 1);
- rb_define_method(cChoiceField, "text", choice_field_get_text, 0);
- rb_define_method(cChoiceField, "set_text", choice_field_set_text, 1);
- G_DEF_SETTERS(cChoiceField);
- }