273
273
if (action != NULL)
275
if (action->items_by_name != NULL)
275
if (g_strcmp0 (name, action->name) == 0)
280
UnityGtkMenuItem *item;
282
g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_STRING));
284
name = g_variant_get_string (value, NULL);
285
item = g_hash_table_lookup (action->items_by_name, name);
287
if (item == NULL || !unity_gtk_menu_item_is_check (item))
289
g_warn_if_reached ();
294
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item->menu_item), TRUE);
302
g_hash_table_iter_init (&iter, action->items_by_name);
303
while (g_hash_table_iter_next (&iter, NULL, &value))
305
UnityGtkMenuItem *item = value;
307
if (unity_gtk_menu_item_is_check (item))
308
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item->menu_item), FALSE);
277
if (action->items_by_name != NULL)
282
UnityGtkMenuItem *item;
284
g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_STRING));
286
name = g_variant_get_string (value, NULL);
287
item = g_hash_table_lookup (action->items_by_name, name);
289
if (item == NULL || !unity_gtk_menu_item_is_check (item))
291
g_warn_if_reached ();
296
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item->menu_item), TRUE);
304
g_hash_table_iter_init (&iter, action->items_by_name);
305
while (g_hash_table_iter_next (&iter, NULL, &value))
307
UnityGtkMenuItem *item = value;
309
if (unity_gtk_menu_item_is_check (item))
310
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item->menu_item), FALSE);
314
else if (action->item != NULL && unity_gtk_menu_item_is_check (action->item))
316
g_return_if_fail (value != NULL && g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN));
318
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (action->item->menu_item), g_variant_get_boolean (value));
321
g_warn_if_fail (value == NULL);
312
else if (action->item != NULL && unity_gtk_menu_item_is_check (action->item))
325
else if (g_strcmp0 (name, action->subname) == 0)
314
329
g_return_if_fail (value != NULL && g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN));
316
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (action->item->menu_item), g_variant_get_boolean (value));
330
g_return_if_fail (action->item != NULL && action->item->menu_item != NULL);
332
submenu = gtk_menu_item_get_submenu (action->item->menu_item);
334
g_return_if_fail (submenu != NULL);
336
g_signal_emit_by_name (submenu, g_variant_get_boolean (value) ? "show" : "hide");
319
g_warn_if_fail (value == NULL);
341
g_warn_if_reached ();
344
g_warn_if_reached ();
325
347
g_warn_if_reached ();
360
382
if (action != NULL)
362
if (action->items_by_name != NULL)
365
UnityGtkMenuItem *item;
367
g_return_if_fail (parameter != NULL && g_variant_is_of_type (parameter, G_VARIANT_TYPE_STRING));
369
name = g_variant_get_string (parameter, NULL);
370
item = g_hash_table_lookup (action->items_by_name, name);
373
unity_gtk_menu_item_activate (item);
375
g_action_group_action_state_changed (G_ACTION_GROUP (group), action->name, parameter);
377
else if (action->item != NULL)
379
if (unity_gtk_menu_item_get_draw_as_radio (action->item))
380
g_warn_if_fail (g_variant_is_of_type (parameter, G_VARIANT_TYPE_STRING));
382
g_warn_if_fail (parameter == NULL);
384
unity_gtk_menu_item_activate (action->item);
384
if (g_strcmp0 (name, action->name) == 0)
386
if (action->items_by_name != NULL)
389
UnityGtkMenuItem *item;
391
g_return_if_fail (parameter != NULL && g_variant_is_of_type (parameter, G_VARIANT_TYPE_STRING));
393
name = g_variant_get_string (parameter, NULL);
394
item = g_hash_table_lookup (action->items_by_name, name);
397
unity_gtk_menu_item_activate (item);
399
g_action_group_action_state_changed (G_ACTION_GROUP (group), action->name, parameter);
401
else if (action->item != NULL)
403
if (unity_gtk_menu_item_get_draw_as_radio (action->item))
404
g_warn_if_fail (g_variant_is_of_type (parameter, G_VARIANT_TYPE_STRING));
406
g_warn_if_fail (parameter == NULL);
408
unity_gtk_menu_item_activate (action->item);
414
g_warn_if_reached ();
417
g_warn_if_reached ();
391
420
g_warn_if_reached ();
420
449
if (action != NULL)
451
if (g_strcmp0 (name, action->name) == 0)
424
if (action->items_by_name != NULL)
431
g_hash_table_iter_init (&iter, action->items_by_name);
432
while (!*enabled && g_hash_table_iter_next (&iter, NULL, &value))
433
*enabled = unity_gtk_menu_item_is_sensitive (value);
436
*enabled = action->item != NULL && unity_gtk_menu_item_is_sensitive (action->item);
455
if (action->items_by_name != NULL)
462
g_hash_table_iter_init (&iter, action->items_by_name);
463
while (!*enabled && g_hash_table_iter_next (&iter, NULL, &value))
464
*enabled = unity_gtk_menu_item_is_sensitive (value);
467
*enabled = action->item != NULL && unity_gtk_menu_item_is_sensitive (action->item);
470
if (parameter_type != NULL)
472
if (action->items_by_name != NULL || (action->item != NULL && unity_gtk_menu_item_get_draw_as_radio (action->item)))
473
*parameter_type = G_VARIANT_TYPE_STRING;
475
*parameter_type = NULL;
478
if (state_type != NULL)
480
if (action->items_by_name != NULL || (action->item != NULL && unity_gtk_menu_item_get_draw_as_radio (action->item)))
481
*state_type = G_VARIANT_TYPE_STRING;
482
else if (action->item != NULL && unity_gtk_menu_item_is_check (action->item))
483
*state_type = G_VARIANT_TYPE_BOOLEAN;
488
if (state_hint != NULL)
490
if (action->items_by_name != NULL)
492
GVariantBuilder builder;
496
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
498
g_hash_table_iter_init (&iter, action->items_by_name);
499
while (g_hash_table_iter_next (&iter, &key, NULL))
500
g_variant_builder_add (&builder, "s", key);
502
*state_hint = g_variant_ref_sink (g_variant_builder_end (&builder));
504
else if (action->item != NULL && unity_gtk_menu_item_is_check (action->item))
506
GVariantBuilder builder;
508
if (unity_gtk_menu_item_get_draw_as_radio (action->item))
510
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
511
g_variant_builder_add (&builder, "s", action->name);
512
*state_hint = g_variant_ref_sink (g_variant_builder_end (&builder));
516
g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE);
517
g_variant_builder_add (&builder, "b", FALSE);
518
g_variant_builder_add (&builder, "b", TRUE);
519
*state_hint = g_variant_ref_sink (g_variant_builder_end (&builder));
528
if (action->items_by_name != NULL)
536
g_hash_table_iter_init (&iter, action->items_by_name);
537
while (*state == NULL && g_hash_table_iter_next (&iter, &key, &value))
538
if (unity_gtk_menu_item_is_active (value))
539
*state = g_variant_ref_sink (g_variant_new_string (key));
541
else if (action->item != NULL && unity_gtk_menu_item_is_check (action->item))
543
if (unity_gtk_menu_item_get_draw_as_radio (action->item))
545
if (unity_gtk_menu_item_is_active (action->item))
546
*state = g_variant_ref_sink (g_variant_new_string (action->name));
548
*state = g_variant_ref_sink (g_variant_new_string (""));
551
*state = g_variant_ref_sink (g_variant_new_boolean (unity_gtk_menu_item_is_active (action->item)));
559
else if (g_strcmp0 (name, action->subname) == 0)
439
if (parameter_type != NULL)
441
if (action->items_by_name != NULL || (action->item != NULL && unity_gtk_menu_item_get_draw_as_radio (action->item)))
442
*parameter_type = G_VARIANT_TYPE_STRING;
564
if (parameter_type != NULL)
444
565
*parameter_type = NULL;
447
if (state_type != NULL)
449
if (action->items_by_name != NULL || (action->item != NULL && unity_gtk_menu_item_get_draw_as_radio (action->item)))
450
*state_type = G_VARIANT_TYPE_STRING;
451
else if (action->item != NULL && unity_gtk_menu_item_is_check (action->item))
567
if (state_type != NULL)
452
568
*state_type = G_VARIANT_TYPE_BOOLEAN;
457
if (state_hint != NULL)
459
if (action->items_by_name != NULL)
570
if (state_hint != NULL)
461
572
GVariantBuilder builder;
465
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
467
g_hash_table_iter_init (&iter, action->items_by_name);
468
while (g_hash_table_iter_next (&iter, &key, NULL))
469
g_variant_builder_add (&builder, "s", key);
574
g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE);
575
g_variant_builder_add (&builder, "b", FALSE);
576
g_variant_builder_add (&builder, "b", TRUE);
471
577
*state_hint = g_variant_ref_sink (g_variant_builder_end (&builder));
473
else if (action->item != NULL && unity_gtk_menu_item_is_check (action->item))
475
GVariantBuilder builder;
477
if (unity_gtk_menu_item_get_draw_as_radio (action->item))
479
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
480
g_variant_builder_add (&builder, "s", action->name);
481
*state_hint = g_variant_ref_sink (g_variant_builder_end (&builder));
485
g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE);
486
g_variant_builder_add (&builder, "b", FALSE);
487
g_variant_builder_add (&builder, "b", TRUE);
488
*state_hint = g_variant_ref_sink (g_variant_builder_end (&builder));
497
if (action->items_by_name != NULL)
505
g_hash_table_iter_init (&iter, action->items_by_name);
506
while (*state == NULL && g_hash_table_iter_next (&iter, &key, &value))
507
if (unity_gtk_menu_item_is_active (value))
508
*state = g_variant_ref_sink (g_variant_new_string (key));
510
else if (action->item != NULL && unity_gtk_menu_item_is_check (action->item))
512
if (unity_gtk_menu_item_get_draw_as_radio (action->item))
514
if (unity_gtk_menu_item_is_active (action->item))
515
*state = g_variant_ref_sink (g_variant_new_string (action->name));
517
*state = g_variant_ref_sink (g_variant_new_string (""));
520
*state = g_variant_ref_sink (g_variant_new_boolean (unity_gtk_menu_item_is_active (action->item)));
581
*state = g_variant_ref_sink (g_variant_new_boolean (TRUE));
586
g_warn_if_reached ();