예제 #1
0
    def __init__(self, par, server=None):
        self.par = par
        self.serverId = None
        self.installerId = None
        if server is not None:
            self.serverId = server.getLocalId()
        gtk.Frame.__init__(self, _("Skarphed Admin :: Create Instance"))
        self.targetsRendered = False

        self.extradata_widgets = {}
        self.extradata_table = None
        self.no_installer_label = None

        self.alignment = gtk.Alignment(0.5, 0.5, 0.1, 0.2)
        self.vbox = gtk.VBox()
        self.set_border_width(10)
        self.toplabel = gtk.Label(_("Please configure the new Installation"))

        self.frm_srv = gtk.Frame(_("Server"))
        self.frm_repo = gtk.Frame(_("Repository"))
        self.frm_db = gtk.Frame(_("Database"))
        self.frm_target = gtk.Frame(_("Target-OS"))
        self.frm_extradata = gtk.Frame()

        self.frm_srv_tbl = gtk.Table(2, 2, False)
        self.frm_repo_tbl = gtk.Table(2, 1, False)
        self.frm_db_tbl = gtk.Table(2, 2, False)
        self.frm_target_tbl = gtk.Table(3, 1, False)
        self.frm_root_tbl = gtk.Table(2, 2, False)

        self.srv_combobox = ObjectCombo(self, "Server", server)

        self.srv_label = gtk.Label(_("Server:"))
        self.srv_name_label = gtk.Label(_("New Instance Name:"))
        self.srv_name_entry = DefaultEntry(default_message=_("Instance-Name"))

        self.frm_srv_tbl.attach(self.srv_label, 0, 1, 0, 1)
        self.frm_srv_tbl.attach(self.srv_combobox, 1, 2, 0, 1)
        self.frm_srv_tbl.attach(self.srv_name_label, 0, 1, 1, 2)
        self.frm_srv_tbl.attach(self.srv_name_entry, 1, 2, 1, 2)
        self.frm_srv.add(self.frm_srv_tbl)

        self.repo_combobox = ObjectCombo(self,
                                         "Skarphed_repo",
                                         selectFirst=True)
        self.repo_label = gtk.Label(_("Repository"))

        self.frm_repo_tbl.attach(self.repo_label, 0, 1, 0, 1)
        self.frm_repo_tbl.attach(self.repo_combobox, 1, 2, 0, 1)
        self.frm_repo.add(self.frm_repo_tbl)

        self.db_radio_new = gtk.RadioButton(None, _("Create new on Database:"))
        self.db_radio_use = gtk.RadioButton(self.db_radio_new,
                                            _("Use existing Schema:"))
        self.db_db_combo = ObjectCombo(self, "Database", selectFirst=True)
        self.db_schema_combo = ObjectCombo(self, "Schema", selectFirst=True)
        self.db_schema_combo.set_sensitive(False)

        self.db_radio_new.connect("toggled", self.cb_ToggledDb, 1)
        self.db_radio_use.connect("toggled", self.cb_ToggledDb, 2)

        self.frm_db_tbl.attach(self.db_radio_new, 0, 1, 0, 1)
        self.frm_db_tbl.attach(self.db_db_combo, 1, 2, 0, 1)
        self.frm_db_tbl.attach(self.db_radio_use, 0, 1, 1, 2)
        self.frm_db_tbl.attach(self.db_schema_combo, 1, 2, 1, 2)
        self.frm_db.add(self.frm_db_tbl)

        self.target_label = gtk.Label(_("Target-OS:"))
        self.target_display = gtk.Label("")

        self.frm_target_tbl.attach(self.target_label, 0, 1, 0, 1)
        self.frm_target_tbl.attach(self.target_display, 1, 2, 0, 1)
        self.frm_target.add(self.frm_target_tbl)

        self.ok = gtk.Button(stock=gtk.STOCK_OK)
        self.cancel = gtk.Button(stock=gtk.STOCK_CLOSE)
        self.progress = gtk.ProgressBar()
        self.buttonhbox = gtk.HBox()
        self.buttonhbox.pack_start(self.progress, True)
        self.buttonhbox.pack_start(self.cancel, False)
        self.buttonhbox.pack_start(self.ok, False)

        self.vboxdummy = gtk.Label("")
        self.vbox.pack_start(self.toplabel)
        self.vbox.pack_start(self.frm_srv)
        self.vbox.pack_start(self.frm_repo)
        self.vbox.pack_start(self.frm_db)
        self.vbox.pack_start(self.frm_target)
        self.vbox.pack_start(self.frm_extradata)
        self.vbox.pack_start(self.vboxdummy)
        self.vbox.pack_start(self.buttonhbox)
        self.alignment.add(self.vbox)
        self.add(self.alignment)

        self.ok.connect("clicked", self.cb_Ok)
        self.cancel.connect("clicked", self.cb_Cancel)
        self.connect("delete-event", self.cb_Cancel)
        self.srv_combobox.connect("changed", self.render)

        self.getApplication().getMainWindow().openDialogPane(self)
        self.getApplication().getObjectStore().addCallback(self.render)
        self.render()
