#!/usr/bin/python
# qdialogdoulbefreetest.py
# ------------------------------
# begin     : Sun Mar 12 2006
# copyright : (C) Simon Edwards
# email     : simon@simonzone.com
# GPL

from qt import *
from kdeui import *
from kdecore import *
import sys

###########################################################################
class UserConfigApp(KDialogBase):
    def __init__(self,parent=None,name=None):
        KDialogBase.__init__(self, KJanusWidget.Tabbed, # Tabbed or Plain, does not matter.
            QString("User Accounts and Groups"),
            KDialogBase.Close, KDialogBase.Close)

        usershbox = self.addHBoxPage("A tab")

        self.modifybutton = KPushButton(i18n("Show dialog"),usershbox)
        self.connect(self.modifybutton,SIGNAL("clicked()"),self.slotModifyClicked)
        
        self.usereditdialog = UserEditDialog(self)

    def slotModifyClicked(self):
        # Using exec_loop() triggers a "Double QObject deletion detected."
        self.usereditdialog.exec_loop()
        
        # Using show() does not trigger the problem.
        #self.usereditdialog.show()

###########################################################################
class UserEditDialog(QDialog):
    def __init__(self,parent):
        QDialog.__init__(self, parent, "User Account", True)

##########################################################################
def main():
    global kapp

    aboutdata = KAboutData("dialogtest","qdialogdoublefree","1.0",str(i18n("Double free test")), KAboutData.License_GPL, "Copyright (C) 2006 Simon Edwards")

    KCmdLineArgs.init(sys.argv,aboutdata)

    kapp = KApplication()
    userconfigapp = UserConfigApp()
    userconfigapp.exec_loop()
main()
