private void onTVSelectionChanged(object o, EventArgs args)
    {
        string selectedName = getSelectedName();

        if (selectedName == "")
        {
            return;
        }

        List <EncoderConfigurationSQLObject> list = SqliteEncoderConfiguration.Select(false, encoderGI, selectedName);

        if (list != null && list.Count == 1)
        {
            EncoderConfigurationSQLObject econfSO = list[0];
            entry_save_name.Text        = econfSO.name;
            entry_save_description.Text = econfSO.description;

            //mark all as unactive
            SqliteEncoderConfiguration.MarkAllAsUnactive(false, encoderGI);
            econfSO.active = true;
            //mark this as active
            SqliteEncoderConfiguration.Update(false, encoderGI, selectedName, econfSO);

            EncoderConfigurationWindowBox.updateGUIFromEncoderConfiguration(econfSO.encoderConfiguration);
        }
    }
    void on_button_new_clicked(object o, EventArgs args)
    {
        string selectedName = getSelectedName();

        if (selectedName == "")
        {
            return;
        }

        List <EncoderConfigurationSQLObject> list = SqliteEncoderConfiguration.Select(false, encoderGI, selectedName);

        if (list != null && list.Count == 1)
        {
            EncoderConfigurationSQLObject econfSO = list[0];
            econfSO.uniqueID = -1;             //to be entered as null and not repeat the uniqueID

            //add a suffix
            econfSO.name += "_" + Catalog.GetString("copy");
            //add more suffixes until name is unique
            econfSO.name = SqliteEncoderConfiguration.IfNameExistsAddSuffix(econfSO.name, Catalog.GetString("copy"));

            SqliteEncoderConfiguration.MarkAllAsUnactive(false, encoderGI);
            econfSO.active = true;
            SqliteEncoderConfiguration.Insert(false, econfSO);

            store.AppendValues(new string[] { econfSO.name, econfSO.description });
            UtilGtk.TreeviewSelectRowWithName(treeview_select, store, colName, econfSO.name, true);
        }
    }
    void on_button_import_clicked(object o, EventArgs args)
    {
        Gtk.FileChooserDialog fc =
            new Gtk.FileChooserDialog(Catalog.GetString("Select file to import"),
                                      encoder_configuration,
                                      FileChooserAction.Open,
                                      Catalog.GetString("Cancel"), ResponseType.Cancel,
                                      Catalog.GetString("Accept"), ResponseType.Accept
                                      );

        fc.Filter = new FileFilter();
        fc.Filter.AddPattern("*.txt");

        if (fc.Run() == (int)ResponseType.Accept)
        {
            try {
                string contents = Util.ReadFile(fc.Filename, false);
                if (contents != null && contents != "")
                {
                    EncoderConfigurationSQLObject econfSO = new EncoderConfigurationSQLObject(contents);
                    if (econfSO.encoderGI != encoderGI)
                    {
                        if (encoderGI == Constants.EncoderGI.GRAVITATORY)
                        {
                            new DialogMessage(Constants.MessageTypes.WARNING,
                                              Catalog.GetString("Chronojump is currently in gravitory mode.") + "\n" +
                                              Catalog.GetString("Selected configuration is inertial.") + "\n\n" +
                                              Catalog.GetString("If you still want to import it, change to inertial mode."));
                        }
                        else if (encoderGI == Constants.EncoderGI.INERTIAL)
                        {
                            new DialogMessage(Constants.MessageTypes.WARNING,
                                              Catalog.GetString("Chronojump is currently in inertial mode.") + "\n" +
                                              Catalog.GetString("Selected configuration is gravitatory.") + "\n\n" +
                                              Catalog.GetString("If you still want to import it, change to gravitatory mode."));
                        }
                    }
                    else if (econfSO.name != null && econfSO.name != "")
                    {
                        //add more suffixes until name is unique
                        econfSO.name = SqliteEncoderConfiguration.IfNameExistsAddSuffix(econfSO.name, "_" + Catalog.GetString("copy"));

                        SqliteEncoderConfiguration.MarkAllAsUnactive(false, encoderGI);
                        econfSO.active = true;
                        SqliteEncoderConfiguration.Insert(false, econfSO);

                        store.AppendValues(new string[] { econfSO.name, econfSO.description });
                        UtilGtk.TreeviewSelectRowWithName(treeview_select, store, colName, econfSO.name, true);
                    }
                }
            }
            catch {
                LogB.Warning("Catched! Configuration cannot be imported");
                new DialogMessage(Constants.MessageTypes.WARNING, Catalog.GetString("Error importing data."));
            }
        }
        //Don't forget to call Destroy() or the FileChooserDialog window won't get closed.
        fc.Destroy();
    }