예제 #2
0
class NewSkarphedPage(gtk.Frame):
    def __init__(self, par, server=None):
        self.par = par
        self.serverId = None
        self.installerId = None
        if server is not None:
            self.serverId = server.getLocalId()
        gtk.Frame.__init__(self, _("Skarphed Admin :: Create Instance"))
        self.targetsRendered = False

        self.extradata_widgets = {}
        self.extradata_table = None
        self.no_installer_label = None

        self.alignment = gtk.Alignment(0.5, 0.5, 0.1, 0.2)
        self.vbox = gtk.VBox()
        self.set_border_width(10)
        self.toplabel = gtk.Label(_("Please configure the new Installation"))

        self.frm_srv = gtk.Frame(_("Server"))
        self.frm_repo = gtk.Frame(_("Repository"))
        self.frm_db = gtk.Frame(_("Database"))
        self.frm_target = gtk.Frame(_("Target-OS"))
        self.frm_extradata = gtk.Frame()

        self.frm_srv_tbl = gtk.Table(2, 2, False)
        self.frm_repo_tbl = gtk.Table(2, 1, False)
        self.frm_db_tbl = gtk.Table(2, 2, False)
        self.frm_target_tbl = gtk.Table(3, 1, False)
        self.frm_root_tbl = gtk.Table(2, 2, False)

        self.srv_combobox = ObjectCombo(self, "Server", server)

        self.srv_label = gtk.Label(_("Server:"))
        self.srv_name_label = gtk.Label(_("New Instance Name:"))
        self.srv_name_entry = DefaultEntry(default_message=_("Instance-Name"))

        self.frm_srv_tbl.attach(self.srv_label, 0, 1, 0, 1)
        self.frm_srv_tbl.attach(self.srv_combobox, 1, 2, 0, 1)
        self.frm_srv_tbl.attach(self.srv_name_label, 0, 1, 1, 2)
        self.frm_srv_tbl.attach(self.srv_name_entry, 1, 2, 1, 2)
        self.frm_srv.add(self.frm_srv_tbl)

        self.repo_combobox = ObjectCombo(self,
                                         "Skarphed_repo",
                                         selectFirst=True)
        self.repo_label = gtk.Label(_("Repository"))

        self.frm_repo_tbl.attach(self.repo_label, 0, 1, 0, 1)
        self.frm_repo_tbl.attach(self.repo_combobox, 1, 2, 0, 1)
        self.frm_repo.add(self.frm_repo_tbl)

        self.db_radio_new = gtk.RadioButton(None, _("Create new on Database:"))
        self.db_radio_use = gtk.RadioButton(self.db_radio_new,
                                            _("Use existing Schema:"))
        self.db_db_combo = ObjectCombo(self, "Database", selectFirst=True)
        self.db_schema_combo = ObjectCombo(self, "Schema", selectFirst=True)
        self.db_schema_combo.set_sensitive(False)

        self.db_radio_new.connect("toggled", self.cb_ToggledDb, 1)
        self.db_radio_use.connect("toggled", self.cb_ToggledDb, 2)

        self.frm_db_tbl.attach(self.db_radio_new, 0, 1, 0, 1)
        self.frm_db_tbl.attach(self.db_db_combo, 1, 2, 0, 1)
        self.frm_db_tbl.attach(self.db_radio_use, 0, 1, 1, 2)
        self.frm_db_tbl.attach(self.db_schema_combo, 1, 2, 1, 2)
        self.frm_db.add(self.frm_db_tbl)

        self.target_label = gtk.Label(_("Target-OS:"))
        self.target_display = gtk.Label("")

        self.frm_target_tbl.attach(self.target_label, 0, 1, 0, 1)
        self.frm_target_tbl.attach(self.target_display, 1, 2, 0, 1)
        self.frm_target.add(self.frm_target_tbl)

        self.ok = gtk.Button(stock=gtk.STOCK_OK)
        self.cancel = gtk.Button(stock=gtk.STOCK_CLOSE)
        self.progress = gtk.ProgressBar()
        self.buttonhbox = gtk.HBox()
        self.buttonhbox.pack_start(self.progress, True)
        self.buttonhbox.pack_start(self.cancel, False)
        self.buttonhbox.pack_start(self.ok, False)

        self.vboxdummy = gtk.Label("")
        self.vbox.pack_start(self.toplabel)
        self.vbox.pack_start(self.frm_srv)
        self.vbox.pack_start(self.frm_repo)
        self.vbox.pack_start(self.frm_db)
        self.vbox.pack_start(self.frm_target)
        self.vbox.pack_start(self.frm_extradata)
        self.vbox.pack_start(self.vboxdummy)
        self.vbox.pack_start(self.buttonhbox)
        self.alignment.add(self.vbox)
        self.add(self.alignment)

        self.ok.connect("clicked", self.cb_Ok)
        self.cancel.connect("clicked", self.cb_Cancel)
        self.connect("delete-event", self.cb_Cancel)
        self.srv_combobox.connect("changed", self.render)

        self.getApplication().getMainWindow().openDialogPane(self)
        self.getApplication().getObjectStore().addCallback(self.render)
        self.render()

    def cb_Ok(self, widget=None, data=None):
        server = self.srv_combobox.getSelected()

        if self.db_radio_new.get_active():
            db = self.db_db_combo.getSelected()
            repo = self.repo_combobox.getSelected()
            newSchemaName = self.srv_name_entry.get_text()
            newSchemaName = newSchemaName.translate(
                None, "!\"§$%&/()=?`´#+~'><|^¹²³¼½¬{[]}\\ *-.,:;")
            schemaInfo = db.createSchema(newSchemaName, repo)
            schemaInfo['ip'] = db.getServer().getIp()
        elif self.db_radio_use.get_active():
            schema = self.db_schema_combo.getSelected()
            schemaInfo = {
                'name': schema.db_name,
                'user': schema.db_user,
                'pass': schema.db_password,
                'ip': schema.getDatabase().getServer().getIp()
            }

        instanceData = {
            "core.name": self.srv_name_entry.get_text(),
            "db.ip": schemaInfo['ip'],
            "db.name": schemaInfo['name'],
            "db.user": schemaInfo['user'],
            "db.password": schemaInfo['pass']
        }

        for key, widget in self.extradata_widgets.items():
            instanceData[key] = widget.get_text()

        installer = server.installNewInstance(instanceData)
        self.installerId = installer.getLocalId()

    def cb_Cancel(self, widget=None, data=None):
        self.srv_combobox.destroy()
        self.repo_combobox.destroy()
        self.db_db_combo.destroy()
        self.db_schema_combo.destroy()
        self.getApplication().getMainWindow().closeDialogPane()

    def cb_ToggledDb(self, widget=None, data=None):
        if data == 1:
            self.db_db_combo.set_sensitive(True)
            self.db_schema_combo.set_sensitive(False)
            self.repo_combobox.set_sensitive(True)
        elif data == 2:
            self.db_db_combo.set_sensitive(False)
            self.db_schema_combo.set_sensitive(True)
            self.repo_combobox.set_sensitive(False)

    def render(self):
        self.srv_combobox.render()
        self.db_schema_combo.render()
        self.db_db_combo.render()
        """if not self.targetsRendered:
            targets = Server.INSTALLATION_TARGETS
            for target in targets:
                self.target_combobox_model.append((target,))
            self.target_combobox.set_active_iter(self.target_combobox_model.get_iter_first())
            self.targetsRendered=True"""

        if self.extradata_table is not None:
            self.extradata_table.destroy()
            self.extradata_table = None
        if self.no_installer_label is not None:
            self.no_installer_label.destroy()
            self.no_installer_label = None

        server = self.srv_combobox.getSelected()

        if server is not None:
            target = server.getTarget()
            if server.isTargetUsable():
                self.target_display.set_text(target.getName())
                self.frm_extradata.set_label_widget(gtk.Label(
                    target.getName()))
                extradata = target.getExtraParams()
                extradata_table = gtk.Table(2, len(extradata), False)
                i = 0
                for key, value in extradata.items():
                    label = gtk.Label(value[0])
                    entry = DefaultEntry(default_message=value[1])
                    self.extradata_widgets[key] = entry
                    extradata_table.attach(label, 0, 1, i, i + 1)
                    extradata_table.attach(entry, 1, 2, i, i + 1)
                    i += 1
                self.extradata_table = extradata_table
                self.frm_extradata.add(extradata_table)
                extradata_table.show_all()
                self.ok.set_sensitive(True)
            else:
                self.no_installer_label = gtk.Label(
                    _("No appropriate installer available"))
                self.frm_extradata.add(self.no_installer_label)
                self.no_installer_label.show()
                self.target_display.set_text(target)
                self.ok.set_sensitive(False)

        if self.installerId is not None:
            try:
                installer = self.getApplication().getLocalObjectById(
                    self.installerId)
                self.progress.set_fraction(installer.getStatus() / 100)
                self.progress.set_text(
                    _("Installing ... %d %%") % (installer.getStatus(), ))

                sensitive = installer.status == 100
            except GenericObjectStoreException:
                sensitive = True

            self.srv_combobox.set_sensitive(sensitive)
            self.repo_combobox.set_sensitive(sensitive)
            self.srv_name_entry.set_sensitive(sensitive)
            self.db_db_combo.set_sensitive(sensitive)
            self.db_schema_combo.set_sensitive(sensitive)
            self.db_radio_new.set_sensitive(sensitive)
            self.db_radio_use.set_sensitive(sensitive)
            for widget in self.extradata_widgets.values():
                widget.set_sensitive(sensitive)
            self.ok.set_sensitive(sensitive)
            self.cancel.set_sensitive(sensitive)

    def getPar(self):
        return self.par

    def getApplication(self):
        return self.par.getApplication()
