void UITextFieldPropertyGridWidget::ProcessPushButtonClicked(QPushButton *senderWidget)
{
	    if ((activeMetadata == NULL) || (senderWidget != this->ui->fontSelectButton))
    {
        // No control already assinged or not fontSelectButton
        return;
    }
    
	// Get current value of Font property
	Font *fontPropertyValue = PropertiesHelper::GetPropertyValue<Font *>(this->activeMetadata,
																		 PropertyNames::FONT_PROPERTY_NAME,
																		 false);
	// Get sprite path from graphics font
	QString currentGFontPath = ResourcesManageHelper::GetGraphicsFontPath(fontPropertyValue);

    //Call font selection dialog - with ok button and preset of graphics font path
    FontManagerDialog *fontDialog = new FontManagerDialog(true, currentGFontPath);
    Font *resultFont = NULL;
    
    if ( fontDialog->exec() == QDialog::Accepted )
    {
        resultFont = fontDialog->ResultFont();
    }
    
    //Delete font select dialog reference
    SafeDelete(fontDialog);
    
    if (!resultFont)
    {
        return;
    }
    
    PROPERTYGRIDWIDGETSITER iter = propertyGridWidgetsMap.find(senderWidget);
    if (iter == propertyGridWidgetsMap.end())
    {
        Logger::Error("OnPushButtonClicked - unable to find attached property in the propertyGridWidgetsMap!");
        return;
    }
    
	// Don't update the property if the text wasn't actually changed.
    Font* curValue = PropertiesHelper::GetAllPropertyValues<Font*>(this->activeMetadata, iter->second.getProperty().name());
	if (curValue && curValue->IsEqual(resultFont))
	{
		SafeRelease(resultFont);
		return;
	}

    BaseCommand* command = new ChangePropertyCommand<Font *>(activeMetadata, iter->second, resultFont);
    CommandsController::Instance()->ExecuteCommand(command);
    SafeRelease(command);
	// TODO - probable memory leak. Need to investigate how to fix it
	// SafeRelease(resultFont);
}
void TextPropertyGridWidget::ProcessPushButtonClicked(QPushButton *senderWidget)
{
    if (activeMetadata == NULL)
    {
        // No control already assinged or not fontSelectButton
        return;
    }
    
    if(senderWidget == this->ui->fontSelectButton)
    {
        //TODO: remove this code or modify it to set preset instead of setting font
#if 0
        
        // Get current value of Font property
        Font *fontPropertyValue = PropertiesHelper::GetPropertyValue<Font *>(this->activeMetadata,
                                                                             PropertyNames::FONT_PROPERTY_NAME,
                                                                             false);
        // Get sprite path from graphics font
        QString currentGFontPath = ResourcesManageHelper::GetGraphicsFontPath(fontPropertyValue);
        
        //Call font selection dialog - with ok button and preset of graphics font path
        FontManagerDialog *fontDialog = new FontManagerDialog(true, currentGFontPath);
        Font *resultFont = NULL;
        
        if ( fontDialog->exec() == QDialog::Accepted )
        {
            resultFont = fontDialog->ResultFont();
        }
        
        //Delete font select dialog reference
        SafeDelete(fontDialog);
        
        if (!resultFont)
        {
            return;
        }
        
        PROPERTYGRIDWIDGETSITER iter = propertyGridWidgetsMap.find(senderWidget);
        if (iter == propertyGridWidgetsMap.end())
        {
            Logger::Error("OnPushButtonClicked - unable to find attached property in the propertyGridWidgetsMap!");
            return;
        }
        
        // Don't update the property if the text wasn't actually changed.
        Font* curValue = PropertiesHelper::GetAllPropertyValues<Font*>(this->activeMetadata, iter->second.getProperty().name());
        if (curValue && curValue->IsEqual(resultFont))
        {
            SafeRelease(resultFont);
            return;
        }
        
        BaseCommand* command = new ChangePropertyCommand<Font *>(activeMetadata, iter->second, resultFont);
        CommandsController::Instance()->ExecuteCommand(command);
        SafeRelease(command);
        // TODO - probable memory leak. Need to investigate how to fix it
        // SafeRelease(resultFont);
#endif
    }
    else if(senderWidget == this->ui->fontPresetEditButton)
    {
        // open font preset dialog, edit preset, apply changes
        
        // Get current value of Font property
        Font *fontPropertyValue = PropertiesHelper::GetPropertyValue<Font *>(this->activeMetadata,
                                                                             PropertyNames::FONT_PROPERTY_NAME,
                                                                             false);
        String fontPresetName = EditorFontManager::Instance()->GetLocalizedFontName(fontPropertyValue);
        
        Logger::FrameworkDebug("TextPropertyGridWidget::ProcessPushButtonClicked fontPropertyValue=%p fontPresetName=%s", fontPropertyValue, fontPresetName.c_str());
        // Get sprite path from graphics font
        //QString currentGFontPath = ResourcesManageHelper::GetGraphicsFontPath(fontPropertyValue);
        
        //Call font selection dialog - with ok button and preset of graphics font path
        //FontManagerDialog *fontDialog = new FontManagerDialog(true, currentGFontPath);
        EditFontDialog *editFontDialog = new EditFontDialog(fontPresetName);
        
        if ( editFontDialog->exec() == QDialog::Accepted )
        {
            PROPERTYGRIDWIDGETSITER iter = propertyGridWidgetsMap.find(senderWidget);
            if (iter == propertyGridWidgetsMap.end())
            {
                Logger::Error("OnPushButtonClicked - unable to find attached property in the propertyGridWidgetsMap!");
                SafeDelete(editFontDialog);
                return;
            }
            
            BaseCommand* command = new ChangeFontPropertyCommand(activeMetadata, iter->second, editFontDialog->GetResult());
            CommandsController::Instance()->ExecuteCommand(command);
            SafeRelease(command);
        }
        
        //Delete font select dialog reference
        SafeDelete(editFontDialog);
    }
}
void EditFontDialog::ProcessPushButtonClicked(QPushButton *senderWidget)
{
    if(senderWidget == ui->fontSelectButton || senderWidget == ui->localizedFontSelectButton)
    {
        
        // Get current value of Font property
        Font *fontPropertyValue = (senderWidget == ui->fontSelectButton ? dialogResult.font : dialogResult.GetLocalizedFont(currentLocale));

        // Get sprite path from graphics font
        QString currentGFontPath = ResourcesManageHelper::GetGraphicsFontPath(fontPropertyValue);
        
        //Call font selection dialog - with ok button and preset of graphics font path
        FontManagerDialog *fontDialog = new FontManagerDialog(true, currentGFontPath);
        Font *resultFont = NULL;
        
        if ( fontDialog->exec() == QDialog::Accepted )
        {
            resultFont = fontDialog->ResultFont();
        }
        
        //Delete font select dialog reference
        SafeDelete(fontDialog);
        
        if (!resultFont)
        {
            return;
        }
        
        //        PROPERTYGRIDWIDGETSITER iter = propertyGridWidgetsMap.find(senderWidget);
        //        if (iter == propertyGridWidgetsMap.end())
        //        {
        //            Logger::Error("OnPushButtonClicked - unable to find attached property in the propertyGridWidgetsMap!");
        //            return;
        //        }
        
        // Don't update the property if the text wasn't actually changed.
        //Font* curValue = PropertiesHelper::GetAllPropertyValues<Font*>(this->activeMetadata, iter->second.getProperty().name());
        Font* curValue = fontPropertyValue;
        if (curValue && curValue->IsEqual(resultFont))
        {
            SafeRelease(resultFont);
            return;
        }
        
        if(senderWidget == ui->fontSelectButton)
        {
            SafeRelease(dialogResult.font);
            dialogResult.font = SafeRetain(resultFont);
            
            UpdateDefaultFontParams();
        }
        else
        {
            dialogResult.SetLocalizedFont(resultFont, currentLocale);
            
            UpdateLocalizedFontParams();
        }
        SafeRelease(resultFont);
    }
    else if(senderWidget == ui->resetFontForLocalePushButton)
    {
        Font *defaultFontClone = dialogResult.font->Clone();
        dialogResult.SetLocalizedFont(defaultFontClone, currentLocale);
        SafeRelease(defaultFontClone);
        
        UpdateLocalizedFontParams();
    }
}