void XttMethodToolbarGtk::set_current_sensitive()
{
  if ( m_disabled)
    return;

  int		is_attr;
  pwr_sAttrRef	aref;
  xmenu_eItemType menu_type;
  pwr_tStatus 	sts = 0;
  
  if ( get_select_cb)
    sts = (get_select_cb)( m_parent_ctx, &aref, &is_attr);
  if ( EVEN(sts)) {
    // Nothing selected
    for ( int i = 0; i < m_size; i++) {
      if ( m_method_mask & (1 << i))
	gtk_widget_set_sensitive( m_button_w[i], FALSE);      
    }
  }
  else {
    gdh_sVolumeInfo info;
    
    // Skip extern volumes
    sts = gdh_GetVolumeInfo( aref.Objid.vid, &info);
    if ( EVEN(sts)) return;

    if ( info.cid == pwr_eClass_ExternVolume) {
      for ( int i = 0; i < m_size; i++) {
	if ( m_method_mask & (1 << i))
	  gtk_widget_set_sensitive( m_button_w[i], FALSE);      
      }
      return;
    }

    if ( aref.Flags.b.Object)
      menu_type = xmenu_eItemType_Object;
    else if ( aref.Flags.b.ObjectAttr)
      menu_type = xmenu_eItemType_AttrObject;
    else
      menu_type = xmenu_eItemType_Attribute;
    
    for ( int i = 0; i < m_size; i++) {
      if ( m_method_mask & (1 << i)) {
	sts = m_xnav->check_object_methodfilter( aref, menu_type, xmenu_mUtility_XNav,
						 m_xnav->priv, m_data[i].name);
	if ( ODD(sts)) 
	  gtk_widget_set_sensitive( m_button_w[i], TRUE);
	else
	  gtk_widget_set_sensitive( m_button_w[i], FALSE);
      }
    }
  }
}
void XttMethodToolbarGtk::set_current_sensitive()
{
  if (m_disabled)
    return;

  int is_attr;
  pwr_sAttrRef aref;
  xmenu_eItemType menu_type;
  pwr_tStatus sts = 0;

  if (get_select_cb)
    sts = (get_select_cb)(m_parent_ctx, &aref, &is_attr);
  if (EVEN(sts)) {
    // Nothing selected
    for (int i = 0; i < GeMethods::opmeth_size; i++) {
      if (m_op_method_mask & (1 << i)
          && !streq(GeMethods::op_image[i], ""))
        gtk_widget_set_sensitive(m_op_button_w[i], FALSE);
    }
    for (int i = 0; i < GeMethods::mntmeth_size; i++) {
      if (m_mnt_method_mask & (1 << i)
          && !streq(GeMethods::mnt_image[i], ""))
        gtk_widget_set_sensitive(m_mnt_button_w[i], FALSE);
    }
  } else {
    gdh_sVolumeInfo info;

    // Skip extern volumes
    sts = gdh_GetVolumeInfo(aref.Objid.vid, &info);
    if (EVEN(sts))
      return;

    if (info.cid == pwr_eClass_ExternVolume) {
      for (int i = 0; i < GeMethods::opmeth_size; i++) {
        if (m_op_method_mask & (1 << i)
            && !streq(GeMethods::op_image[i], ""))
          gtk_widget_set_sensitive(m_op_button_w[i], FALSE);
      }
      for (int i = 0; i < GeMethods::mntmeth_size; i++) {
        if (m_mnt_method_mask & (1 << i)
            && !streq(GeMethods::mnt_image[i], ""))
          gtk_widget_set_sensitive(m_mnt_button_w[i], FALSE);
      }
      return;
    }

    if (aref.Flags.b.Object)
      menu_type = xmenu_eItemType_Object;
    else if (aref.Flags.b.ObjectAttr)
      menu_type = xmenu_eItemType_AttrObject;
    else
      menu_type = xmenu_eItemType_Attribute;

    pwr_tAName aname;
    pwr_sClass_XttMethodsMask xm_mask;
    int mask_store = 0;

    sts = gdh_AttrrefToName(
        &aref, aname, sizeof(aname), cdh_mName_volumeStrict);
    if (EVEN(sts))
      return;

    sts = GeMethods::get_xm_mask(
        0, aname, &xm_mask, &mask_store, methods_command_cb, m_xnav);

    for (int i = 0; i < GeMethods::opmeth_size; i++) {
      if (m_op_method_mask & (1 << i)
          && !streq(GeMethods::op_image[i], "")) {
        if (xm_mask.OpMethods & (1 << i))
          gtk_widget_set_sensitive(m_op_button_w[i], TRUE);
        else
          gtk_widget_set_sensitive(m_op_button_w[i], FALSE);
      }
    }
    for (int i = 0; i < GeMethods::mntmeth_size; i++) {
      if (m_mnt_method_mask & (1 << i)
          && !streq(GeMethods::mnt_image[i], "")) {
        if (xm_mask.MntMethods & (1 << i))
          gtk_widget_set_sensitive(m_mnt_button_w[i], TRUE);
        else
          gtk_widget_set_sensitive(m_mnt_button_w[i], FALSE);
      }
    }
    if (mask_store) {
      strcat(aname, ".XttMethodsMask");
      sts = gdh_SetObjectInfo(aname, &xm_mask, sizeof(xm_mask));
      if (EVEN(sts))
        printf("Set mask error %s\n", aname);
    }
  }
}