예제 #3
0
    def __init__(self, par, server=None):
        self.par = par
        self.serverId = None
        self.installerId = None
        if server is not None:
            self.serverId = server.getLocalId()
        gtk.Frame.__init__(self, _("Skarphed Admin :: Create Instance"))
        self.targetsRendered = False

        self.extradata_widgets = {}
        self.extradata_table = None
        self.no_installer_label = None

        self.alignment = gtk.Alignment(0.5, 0.5, 0.1, 0.2)
        self.vbox = gtk.VBox()
        self.set_border_width(10)
        self.toplabel = gtk.Label(_("Please configure the new Installation"))

        self.frm_srv = gtk.Frame(_("Server"))
        self.frm_repo = gtk.Frame(_("Repository"))
        self.frm_db = gtk.Frame(_("Database"))
        self.frm_target = gtk.Frame(_("Target-OS"))
        self.frm_extradata = gtk.Frame()

        self.frm_srv_tbl = gtk.Table(2, 2, False)
        self.frm_repo_tbl = gtk.Table(2, 1, False)
        self.frm_db_tbl = gtk.Table(2, 2, False)
        self.frm_target_tbl = gtk.Table(3, 1, False)
        self.frm_root_tbl = gtk.Table(2, 2, False)

        self.srv_combobox = ObjectCombo(self, Server, server)

        self.srv_label = gtk.Label(_("Server:"))
        self.srv_name_label = gtk.Label(_("New Instance Name:"))
        self.srv_name_entry = DefaultEntry(default_message=_("Instance-Name"))

        self.frm_srv_tbl.attach(self.srv_label, 0, 1, 0, 1)
        self.frm_srv_tbl.attach(self.srv_combobox, 1, 2, 0, 1)
        self.frm_srv_tbl.attach(self.srv_name_label, 0, 1, 1, 2)
        self.frm_srv_tbl.attach(self.srv_name_entry, 1, 2, 1, 2)
        self.frm_srv.add(self.frm_srv_tbl)

        self.repo_combobox = ObjectCombo(self, Skarphed_repo, selectFirst=True)
        self.repo_label = gtk.Label(_("Repository"))

        self.frm_repo_tbl.attach(self.repo_label, 0, 1, 0, 1)
        self.frm_repo_tbl.attach(self.repo_combobox, 1, 2, 0, 1)
        self.frm_repo.add(self.frm_repo_tbl)

        self.db_radio_new = gtk.RadioButton(None, _("Create new on Database:"))
        self.db_radio_use = gtk.RadioButton(self.db_radio_new, _("Use existing Schema:"))
        self.db_db_combo = ObjectCombo(self, Database, selectFirst=True)
        self.db_schema_combo = ObjectCombo(self, Schema, selectFirst=True)
        self.db_schema_combo.set_sensitive(False)

        self.db_radio_new.connect("toggled", self.cb_ToggledDb, 1)
        self.db_radio_use.connect("toggled", self.cb_ToggledDb, 2)

        self.frm_db_tbl.attach(self.db_radio_new, 0, 1, 0, 1)
        self.frm_db_tbl.attach(self.db_db_combo, 1, 2, 0, 1)
        self.frm_db_tbl.attach(self.db_radio_use, 0, 1, 1, 2)
        self.frm_db_tbl.attach(self.db_schema_combo, 1, 2, 1, 2)
        self.frm_db.add(self.frm_db_tbl)

        self.target_label = gtk.Label(_("Target-OS:"))
        self.target_display = gtk.Label("")

        self.frm_target_tbl.attach(self.target_label, 0, 1, 0, 1)
        self.frm_target_tbl.attach(self.target_display, 1, 2, 0, 1)
        self.frm_target.add(self.frm_target_tbl)

        self.ok = gtk.Button(stock=gtk.STOCK_OK)
        self.cancel = gtk.Button(stock=gtk.STOCK_CLOSE)
        self.progress = gtk.ProgressBar()
        self.buttonhbox = gtk.HBox()
        self.buttonhbox.pack_start(self.progress, True)
        self.buttonhbox.pack_start(self.cancel, False)
        self.buttonhbox.pack_start(self.ok, False)

        self.vboxdummy = gtk.Label("")
        self.vbox.pack_start(self.toplabel)
        self.vbox.pack_start(self.frm_srv)
        self.vbox.pack_start(self.frm_repo)
        self.vbox.pack_start(self.frm_db)
        self.vbox.pack_start(self.frm_target)
        self.vbox.pack_start(self.frm_extradata)
        self.vbox.pack_start(self.vboxdummy)
        self.vbox.pack_start(self.buttonhbox)
        self.alignment.add(self.vbox)
        self.add(self.alignment)

        self.ok.connect("clicked", self.cb_Ok)
        self.cancel.connect("clicked", self.cb_Cancel)
        self.connect("delete-event", self.cb_Cancel)
        self.srv_combobox.connect("changed", self.render)

        self.getApplication().getMainWindow().openDialogPane(self)
        self.getApplication().getObjectStore().addCallback(self.render)
        self.render()
