예제 #1
0
static void
ol_menu_init ()
{
  /* create accelerator group */
  GtkAccelGroup *accel = ol_keybinding_get_accel_group ();
  OlConfigProxy *config = ol_config_proxy_get_instance ();
  popup_menu = ol_gui_get_widget ("pop-menu");
  gtk_menu_set_accel_group (GTK_MENU (popup_menu), accel);
  menu.lock = ol_gui_get_widget ("menu-lock");
  if (menu.lock)
  {
    gtk_menu_item_set_accel_path (GTK_MENU_ITEM (menu.lock),
                                  "<OSD Lyrics>/Lock");
  }

  menu.hide = ol_gui_get_widget ("menu-hide");
  if (menu.hide)
  {
    gtk_menu_item_set_accel_path (GTK_MENU_ITEM (menu.hide),
                                  "<OSD Lyrics>/Hide");
  }

  menu.preference = ol_gui_get_widget ("menu-prefernce");
  menu.about = ol_gui_get_widget ("menu-about");
  menu.quit = ol_gui_get_widget ("menu-quit");

  menu.play = ol_gui_get_widget ("menu-play");
  menu.pause = ol_gui_get_widget ("menu-pause");
  menu.stop = ol_gui_get_widget ("menu-stop");
  menu.prev = ol_gui_get_widget ("menu-prev");
  menu.next = ol_gui_get_widget ("menu-next");

  menu.switch_osd = ol_gui_get_widget ("menu-switch-osd");
  menu.switch_scroll = ol_gui_get_widget ("menu-switch-scroll");
  
  gtk_widget_show_all (popup_menu);
  _locked_changed_cb (config, "OSD/locked", NULL);
  _visible_changed_cb (config, ".visible", NULL);
  _display_mode_osd_changed_cb (config, "General/display-mode-osd", NULL);
  _display_mode_scroll_changed_cb (config, "General/display-mode-scroll", NULL);
  g_signal_connect (config,
                    "changed::OSD/locked",
                    G_CALLBACK (_locked_changed_cb),
                    NULL);
  g_signal_connect (config,
                    "changed::.visible",
                    G_CALLBACK (_visible_changed_cb),
                    NULL);
  g_signal_connect (config,
                    "changed::General/display-mode-osd",
                    G_CALLBACK (_display_mode_osd_changed_cb),
                    NULL);
  g_signal_connect (config,
                    "changed::General/display-mode-scroll",
                    G_CALLBACK (_display_mode_scroll_changed_cb),
                    NULL);
}
예제 #2
0
파일: gu_menu.c 프로젝트: Allba/showtime
GtkWidget *
gu_menu_add_item(GtkWidget *parent, const char *title,
		 void (*cb)(GtkWidget *menuitem, gpointer aux),
		 gpointer aux, const char *image, const char *accel,
		 gboolean sensitive)
{
  GtkWidget *w;
  GtkWidget *img;

  if(image != NULL) {
    w = gtk_image_menu_item_new_with_mnemonic(title);

    img = gtk_image_new_from_stock(image, GTK_ICON_SIZE_MENU);
    gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(w), img);


  } else {
    w = gtk_menu_item_new_with_mnemonic(title);
  }

  if(accel != NULL) {
    gtk_menu_item_set_accel_path(GTK_MENU_ITEM(w), accel);
  }

  gtk_widget_set_sensitive(w, sensitive);
  gtk_menu_shell_append(GTK_MENU_SHELL(parent), w);
  g_signal_connect(G_OBJECT(w), "activate", (void *)cb, aux);
  return w;
}
예제 #3
0
void GtkMenuItem_::set_accel_path(Php::Parameters &parameters)
{
	std::string s_accel_path = parameters[0];
	gchar *accel_path = (gchar *)s_accel_path.c_str();

	gtk_menu_item_set_accel_path (GTK_MENU_ITEM(instance), accel_path);

}
예제 #4
0
파일: tools.c 프로젝트: Buzztrax/buzztrax
/**
 * gtk_menu_item_add_accel:
 * @mi: a valid GtkMenuItem
 * @path: accelerator path, corresponding to this menu item's functionality.
 * @accel_key: the accelerator key
 * @accel_mods: the accelerator modifiers
 *
 * Convenience wrapper around gtk_menu_item_set_accel_path() and
 * gtk_accel_map_add_entry().
 *
 * see_also: gtk_widget_add_accelerator()
 */
void
gtk_menu_item_add_accel (GtkMenuItem * mi, const gchar * path, guint accel_key,
    GdkModifierType accel_mods)
{
  g_intern_static_string (path);
  gtk_menu_item_set_accel_path (mi, path);
  gtk_accel_map_add_entry (path, accel_key, accel_mods);
}
예제 #5
0
/*#
    @method set_accel_path GtkMenuItem
    @brief Set the accelerator path on menu_item, through which runtime changes of the menu item's accelerator caused by the user can be identified and saved to persistant storage (see gtk_accel_map_save() on this).
    @param accel_path accelerator path, corresponding to this menu item's functionality, or NULL to unset the current path

    To setup a default accelerator for this menu item, call gtk_accel_map_add_entry()
    with the same accel_path. See also gtk_accel_map_add_entry() on the specifics
    of accelerator paths, and gtk_menu_set_accel_path() for a more convenient
    variant of this function.

    This function is basically a convenience wrapper that handles calling
    gtk_widget_set_accel_path() with the appropriate accelerator group for the menu item.

    Note that you do need to set an accelerator on the parent menu with
    gtk_menu_set_accel_group() for this to work.
 */
