コード例 #1
0
ファイル: glade-treeview-editor.c プロジェクト: kugel-/glade
GtkWidget *
glade_tree_view_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed)
{
  GladeTreeViewEditor *view_editor;
  GtkWidget *vbox, *separator;
  gchar *str;

  g_return_val_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor), NULL);
  g_return_val_if_fail (GLADE_IS_EDITABLE (embed), NULL);

  view_editor = g_object_new (GLADE_TYPE_TREE_VIEW_EDITOR, NULL);
  view_editor->embed = GTK_WIDGET (embed);

  /* Pack the parent on the left... */
  gtk_box_pack_start (GTK_BOX (view_editor), GTK_WIDGET (embed), TRUE, TRUE, 8);

  separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
  gtk_box_pack_start (GTK_BOX (view_editor), separator, FALSE, FALSE, 0);

  /* ...and the vbox with datastore/label on the right */
  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
  gtk_box_pack_start (GTK_BOX (view_editor), vbox, TRUE, TRUE, 8);

  str = g_strdup_printf ("<b>%s</b>", _("Choose a Data Model and define some\n"
                                        "columns in the data store first"));
  view_editor->no_model_message = gtk_label_new (str);
  gtk_label_set_use_markup (GTK_LABEL (view_editor->no_model_message), TRUE);
  gtk_label_set_justify (GTK_LABEL (view_editor->no_model_message),
                         GTK_JUSTIFY_CENTER);

  g_free (str);

  gtk_box_pack_start (GTK_BOX (vbox), view_editor->no_model_message, TRUE, TRUE,
                      0);

  view_editor->embed_list_store =
      (GtkWidget *)
      glade_widget_adaptor_create_editable (glade_widget_adaptor_get_by_type
                                            (GTK_TYPE_LIST_STORE),
                                            GLADE_PAGE_GENERAL);
  glade_editable_set_show_name (GLADE_EDITABLE (view_editor->embed_list_store),
                                FALSE);
  gtk_box_pack_start (GTK_BOX (vbox), view_editor->embed_list_store, TRUE, TRUE,
                      0);

  view_editor->embed_tree_store =
      (GtkWidget *)
      glade_widget_adaptor_create_editable (glade_widget_adaptor_get_by_type
                                            (GTK_TYPE_TREE_STORE),
                                            GLADE_PAGE_GENERAL);
  glade_editable_set_show_name (GLADE_EDITABLE (view_editor->embed_tree_store),
                                FALSE);
  gtk_box_pack_start (GTK_BOX (vbox), view_editor->embed_tree_store, TRUE, TRUE,
                      0);

  gtk_widget_show_all (GTK_WIDGET (view_editor));

  return GTK_WIDGET (view_editor);
}
コード例 #2
0
ファイル: glade-popup.c プロジェクト: metaltrrocker/glade
static void
glade_popup_docs_cb (GtkMenuItem *item, GladeWidgetAdaptor *adaptor)
{
  g_return_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor));

  glade_app_search_docs (glade_widget_adaptor_get_book (adaptor),
                         glade_widget_adaptor_get_name (adaptor),
                         NULL);
}
コード例 #3
0
ファイル: glade-editor-table.c プロジェクト: zlongshen/glade
/**
 * glade_editor_table_new:
 * @adaptor: A #GladeWidgetAdaptor
 * @type: The #GladeEditorPageType
 *
 * Creates a new #GladeEditorTable. 
 *
 * Returns: a new #GladeEditorTable
 *
 */
