# Standard Library Imports
from typing import Any, Optional, Tuple

# RAMSTK Package Imports
from ramstk.db.base import BaseDatabase as BaseDatabase
from ramstk.views.gtk3 import GdkPixbuf as GdkPixbuf
from ramstk.views.gtk3 import GObject as GObject
from ramstk.views.gtk3 import Gtk as Gtk
from ramstk.views.gtk3 import Pango as Pango
from ramstk.views.gtk3 import _ as _
from ramstk.views.gtk3.widgets.button import RAMSTKButton as RAMSTKButton
from ramstk.views.gtk3.widgets.button import RAMSTKCheckButton as RAMSTKCheckButton
from ramstk.views.gtk3.widgets.combo import RAMSTKComboBox as RAMSTKComboBox
from ramstk.views.gtk3.widgets.entry import RAMSTKEntry as RAMSTKEntry
from ramstk.views.gtk3.widgets.label import do_make_label_group as do_make_label_group

class RAMSTKDialog(Gtk.Dialog):
    def __init__(self, dlgtitle: str, **kwargs: Any) -> None: ...
    def do_destroy(self) -> None: ...
    def do_run(self) -> Any: ...

class RAMSTKDatabaseSelect(RAMSTKDialog):
    _dao: Any = ...
    _dic_icons: Any = ...
    _lst_databases: Any = ...
    _lst_labels: Any = ...
    _old_host: str = ...
    btnRefresh: Any = ...
    btnSave: Any = ...
    cmbDialect: Any = ...
    txtHost: Any = ...
    txtPort: Any = ...
    txtDatabase: Any = ...
    txtUser: Any = ...
    txtPassword: Any = ...
    tvwTreeView: Any = ...
    _lst_widgets: Any = ...
    database: Any = ...
    exists: bool = ...
    def __init__(self, dlgtitle: str, **kwargs: Any) -> None: ...
    def do_run(self) -> Gtk.ResponseType: ...
    def _get_database(self) -> None: ...
    def _request_load_databases(self, __button: RAMSTKButton) -> None: ...
    def __do_load_combobox(self) -> None: ...
    def __do_load_databases(self) -> None: ...
    def __do_set_callbacks(self) -> None: ...
    def __do_set_properties(self) -> None: ...
    def __make_ui(self) -> None: ...
    def __on_row_change(self, selection: Gtk.TreeSelection) -> None: ...

class RAMSTKDateSelect(Gtk.Dialog):
    _calendar: Any = ...
    def __init__(self, **kwargs: Any) -> None: ...
    def do_destroy(self) -> None: ...
    def do_run(self) -> Any: ...

class RAMSTKFileChooser(Gtk.FileChooserDialog):
    def __init__(self, title: str, parent: object) -> None: ...
    def do_destroy(self) -> None: ...
    def do_run(self) -> Tuple[Optional[Any], Optional[Any]]: ...

class RAMSTKMessageDialog(Gtk.MessageDialog):
    def __init__(self, parent: Gtk.Window = ...) -> None: ...
    def do_set_message(self, message: str) -> None: ...
    def do_set_message_type(self, message_type: str = ...) -> None: ...
    def do_run(self) -> Any: ...
    def do_destroy(self) -> None: ...