예제 #4
0
    def render(self):
        self.srv_combobox.render()
        self.db_schema_combo.render()
        self.db_db_combo.render()
        """if not self.targetsRendered:
            targets = Server.INSTALLATION_TARGETS
            for target in targets:
                self.target_combobox_model.append((target,))
            self.target_combobox.set_active_iter(self.target_combobox_model.get_iter_first())
            self.targetsRendered=True"""

        if self.extradata_table is not None:
            self.extradata_table.destroy()
            self.extradata_table = None
        if self.no_installer_label is not None:
            self.no_installer_label.destroy()
            self.no_installer_label = None

        server = self.srv_combobox.getSelected()

        if server is not None:
            target = server.getTarget()
            if server.isTargetUsable():
                self.target_display.set_text(target.getName())
                self.frm_extradata.set_label_widget(gtk.Label(
                    target.getName()))
                extradata = target.getExtraParams()
                extradata_table = gtk.Table(2, len(extradata), False)
                i = 0
                for key, value in extradata.items():
                    label = gtk.Label(value[0])
                    entry = DefaultEntry(default_message=value[1])
                    self.extradata_widgets[key] = entry
                    extradata_table.attach(label, 0, 1, i, i + 1)
                    extradata_table.attach(entry, 1, 2, i, i + 1)
                    i += 1
                self.extradata_table = extradata_table
                self.frm_extradata.add(extradata_table)
                extradata_table.show_all()
                self.ok.set_sensitive(True)
            else:
                self.no_installer_label = gtk.Label(
                    _("No appropriate installer available"))
                self.frm_extradata.add(self.no_installer_label)
                self.no_installer_label.show()
                self.target_display.set_text(target)
                self.ok.set_sensitive(False)

        if self.installerId is not None:
            try:
                installer = self.getApplication().getLocalObjectById(
                    self.installerId)
                self.progress.set_fraction(installer.getStatus() / 100)
                self.progress.set_text(
                    _("Installing ... %d %%") % (installer.getStatus(), ))

                sensitive = installer.status == 100
            except GenericObjectStoreException:
                sensitive = True

            self.srv_combobox.set_sensitive(sensitive)
            self.repo_combobox.set_sensitive(sensitive)
            self.srv_name_entry.set_sensitive(sensitive)
            self.db_db_combo.set_sensitive(sensitive)
            self.db_schema_combo.set_sensitive(sensitive)
            self.db_radio_new.set_sensitive(sensitive)
            self.db_radio_use.set_sensitive(sensitive)
            for widget in self.extradata_widgets.values():
                widget.set_sensitive(sensitive)
            self.ok.set_sensitive(sensitive)
            self.cancel.set_sensitive(sensitive)
