Example #1
0
    def prompt_for_name(self, folder, extension, action):
        while True:
            response = self.dialog.run()
            if response != gtk.RESPONSE_OK:
                break

            raw_name = self.name_entry.get_text()

            error_message = None
            try:
                raw_name = application.validate_name(raw_name)
            except ValueError, e:
                error_message = e.message

            if not error_message:
                if not (raw_name.lower().endswith("." + extension)):
                    raw_name += "." + extension

            if not error_message:
                fullname = os.path.join(folder, raw_name)
                if os.path.exists(fullname):
                    error_message = "'%s' already exists" % raw_name

            if error_message:
                dialog = gtk.MessageDialog(parent=self.dialog, buttons=gtk.BUTTONS_OK,
                                           type=gtk.MESSAGE_ERROR)
                dialog.set_markup("<big><b>Please choose a different name</b></big>")
                dialog.format_secondary_text(error_message)
                dialog.run()
                dialog.destroy()
                continue

            action(fullname)
            break
Example #2
0
    def __prompt_for_name(self, title, save_button_text, action, check_name=None):
        builder = SaveFileBuilder(title, self._get_display_name(), save_button_text, check_name)
        builder.dialog.set_transient_for(self.widget.get_toplevel())

        if self._get_filename() != None:
            builder.name_entry.set_text(os.path.basename(self._get_filename()))

        while True:
            response = builder.dialog.run()
            if response != gtk.RESPONSE_OK:
                break

            raw_name = builder.name_entry.get_text()

            error_message = None
            try:
                raw_name = application.validate_name(raw_name)
            except ValueError, e:
                error_message = e.message

            if not error_message:
                extension = "." + self._get_extension()
                if not (raw_name.lower().endswith(extension)):
                    raw_name += extension

            if not error_message:
                fullname = os.path.join(self.notebook.folder, raw_name)
                if os.path.exists(fullname):
                    error_message = "'%s' already exists" % raw_name

            if error_message:
                dialog = gtk.MessageDialog(parent=self.widget.get_toplevel(), buttons=gtk.BUTTONS_OK,
                                           type=gtk.MESSAGE_ERROR)
                dialog.set_markup("<big><b>Please choose a different name</b></big>")
                dialog.format_secondary_text(error_message)
                dialog.run()
                dialog.destroy()
                continue

            action(fullname)
            break
Example #3
0
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

        error_message = None
        error_detail = None
        try:
            name = application.validate_name(builder.name_entry.get_text())
        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