void ColoringRulesDialog::on_buttonBox_clicked(QAbstractButton *button)
{
    if (button == import_button_) {
        QString file_name = QFileDialog::getOpenFileName(this, wsApp->windowTitleString(tr("Import Coloring Rules")),
                                                         wsApp->lastOpenDir().path());
        gchar* err_msg = NULL;
        if (!color_filters_import(file_name.toUtf8().constData(), this, &err_msg, color_filter_add_cb)) {
            simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg);
            g_free(err_msg);
        }
    } else if (button == export_button_) {
        int num_items = ui->coloringRulesTreeWidget->selectedItems().count();

        if (num_items < 1) {
            num_items = ui->coloringRulesTreeWidget->topLevelItemCount();
        }

        if (num_items < 1) return;

        QString caption = wsApp->windowTitleString(tr("Export %1 Coloring Rules").arg(num_items));
        QString file_name = QFileDialog::getSaveFileName(this, caption,
                                                         wsApp->lastOpenDir().path());
        if (!file_name.isEmpty()) {
            GSList *cfl = createColorFilterList();
            gchar* err_msg = NULL;
            if (!color_filters_export(file_name.toUtf8().constData(), cfl, FALSE, &err_msg)) {
                simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg);
                g_free(err_msg);
            }
            color_filter_list_delete(&cfl);
        }
    }
}
void ColoringRulesDialog::on_buttonBox_accepted()
{
    GSList *cfl = createColorFilterList();
    if (prefs.unknown_colorfilters) {
        QMessageBox mb;
        mb.setText(tr("Your coloring rules file contains unknown rules"));
        mb.setInformativeText(tr("Wireshark doesn't recognize one or more of your coloring rules. "
                                 "Saving will discard them."));
        mb.setStandardButtons(QMessageBox::Save | QMessageBox::Cancel);
        mb.setDefaultButton(QMessageBox::Save);

        int result = mb.exec();
        if (result != QMessageBox::Save) return;
    }
    color_filters_apply(conversation_colors_, cfl);
    if (!color_filters_write(cfl)) {
        QMessageBox::warning(this, tr("Unable to save coloring rules"), g_strerror(errno));
    }
    color_filter_list_delete(&cfl);
}
void ColoringRulesDialog::on_buttonBox_accepted()
{
    GSList *cfl = createColorFilterList();
    gchar* err_msg = NULL;
    if (prefs.unknown_colorfilters) {
        QMessageBox mb;
        mb.setText(tr("Your coloring rules file contains unknown rules"));
        mb.setInformativeText(tr("Wireshark doesn't recognize one or more of your coloring rules. "
                                 "They have been disabled."));
        mb.setStandardButtons(QMessageBox::Ok);

        int result = mb.exec();
        if (result != QMessageBox::Save) return;
    }
    if (!color_filters_apply(conversation_colors_, cfl, &err_msg)) {
        simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg);
        g_free(err_msg);
    }
    if (!color_filters_write(cfl, &err_msg)) {
        QMessageBox::warning(this, tr("Unable to save coloring rules: %s"), g_strerror(errno));
        g_free(err_msg);
    }
    color_filter_list_delete(&cfl);
}