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); } } }