GtkWidget *
glade_editor_table_new (GladeWidgetAdaptor *adaptor, GladeEditorPageType type)
{
  GladeEditorTable *table;

  g_return_val_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor), NULL);

  table = g_object_new (GLADE_TYPE_EDITOR_TABLE, "page-type", type, NULL);
  table->priv->adaptor = adaptor;

  if (table->priv->type == GLADE_PAGE_GENERAL)
    append_name_field (table);

  append_items (table, table->priv->adaptor, table->priv->type);

  return (GtkWidget *)table;
}
コード例 #4
0
ファイル: glade-popup.c プロジェクト: metaltrrocker/glade
void
glade_popup_property_pop (GladeProperty *property, GdkEventButton *event)
{

  GladeWidgetAdaptor *adaptor, *prop_adaptor;
  GladePropertyClass *pclass;
  GParamSpec         *pspec;
  GtkWidget *popup_menu;
  gint button;
  gint event_time;

  pclass       = glade_property_get_class (property);
  pspec        = glade_property_class_get_pspec (pclass);
  prop_adaptor = glade_property_class_get_adaptor (pclass);
  adaptor      = glade_widget_adaptor_from_pspec (prop_adaptor, pspec);

  g_return_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor));

  popup_menu = gtk_menu_new ();

  glade_popup_append_item (popup_menu, _("Set default value"), TRUE,
                           glade_popup_clear_property_cb, property);

  if (!glade_property_class_get_virtual (pclass) &&
      glade_widget_adaptor_get_book (adaptor) &&
      glade_util_have_devhelp ())
    {
      glade_popup_append_item (popup_menu, _("Read _documentation"), TRUE,
                               glade_popup_property_docs_cb, property);
    }

  if (event)
    {
      button = event->button;
      event_time = event->time;
    }
  else
    {
      button = 0;
      event_time = gtk_get_current_event_time ();
    }

  gtk_menu_popup (GTK_MENU (popup_menu), NULL, NULL,
                  NULL, NULL, button, event_time);
}
コード例 #5
0
ファイル: glade-popup.c プロジェクト: metaltrrocker/glade
void
glade_popup_palette_pop (GladePalette       *palette, 
			 GladeWidgetAdaptor *adaptor, 
			 GdkEventButton     *event)
{
  GladeProject *project;
  GtkWidget *popup_menu;
  gint button;
  gint event_time;
  RootAddData *data;

  g_return_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor));

  popup_menu = gtk_menu_new ();

  project = glade_palette_get_project (palette);

  data = g_new (RootAddData, 1);
  data->adaptor = adaptor;
  data->project = project;
  g_object_set_data_full (G_OBJECT (popup_menu), "root-data-destroy-me", 
			  data, (GDestroyNotify)g_free);

  glade_popup_append_item (popup_menu, _("Add widget as _toplevel"), TRUE,
                           glade_popup_root_add_cb, data);

  if (glade_widget_adaptor_get_book (adaptor) && glade_util_have_devhelp ())
    glade_popup_append_item (popup_menu, _("Read _documentation"), TRUE,
                             glade_popup_docs_cb, adaptor);

  if (event)
    {
      button = event->button;
      event_time = event->time;
    }
  else
    {
      button = 0;
      event_time = gtk_get_current_event_time ();
    }

  gtk_menu_popup (GTK_MENU (popup_menu), NULL, NULL,
                  NULL, NULL, button, event_time);
}
コード例 #6
0
GtkWidget *
glade_tool_item_group_editor_new (GladeWidgetAdaptor *adaptor, 
                                  GladeEditable      *embed)
{
  GladeToolItemGroupEditor *group_editor;
  GladeEditorProperty *eprop;
  GtkWidget *table, *frame, *label, *hbox;
  gchar *str;
  gint row = 0;

  g_return_val_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor), NULL);
  g_return_val_if_fail (GLADE_IS_EDITABLE (embed), NULL);

  group_editor = g_object_new (GLADE_TYPE_TOOL_ITEM_GROUP_EDITOR, NULL);
  group_editor->embed = GTK_WIDGET (embed);

  /* Pack the parent on top... */
  gtk_box_pack_start (GTK_BOX (group_editor), GTK_WIDGET (embed), FALSE, FALSE, 0);

  str = g_strdup_printf ("<b>%s</b>", _("Group Header"));
  label = gtk_label_new (str);
  gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
  g_free (str);
  frame = gtk_frame_new (NULL);
  gtk_frame_set_label_widget (GTK_FRAME (frame), label);
  gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
  gtk_box_pack_start (GTK_BOX (group_editor), frame, FALSE, FALSE, 0);

  table = gtk_grid_new ();
  gtk_widget_set_margin_top (table, 6);
  gtk_widget_set_margin_start (table, 12);
  gtk_orientable_set_orientation (GTK_ORIENTABLE (table),
                                  GTK_ORIENTATION_VERTICAL);
  gtk_grid_set_row_spacing (GTK_GRID (table), 4);
  gtk_container_add (GTK_CONTAINER (frame), table);

  /* label */
  eprop =
      glade_widget_adaptor_create_eprop_by_name (adaptor, "label", FALSE,
                                                 TRUE);
  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
  group_editor->label_radio = gtk_radio_button_new (NULL);
  gtk_box_pack_start (GTK_BOX (hbox), group_editor->label_radio, FALSE, FALSE,
                      2);
  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
  table_attach (table, hbox, 0, row);
  table_attach (table, GTK_WIDGET (eprop), 1, row++);
  group_editor->properties = g_list_prepend (group_editor->properties, eprop);

  /* label-widget ... */
  eprop =
      glade_widget_adaptor_create_eprop_by_name (adaptor, "label-widget",
                                                 FALSE, TRUE);
  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
  group_editor->label_widget_radio = gtk_radio_button_new_from_widget
      (GTK_RADIO_BUTTON (group_editor->label_radio));
  gtk_box_pack_start (GTK_BOX (hbox), group_editor->label_widget_radio, FALSE,
                      FALSE, 2);
  gtk_box_pack_start (GTK_BOX (hbox), glade_editor_property_get_item_label (eprop), TRUE, TRUE, 2);
  table_attach (table, hbox, 0, row);
  table_attach (table, GTK_WIDGET (eprop), 1, row++);
  group_editor->properties = g_list_prepend (group_editor->properties, eprop);

  g_signal_connect (G_OBJECT (group_editor->label_widget_radio), "toggled",
                    G_CALLBACK (label_widget_toggled), group_editor);
  g_signal_connect (G_OBJECT (group_editor->label_radio), "toggled",
                    G_CALLBACK (label_toggled), group_editor);

  gtk_widget_show_all (GTK_WIDGET (group_editor));

  return GTK_WIDGET (group_editor);
}