FALCON_FUNC MenuItem::set_accel_path( VMARG )
{
    Gtk::ArgCheck1 args( vm, "S" );
    const gchar* path = args.getCString( 0, false );
    MYSELF;
    GET_OBJ( self );
    gtk_menu_item_set_accel_path( (GtkMenuItem*)_obj, path );
}
예제 #6
0
int
clip_GTK_MENUITEMSETACCELPATH(ClipMachine * ClipMachineMemory)
{
   C_widget *citm = _fetch_cw_arg(ClipMachineMemory);

   const gchar *accel_path = _clip_parc(ClipMachineMemory, 2);

   CHECKCWID(citm, GTK_IS_MENU_ITEM);
   CHECKARG(2, CHARACTER_type_of_ClipVarType);

   gtk_menu_item_set_accel_path(GTK_MENU_ITEM(citm->widget), accel_path);
   return 0;
 err:
   return 1;
}
예제 #7
0
파일: gu_menu.c 프로젝트: Allba/showtime
GtkWidget *
gu_menu_add_toggle(GtkWidget *parent, const char *title,
		   void (*cb)(GtkCheckMenuItem *menuitem, gpointer aux),
		   gpointer aux, gboolean active, const char *accel,
		   gboolean sensitive)
{
  GtkWidget *w;

  w = gtk_check_menu_item_new_with_mnemonic(title);

  if(accel != NULL) {
    gtk_menu_item_set_accel_path(GTK_MENU_ITEM(w), accel);
  }

  gtk_widget_set_sensitive(w, sensitive);
  gtk_menu_shell_append(GTK_MENU_SHELL(parent), w);
  gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w), active);
  g_signal_connect(G_OBJECT(w), "toggled", (void *)cb, aux);
  return w;
}
예제 #8
0
static VALUE
mitem_set_accel_path(VALUE self, VALUE accel_path)
{
    gtk_menu_item_set_accel_path(_SELF(self), RVAL2CSTR(accel_path));
    return self;
}
예제 #9
0
static void
gxk_menu_item_set_property (GObject      *object,
                            guint         param_id,
                            const GValue *value,
                            GParamSpec   *pspec)
{
  GxkMenuItem *self = GXK_MENU_ITEM (object);
  GtkMenuItem *mitem = GTK_MENU_ITEM (object);
  GtkBin *bin = GTK_BIN (self);
  switch (param_id)
    {
      const gchar *string, *path;
      gchar *accel;
      gboolean vbool;
    case MENU_ITEM_PROP_ULINE_LABEL:
      if (bin->child)
        gtk_container_remove (GTK_CONTAINER (self), bin->child);
      string = g_value_get_string (value);
      if (string)
        {
          GtkWidget *label = g_object_new (GTK_TYPE_ACCEL_LABEL,
                                           "visible", TRUE,
                                           "label", string,
                                           "use-underline", TRUE,
                                           "xalign", 0.0,
                                           "accel-widget", self,
                                           "parent", self,
                                           NULL);
          if (g_object_get_long (self, "gxk-title-style"))
            gxk_widget_modify_as_title (label);
        }
      break;
    case MENU_ITEM_PROP_STOCK_IMAGE:
      string = g_value_get_string (value);
      if (string)
        {
          GtkWidget *image = gtk_image_new_from_stock (string, GXK_ICON_SIZE_MENU);
          if (image)
            {
              gtk_widget_show (image);
              gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (self), image);
            }
        }
      break;
    case MENU_ITEM_PROP_KEEP_MENUBAR_IMAGE:
      vbool = g_value_get_boolean (value);
      g_object_set_long (self, "gxk-keep-menubar-image", vbool);
      menu_item_keep_menubar_image (self);
      break;
    case MENU_ITEM_PROP_RIGHT_JUSTIFY:
      gtk_menu_item_set_right_justified (mitem, g_value_get_boolean (value));
      break;
    case MENU_ITEM_PROP_TITLE_STYLE:
      if (g_value_get_boolean (value))
        {
          gxk_widget_modify_as_title (GTK_WIDGET (self));
          g_object_set_long (self, "gxk-title-style", 1);
          if (bin->child)
            gxk_widget_modify_as_title (bin->child);
        }
      break;
    case MENU_ITEM_PROP_ACCEL_PATH:
      path = g_value_get_string (value);
      gtk_menu_item_set_accel_path (mitem, path);
      accel = g_object_get_data (self, "gxk-menu-item-accel");
      goto setup_accel;
    case MENU_ITEM_PROP_ACCEL:
      accel = g_value_dup_string (value);
      g_object_set_data_full (self, "gxk-menu-item-accel", accel, g_free);
      path = mitem->accel_path;
    setup_accel:
      if (accel && path)
        {
          GdkModifierType mods = 0;
          guint keyval = 0;
          if (accel)
            gtk_accelerator_parse (accel, &keyval, &mods);
          keyval = keyval != GDK_VoidSymbol ? keyval : 0;
          gtk_accel_map_add_entry (path, keyval, mods);
        }
      break;
    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID (self, param_id, pspec);
      break;
    }
}