def run(parent=None):
    builder = CreateNotebookBuilder()
    builder.dialog.set_transient_for(parent)
    result_window = None

    while True:
        response = builder.dialog.run()
        if response == 0:  # gtk-builder-convert puts check/radio buttons in action-widgets
            continue
        if response != gtk.RESPONSE_OK:
            break

        raw_name = builder.name_entry.get_text()
        raw_name = reunicode.canonicalize_filename(raw_name)

        error_message = None
        error_detail = None
        try:
            name = reunicode.validate_name(raw_name)
        except ValueError, e:
            error_message = "<big><b>Please choose a different name</b></big>"
            error_detail = e.message

        if error_message is None:
            if builder.other_folder_radio_button.get_active():
                parent_folder = builder.other_folder_chooser.get_filename()
            else:
                parent_folder = global_settings.notebooks_dir

            fullname = os.path.join(parent_folder, name)
            if os.path.exists(fullname):
                error_message = "<big><b>Please choose a different name</b></big>"
                error_detail = "'%s' already exists" % name

        if error_message is None:
            try:
                builder.dialog.hide()
                description = builder.description_text_view.get_buffer(
                ).props.text.strip()
                result_window = application.create_notebook(
                    fullname, description=description)
            except OSError, e:
                builder.dialog.show()
                error_message = "<big><b>Error creating notebook</b></big>"
                error_detail = e.message
def run(parent=None):
    builder = CreateNotebookBuilder()
    builder.dialog.set_transient_for(parent)
    result_window = None

    while True:
        response = builder.dialog.run()
        if response == 0: # gtk-builder-convert puts check/radio buttons in action-widgets
            continue
        if response != gtk.RESPONSE_OK:
            break

        raw_name = builder.name_entry.get_text()
        raw_name = reunicode.canonicalize_filename(raw_name)

        error_message = None
        error_detail = None
        try:
            name = reunicode.validate_name(raw_name)
        except ValueError, e:
            error_message = "<big><b>Please choose a different name</b></big>"
            error_detail = e.message

        if error_message is None:
            if builder.other_folder_radio_button.get_active():
                parent_folder = builder.other_folder_chooser.get_filename()
            else:
                parent_folder = global_settings.notebooks_dir

            fullname = os.path.join(parent_folder, name)
            if os.path.exists(fullname):
                error_message = "<big><b>Please choose a different name</b></big>"
                error_detail = "'%s' already exists" % name

        if error_message is None:
            try:
                builder.dialog.hide()
                description = builder.description_text_view.get_buffer().props.text.strip()
                result_window = application.create_notebook(fullname, description=description)
            except OSError, e:
                builder.dialog.show()
                error_message = "<big><b>Error creating notebook</b></big>"
                error_detail = e.message
 def _validate_name(cls, name):
     return reunicode.validate_name(name)
 def _validate_name(cls, name):
     return reunicode.validate_name(name)