import os
import sqlite3

from qgis.PyQt import uic, QtWidgets, QtCore

FORM_CLASS, _ = uic.loadUiType(os.path.join(
    os.path.dirname(__file__), 'cyanlove_postgresqlset_base.ui'))
# 相对导入方式，不能用import 否则会找不到模块，相对导入会从当前目录搜索

from .cyanlove_config_read_intfile import *
from pathlib import Path


class cyanlove_postgresqlset(QtWidgets.QDockWidget, FORM_CLASS):

    def __init__(self, parent=None):
        super(cyanlove_postgresqlset, self).__init__(parent)
        self.setupUi(self)
        self.setWindowFlags(QtCore.Qt.Dialog)  # 使对话框始终在前
        # 设置为模态窗口
        self.setWindowModality(QtCore.Qt.ApplicationModal)  # 或者使用 Qt.WindowModal
        self.pushButton.clicked.connect(self.setpostgresql)
        # 可选：如果你希望这个窗口在其他窗口前面显示
        self.raise_()

    def setpostgresql(self):
        # 读取用户输入的配置
        self.label_show.setText('开始配置..')
        database = self.textEdit_database.toPlainText().strip()
        user = self.textEdit_user.toPlainText().strip()
        password = self.textEdit_password.toPlainText().strip()
        port = self.textEdit_port.toPlainText().strip()

        # 固定值（可根据需要改为从界面获取）
        host = "localhost"
        options = "-c statement_timeout=50000"
        # 或者直接使用全局变量定义的文件路径，例如：
        config_path = os.path.join(os.path.dirname(__file__), 'config.ini')

        # 使用 configparser 读取/修改配置文件
        config = configparser.ConfigParser()
        config.read(config_path, encoding='utf-8')

        # 如果不存在 [PostgreSQL] 节，则创建
        if not config.has_section('PostgreSQL'):
            config.add_section('PostgreSQL')

        # 写入配置项
        config.set('PostgreSQL', 'database', database)
        config.set('PostgreSQL', 'user', user)
        config.set('PostgreSQL', 'password', password)
        config.set('PostgreSQL', 'host', host)
        config.set('PostgreSQL', 'port', port)
        config.set('PostgreSQL', 'options', options)

        # 写回文件
        with open(config_path, 'w', encoding='utf-8') as f:
            config.write(f)

        self.label_show.setText('PostgreSQL库配置成功!')