예제 #5
0
class NewSkarphedPage(gtk.Frame):
    def __init__(self, par, server=None):
        self.par = par
        self.serverId = None
        self.installerId = None
        if server is not None:
            self.serverId = server.getLocalId()
        gtk.Frame.__init__(self, _("Skarphed Admin :: Create Instance"))
        self.targetsRendered = False

        self.extradata_widgets = {}
        self.extradata_table = None
        self.no_installer_label = None

        self.alignment = gtk.Alignment(0.5, 0.5, 0.1, 0.2)
        self.vbox = gtk.VBox()
        self.set_border_width(10)
        self.toplabel = gtk.Label(_("Please configure the new Installation"))

        self.frm_srv = gtk.Frame(_("Server"))
        self.frm_repo = gtk.Frame(_("Repository"))
        self.frm_db = gtk.Frame(_("Database"))
        self.frm_target = gtk.Frame(_("Target-OS"))
        self.frm_extradata = gtk.Frame()

        self.frm_srv_tbl = gtk.Table(2, 2, False)
        self.frm_repo_tbl = gtk.Table(2, 1, False)
        self.frm_db_tbl = gtk.Table(2, 2, False)
        self.frm_target_tbl = gtk.Table(3, 1, False)
        self.frm_root_tbl = gtk.Table(2, 2, False)

        self.srv_combobox = ObjectCombo(self, Server, server)

        self.srv_label = gtk.Label(_("Server:"))
        self.srv_name_label = gtk.Label(_("New Instance Name:"))
        self.srv_name_entry = DefaultEntry(default_message=_("Instance-Name"))

        self.frm_srv_tbl.attach(self.srv_label, 0, 1, 0, 1)
        self.frm_srv_tbl.attach(self.srv_combobox, 1, 2, 0, 1)
        self.frm_srv_tbl.attach(self.srv_name_label, 0, 1, 1, 2)
        self.frm_srv_tbl.attach(self.srv_name_entry, 1, 2, 1, 2)
        self.frm_srv.add(self.frm_srv_tbl)

        self.repo_combobox = ObjectCombo(self, Skarphed_repo, selectFirst=True)
        self.repo_label = gtk.Label(_("Repository"))

        self.frm_repo_tbl.attach(self.repo_label, 0, 1, 0, 1)
        self.frm_repo_tbl.attach(self.repo_combobox, 1, 2, 0, 1)
        self.frm_repo.add(self.frm_repo_tbl)

        self.db_radio_new = gtk.RadioButton(None, _("Create new on Database:"))
        self.db_radio_use = gtk.RadioButton(self.db_radio_new, _("Use existing Schema:"))
        self.db_db_combo = ObjectCombo(self, Database, selectFirst=True)
        self.db_schema_combo = ObjectCombo(self, Schema, selectFirst=True)
        self.db_schema_combo.set_sensitive(False)

        self.db_radio_new.connect("toggled", self.cb_ToggledDb, 1)
        self.db_radio_use.connect("toggled", self.cb_ToggledDb, 2)

        self.frm_db_tbl.attach(self.db_radio_new, 0, 1, 0, 1)
        self.frm_db_tbl.attach(self.db_db_combo, 1, 2, 0, 1)
        self.frm_db_tbl.attach(self.db_radio_use, 0, 1, 1, 2)
        self.frm_db_tbl.attach(self.db_schema_combo, 1, 2, 1, 2)
        self.frm_db.add(self.frm_db_tbl)

        self.target_label = gtk.Label(_("Target-OS:"))
        self.target_display = gtk.Label("")

        self.frm_target_tbl.attach(self.target_label, 0, 1, 0, 1)
        self.frm_target_tbl.attach(self.target_display, 1, 2, 0, 1)
        self.frm_target.add(self.frm_target_tbl)

        self.ok = gtk.Button(stock=gtk.STOCK_OK)
        self.cancel = gtk.Button(stock=gtk.STOCK_CLOSE)
        self.progress = gtk.ProgressBar()
        self.buttonhbox = gtk.HBox()
        self.buttonhbox.pack_start(self.progress, True)
        self.buttonhbox.pack_start(self.cancel, False)
        self.buttonhbox.pack_start(self.ok, False)

        self.vboxdummy = gtk.Label("")
        self.vbox.pack_start(self.toplabel)
        self.vbox.pack_start(self.frm_srv)
        self.vbox.pack_start(self.frm_repo)
        self.vbox.pack_start(self.frm_db)
        self.vbox.pack_start(self.frm_target)
        self.vbox.pack_start(self.frm_extradata)
        self.vbox.pack_start(self.vboxdummy)
        self.vbox.pack_start(self.buttonhbox)
        self.alignment.add(self.vbox)
        self.add(self.alignment)

        self.ok.connect("clicked", self.cb_Ok)
        self.cancel.connect("clicked", self.cb_Cancel)
        self.connect("delete-event", self.cb_Cancel)
        self.srv_combobox.connect("changed", self.render)

        self.getApplication().getMainWindow().openDialogPane(self)
        self.getApplication().getObjectStore().addCallback(self.render)
        self.render()

    def cb_Ok(self, widget=None, data=None):
        server = self.srv_combobox.getSelected()

        if self.db_radio_new.get_active():
            db = self.db_db_combo.getSelected()
            repo = self.repo_combobox.getSelected()
            newSchemaName = self.srv_name_entry.get_text()
            newSchemaName = newSchemaName.translate(None, "!\"§$%&/()=?`´#+~'><|^¹²³¼½¬{[]}\\ *-.,:;")
            schemaInfo = db.createSchema(newSchemaName, repo)
            schemaInfo["ip"] = db.getServer().getIp()
        elif self.db_radio_use.get_active():
            schema = self.db_schema_combo.getSelected()
            schemaInfo = {
                "name": schema.db_name,
                "user": schema.db_user,
                "pass": schema.db_password,
                "ip": schema.getDatabase().getServer().getIp(),
            }

        instanceData = {
            "core.name": self.srv_name_entry.get_text(),
            "db.ip": schemaInfo["ip"],
            "db.name": schemaInfo["name"],
            "db.user": schemaInfo["user"],
            "db.password": schemaInfo["pass"],
        }

        for key, widget in self.extradata_widgets.items():
            instanceData[key] = widget.get_text()

        installer = server.installNewInstance(instanceData)
        self.installerId = installer.getLocalId()

    def cb_Cancel(self, widget=None, data=None):
        self.srv_combobox.destroy()
        self.repo_combobox.destroy()
        self.db_db_combo.destroy()
        self.db_schema_combo.destroy()
        self.getApplication().getMainWindow().closeDialogPane()

    def cb_ToggledDb(self, widget=None, data=None):
        if data == 1:
            self.db_db_combo.set_sensitive(True)
            self.db_schema_combo.set_sensitive(False)
            self.repo_combobox.set_sensitive(True)
        elif data == 2:
            self.db_db_combo.set_sensitive(False)
            self.db_schema_combo.set_sensitive(True)
            self.repo_combobox.set_sensitive(False)

    def render(self):
        self.srv_combobox.render()
        self.db_schema_combo.render()
        self.db_db_combo.render()

        """if not self.targetsRendered:
            targets = Server.INSTALLATION_TARGETS
            for target in targets:
                self.target_combobox_model.append((target,))
            self.target_combobox.set_active_iter(self.target_combobox_model.get_iter_first())
            self.targetsRendered=True"""

        if self.extradata_table is not None:
            self.extradata_table.destroy()
            self.extradata_table = None
        if self.no_installer_label is not None:
            self.no_installer_label.destroy()
            self.no_installer_label = None

        server = self.srv_combobox.getSelected()

        if server is not None:
            target = server.getTarget()
            if server.isTargetUsable():
                self.target_display.set_text(target.getName())
                self.frm_extradata.set_label_widget(gtk.Label(target.getName()))
                extradata = target.getExtraParams()
                extradata_table = gtk.Table(2, len(extradata), False)
                i = 0
                for key, value in extradata.items():
                    label = gtk.Label(value[0])
                    entry = DefaultEntry(default_message=value[1])
                    self.extradata_widgets[key] = entry
                    extradata_table.attach(label, 0, 1, i, i + 1)
                    extradata_table.attach(entry, 1, 2, i, i + 1)
                    i += 1
                self.extradata_table = extradata_table
                self.frm_extradata.add(extradata_table)
                extradata_table.show_all()
                self.ok.set_sensitive(True)
            else:
                self.no_installer_label = gtk.Label(_("No appropriate installer available"))
                self.frm_extradata.add(self.no_installer_label)
                self.no_installer_label.show()
                self.target_display.set_text(target)
                self.ok.set_sensitive(False)

        if self.installerId is not None:
            try:
                installer = self.getApplication().getLocalObjectById(self.installerId)
                self.progress.set_fraction(installer.getStatus() / 100)
                self.progress.set_text(_("Installing ... %d %%") % (installer.getStatus(),))

                sensitive = installer.status == 100
            except GenericObjectStoreException:
                sensitive = True

            self.srv_combobox.set_sensitive(sensitive)
            self.repo_combobox.set_sensitive(sensitive)
            self.srv_name_entry.set_sensitive(sensitive)
            self.db_db_combo.set_sensitive(sensitive)
            self.db_schema_combo.set_sensitive(sensitive)
            self.db_radio_new.set_sensitive(sensitive)
            self.db_radio_use.set_sensitive(sensitive)
            for widget in self.extradata_widgets.values():
                widget.set_sensitive(sensitive)
            self.ok.set_sensitive(sensitive)
            self.cancel.set_sensitive(sensitive)

    def getPar(self):
        return self.par

    def getApplication(self):
        return self.par.getApplication()