# Path: flexlay/util/signal.py
# class Signal:
#     def __init__(self):
#         self.subscribers = []
# 
#     def connect(self, callback, ignore_repeats=True):
#         if not ignore_repeats and callback in self.subscribers:
#             return
#         self.subscribers.append(callback)
# 
#     def disconnect(self, callback):
#         self.subscribers.remove(callback)
# 
#     def clear(self):
#         self.subscribers = []
# 
#     def __call__(self, *args):
#         for sub in self.subscribers:
#             sub(*args)


from PyQt5.QtWidgets import QWizardPage, QWizard, QVBoxLayout
from flexlay.util import Signal
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>





class GenericWizard(QWizard):
    """A Wizard which can display properties easily

    You must use new_property_page to create pages which
    are made up of a PropertyWidget.

    Use add_callback to add a function which will be called
    when "Finish" is pressed. See that function for more details
    """

    def __init__(self, parent, title):
        super().__init__(parent)
        self.setWindowTitle(title)
        self.pages = []


# Path: flexlay/util/signal.py
# class Signal:
#     def __init__(self):
#         self.subscribers = []
# 
#     def connect(self, callback, ignore_repeats=True):
#         if not ignore_repeats and callback in self.subscribers:
#             return
#         self.subscribers.append(callback)
# 
#     def disconnect(self, callback):
#         self.subscribers.remove(callback)
# 
#     def clear(self):
#         self.subscribers = []
# 
#     def __call__(self, *args):
#         for sub in self.subscribers:
#             sub(*args)


# Path: flexlay/gui/generic_wizard.py
from PyQt5.QtWidgets import QWizardPage, QWizard, QVBoxLayout
from flexlay.util import Signal

# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>





class GenericWizard(QWizard):
    """A Wizard which can display properties easily

    You must use new_property_page to create pages which
    are made up of a PropertyWidget.

    Use add_callback to add a function which will be called
    when "Finish" is pressed. See that function for more details
    """

    def __init__(self, parent, title):
        super().__init__(parent)
        self.setWindowTitle(title)
        self.pages = []


        self.finish_callback = Signal()