void ListPropertyGridWidget::ProcessComboboxValueChanged(QComboBox* senderWidget, const PROPERTYGRIDWIDGETSITER& iter,
                                         const QString& value)
{
    if (senderWidget == NULL)
    {
        Logger::Error("BackGroundPropertyGridWidget::ProcessComboboxValueChanged: senderWidget is NULL!");
        return;
    }
    
    // Try to process this control-specific widgets.
    int selectedIndex = senderWidget->currentIndex();
    
    if (senderWidget == ui->aggregatorsComboBox)
    {
		CustomProcessComboboxValueChanged(iter, nodeIDList.at(selectedIndex));
		return;
    }
	else if (senderWidget == ui->orientationComboBox)
	{
		CustomProcessComboboxValueChanged(iter, ListPropertyGridWidgetHelper::GetOrientation(selectedIndex));
		return;
	}

    // No postprocessing was applied - use the generic process.
    BasePropertyGridWidget::ProcessComboboxValueChanged(senderWidget, iter, value);
}
void BackGroundPropertyGridWidget::ProcessComboboxValueChanged(QComboBox* senderWidget, const PROPERTYGRIDWIDGETSITER& iter,
                                         const QString& value)
{
    if (senderWidget == NULL)
    {
        Logger::Error("BackGroundPropertyGridWidget::ProcessComboboxValueChanged: senderWidget is NULL!");
        return;
    }
    
    // Try to process this control-specific widgets.
    int selectedIndex = senderWidget->currentIndex();
    
    if (senderWidget == ui->drawTypeComboBox)
    {
		HandleDrawTypeComboBox();
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetDrawType(selectedIndex));
    }
    else if (senderWidget == ui->colorInheritComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetColorInheritType(selectedIndex));
    }
    else if (senderWidget == ui->alignComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetAlignType(selectedIndex));
    }
	else if (senderWidget == ui->modificationComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetModificationType(selectedIndex));
    }

    // No postprocessing was applied - use the generic process.
    BasePropertyGridWidget::ProcessComboboxValueChanged(senderWidget, iter, value);
}
void TextPropertyGridWidget::ProcessComboboxValueChanged(QComboBox* senderWidget, const PROPERTYGRIDWIDGETSITER& iter,
                                                                const QString& value)
{
	if (senderWidget == NULL)
    {
        Logger::Error("TextPropertyGridWidget::ProcessComboboxValueChanged: senderWidget is NULL!");
        return;
    }
    
    // Try to process this control-specific widgets.
    int selectedIndex = senderWidget->currentIndex();
    
    if (senderWidget == ui->alignComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetAlignType(selectedIndex));
    }
	else if(senderWidget == ui->fontPresetComboBox)
    {
        Font* curFont = PropertiesHelper::GetAllPropertyValues<Font*>(this->activeMetadata, iter->second.getProperty().name());
        QString curFontPresetName = QString::fromStdString(EditorFontManager::Instance()->GetLocalizedFontName(curFont));
        QString newFontPresetName = senderWidget->currentText();
        Font* newFont = EditorFontManager::Instance()->GetLocalizedFont(newFontPresetName.toStdString(), LocalizationSystem::Instance()->GetCurrentLocale());
        
        Logger::FrameworkDebug("TextPropertyGridWidget::ProcessComboboxValueChanged curFont=%p (%s) newFont=%p (%s)", curFont, curFontPresetName.toStdString().c_str(), newFont, newFontPresetName.toStdString().c_str());
        
        if(!newFont)
        {
            Logger::Warning("TextPropertyGridWidget::ProcessComboboxValueChanged newFont==NULL");
            return;
        }
        
        if(curFont == newFont)
        {
            return;
        }
        
        BaseCommand* setFontCommand = new ChangePropertyCommand<Font *>(activeMetadata, iter->second, newFont);
        CommandsController::Instance()->ExecuteCommand(setFontCommand);
        SafeRelease(setFontCommand);
        return;
    }
    
    // No postprocessing was applied - use the generic process.
    BasePropertyGridWidget::ProcessComboboxValueChanged(senderWidget, iter, value);
}
void UITextFieldPropertyGridWidget::ProcessComboboxValueChanged(QComboBox* senderWidget, const PROPERTYGRIDWIDGETSITER& iter,
                                             const QString& value)
{
	if (senderWidget == NULL)
    {
        Logger::Error("UITextFieldPropertyGridWidget::ProcessComboboxValueChanged: senderWidget is NULL!");
        return;
    }
    
    // Try to process this control-specific widgets.
    int selectedIndex = senderWidget->currentIndex();

	if (senderWidget == ui->alignComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetAlignType(selectedIndex));
    }
	else if (senderWidget == ui->autoCapitalizationTypeComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetAutoCapitalizationType(selectedIndex));
    }
	else if (senderWidget == ui->autoCorrectionTypeComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetAutoCorrectionType(selectedIndex));
    }
	else if (senderWidget == ui->spellCheckingTypeComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetSpellCheckingType(selectedIndex));
    }
	else if (senderWidget == ui->keyboardAppearanceTypeComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetKeyboardAppearanceType(selectedIndex));
    }
	else if (senderWidget == ui->keyboardTypeComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetKeyboardType(selectedIndex));
    }
	else if (senderWidget == ui->returnKeyTypeComboBox)
    {
        return CustomProcessComboboxValueChanged(iter, BackgroundGridWidgetHelper::GetReturnKeyType(selectedIndex));
    }

    // No postprocessing was applied - use the generic process.
    BasePropertyGridWidget::ProcessComboboxValueChanged(senderWidget, iter, value);
}