Ejemplo n.º 1
0
    def create_save_file_dialog(self):
        chooser = BoxLayout()
        container = BoxLayout(orientation='vertical')

        filechooser = FileChooserIconView()
        filechooser.path = os.path.expanduser("~")

        container.add_widget(filechooser)

        def save_file(path, filename):
            filepath = os.path.join(path, filename)
            path, ext = os.path.splitext(filepath)
            if ext != ".xlsx":
                filepath += ".xlsx"
            self.save_filepath = filepath
            self.finish()

        button_layout = BoxLayout()
        button_layout.size_hint = (1, .1)

        file_name = TextInput(text="File name.xlsx")
        button_layout.add_widget(file_name)

        save_btn = Button(text='save', size_hint=(.2,1))
        save_btn.bind(on_release=lambda x: save_file(filechooser.path, file_name.text))

        button_layout.add_widget(save_btn)
        container.add_widget(button_layout)
        chooser.add_widget(container)

        file_chooser = Popup(title='Save report',
        content=chooser,
        size_hint=(.9, .7 ), pos_hint={'center_x': 0.5, 'center_y': 0.5})

        return file_chooser
Ejemplo n.º 2
0
 def build_output_path_options(self):
     lbl_file_path = Label(text='Output Directory', size_hint=(.1, .05), pos_hint={'x': 0.5, 'y': .4})
     self.text_output_directory = TextInput(text="", multiline=False, size_hint=(.5, .05),
                                            pos_hint={'x': .3, 'y': .35})
     self.text_output_directory.bind(text=self.select_output_dir)
     self.text_output_directory.disabled = True
     self.btn_browse_directory = Button(text='Browse', size_hint=(.09, .05), pos_hint={'x': .8, 'y': .35})
     self.btn_browse_directory.disabled = True
     self.btn_browse_directory.bind(on_release=lambda show_file_selection_dialog: file_chooser_dialog.open())
     self.app.add_widget(lbl_file_path)
     self.app.add_widget(self.text_output_directory)
     self.app.add_widget(self.btn_browse_directory)
     file_chooser_dialog = Popup(title="Select Output Directory", size=(500, 500))
     file_chooser = FileChooserIconView()
     file_chooser.path = os.getcwd()
     file_chooser_layout = FloatLayout(size=(500, 500))
     file_chooser_layout.add_widget(file_chooser)
     file_chooser_dialog.add_widget(file_chooser_layout)
     btn_open_file = Button(text='Select Folder', size_hint=(.15, .05), pos_hint={'x': .75, 'y': .01})
     btn_open_file.bind(
         on_release=lambda load_file: self.select_directory(self.text_output_directory, file_chooser_dialog,
                                                            file_chooser.path))
     btn_cancel_file = Button(text='Cancel', size_hint=(.1, .05), pos_hint={'x': .9, 'y': .01})
     btn_cancel_file.bind(on_release=lambda cancel_file_selection_dialog: file_chooser_dialog.dismiss())
     file_chooser_layout.add_widget(btn_open_file)
     file_chooser_layout.add_widget(btn_cancel_file)
Ejemplo n.º 3
0
    def create_save_folder_dialog(self):
        chooser = BoxLayout()
        container = BoxLayout(orientation='vertical')

        folderchooser = FileChooserIconView()
        folderchooser.path = os.path.expanduser("~")

        container.add_widget(folderchooser)

        def save_directory(path, foldername):
            save_filepath = os.path.join(path, foldername)
            if os.path.isdir(save_filepath):
                self.save_filepath = save_filepath
            elif os.path.isfile(save_filepath):
                self.save_filepath = os.path.splitext(save_filepath)[0]
                os.mkdir(self.save_filepath)
            else:
                os.mkdir(save_filepath)
                self.save_filepath = save_filepath
            self.finish()

        button_layout = BoxLayout()
        button_layout.size_hint = (1, .1)

        folder_name = TextInput(text="New folder name")
        button_layout.add_widget(folder_name)

        save_btn = Button(text='save', size_hint=(.2, 1))
        save_btn.bind(on_release=lambda x: save_directory(
            folderchooser.path, folder_name.text))

        button_layout.add_widget(save_btn)
        container.add_widget(button_layout)
        chooser.add_widget(container)

        directory_chooser = Popup(title='Save reports',
                                  content=chooser,
                                  size_hint=(.9, .7),
                                  pos_hint={
                                      'center_x': 0.5,
                                      'center_y': 0.5
                                  })

        return directory_chooser
Ejemplo n.º 4
0
 def build_file_selection_options(self):
     lbl_file_path = Label(text='Input Data', size_hint=(.1, .05), pos_hint={'x': 0.5, 'y': .8})
     text_file_path = TextInput(text="", multiline=False, size_hint=(.5, .05), pos_hint={'x': .3, 'y': .75})
     text_file_path.bind(text=self.select_file_path)
     btn_file_dialog = Button(text='Browse', size_hint=(.09, .05), pos_hint={'x': .8, 'y': .75})
     btn_file_dialog.bind(on_release=lambda show_file_selection_dialog: file_chooser_dialog.open())
     self.app.add_widget(lbl_file_path)
     self.app.add_widget(text_file_path)
     self.app.add_widget(btn_file_dialog)
     file_chooser_dialog = Popup(title="Select File or Folder", size=(500, 500))
     file_chooser = FileChooserIconView()
     file_chooser.path = os.getcwd()
     file_chooser_layout = FloatLayout(size=(500, 500))
     file_chooser_layout.add_widget(file_chooser)
     file_chooser_dialog.add_widget(file_chooser_layout)
     btn_open_file = Button(text='Open', size_hint=(.1, .05), pos_hint={'x': .8, 'y': .01})
     btn_open_file.bind(
         on_release=lambda load_file: self.load_file(text_file_path, file_chooser_dialog, file_chooser.path,
                                                     file_chooser.selection))
     btn_cancel_file = Button(text='Cancel', size_hint=(.1, .05), pos_hint={'x': .9, 'y': .01})
     btn_cancel_file.bind(on_release=lambda cancel_file_selection_dialog: file_chooser_dialog.dismiss())
     file_chooser_layout.add_widget(btn_open_file)
     file_chooser_layout.add_widget(btn_cancel_file)
Ejemplo n.º 5
0
    def popup_constructor_file(self, title):
        """
        generalized popup constructor for save/load/export and import image commands
        :param title:
        :return:
        """
        changed_dir = True  #set this to false when testing in IDE
        file_browser = FileChooserIconView()
        file_browser_text = TextInput(text="File.txt",
                                      multiline=False,
                                      size=(345, 30),
                                      size_hint=(None, None))
        file_browser.add_widget(file_browser_text)
        file_browser.path = self.backend.working_dir + 'Saved maps'
        file_browser_cancel_btn = Button(text="Cancel",
                                         size=(60, 30),
                                         size_hint=(None, None),
                                         pos=(415, 0))
        file_browser_confirm_btn = Button(text="blank",
                                          size=(60, 30),
                                          size_hint=(None, None),
                                          pos=(350, 0))
        if title == "Save Map":
            file_browser_text.text = file_browser.path + "/Untitled.text"
            file_browser_confirm_btn.text = "Save"
        elif title == "Load Map":
            file_browser_text.text = file_browser.path + "/Untitled.text"
            file_browser_confirm_btn.text = "Load"
        elif title == "Import Image":
            file_browser_text.text = file_browser.path + "/Untitled.png"
            file_browser_confirm_btn.text = "Import"
        else:
            file_browser_text.text = file_browser.path + "/Untitled.png"
            file_browser_confirm_btn.text = "Export"
        file_browser.add_widget(file_browser_cancel_btn)
        file_browser.add_widget(file_browser_confirm_btn)

        def resolve_dialogue(instance):
            try:
                if title == "Save Map":
                    if file_browser_text.text.split("\\")[-1] in [i.split("\\")[-1] for i in file_browser.files] or \
                            file_browser_text.text.split("/")[-1] in [i.split("\\")[-1] for i in file_browser.files]:

                        def overwrite_resolve(instance):
                            self.backend.save_to_file(file_browser_text.text)
                            self.backend.working_file = file_browser_text.text
                            self.backend.last_save = datetime.now()
                            self.update_map_title()
                            pop2.dismiss()
                            pop.dismiss()
                            self.initialize_keyboard()

                        overwrite_okay.bind(on_press=overwrite_resolve)
                        nonlocal overwrite_msg
                        overwrite_msg = Label(
                            text=
                            f"The file: \n{file_browser_text.text}\nwill be Overwritten"
                        )
                        pop2.open()
                    else:
                        self.backend.save_to_file(file_browser_text.text)
                        self.backend.working_file = file_browser_text.text
                        self.backend.last_save = datetime.now()
                        self.update_map_title()
                        pop.dismiss()
                        self.initialize_keyboard()
                elif title == "Load Map":
                    self.backend.load_from_file(file_browser_text.text)
                    self.redraw_map()
                    self.redraw_tileset()
                    self.redraw_active_tile()
                    self.populate_layer_list(self.children[0].children[0])
                    self.backend.working_file = file_browser_text.text
                    self.backend.last_save = datetime.now()
                    self.update_map_title()
                    pop.dismiss()
                    self.initialize_keyboard()
                elif title == "Export Map":
                    if file_browser_text.text.split("\\")[-1] in [i.split("\\")[-1] for i in file_browser.files] or \
                            file_browser_text.text.split("/")[-1] in [i.split("\\")[-1] for i in file_browser.files]:

                        def overwrite_resolve(instance):
                            self.backend.export(file_browser_text.text)
                            pop2.dismiss()
                            pop.dismiss()
                            self.initialize_keyboard()

                        overwrite_okay.bind(on_press=overwrite_resolve)
                        overwrite_msg.text = f"!WARNING!: The file: \n{file_browser_text.text}\nwill be Overwritten"
                        pop2.open()
                    else:
                        self.backend.export(file_browser_text.text)
                        pop.dismiss()
                        self.initialize_keyboard()
                elif title == "Import Image":
                    self.backend.import_img(file_browser_text.text)
                    self.populate_layer_list(self.children[0].children[0])
                    self.redraw_map()
                    pop.dismiss()
                    self.initialize_keyboard()

            except Exception as e:
                error = Popup(title=" An error Occured:",
                              content=(Label(text=e.__str__())),
                              size_hint=(None, None),
                              size=(400, 200),
                              auto_dismiss=True)
                error.open()

        def filecancel(instance):
            pop.dismiss()
            self.initialize_keyboard()

        def update_file_text(instance, path):
            nonlocal changed_dir
            changed_dir = True
            if title == "Save Map" or title == "Load Map":
                file_browser_text.text = file_browser.path + "/Untitled.text"
            else:
                file_browser_text.text = file_browser.path + "/Untitled.png"

        def update_file_text_select(instance, selection, touch):
            path = ""
            for i in selection:
                path = i
                file_browser_text.text = path
            if changed_dir == False:
                segments = path.split("\\")
                del segments[5]
                clean_path = "\\".join(segments)
                file_browser_text.text = clean_path

        file_browser.bind(on_submit=update_file_text_select,
                          path=update_file_text)
        file_browser_cancel_btn.bind(on_press=filecancel)
        file_browser_confirm_btn.bind(on_press=resolve_dialogue)

        pop = Popup(title=title,
                    content=file_browser,
                    size_hint=(None, None),
                    size=(500, 500),
                    auto_dismiss=True)
        pop.open()

        overwrite = GridLayout(rows=2)
        overwrite_msg = Label(
            text=
            f"!WARNING!: The file: \n{file_browser_text.text}\nwill be Overwritten"
        )
        overwrite_buttons = GridLayout(cols=2,
                                       size_hint=(1, None),
                                       size=(100, 40))
        overwrite_okay = Button(text="Overwrite",
                                size_hint=(1, None),
                                size=(100, 40))
        overwrite_cancel = Button(text="Cancel",
                                  size_hint=(1, None),
                                  size=(100, 40))
        overwrite_buttons.add_widget(overwrite_okay)
        overwrite_buttons.add_widget(overwrite_cancel)
        overwrite.add_widget(overwrite_msg)
        overwrite.add_widget(overwrite_buttons)
        overwrite_cancel.bind(on_press=lambda instance: pop2.dismiss())

        pop2 = Popup(title="Confirm File Overwrite",
                     content=overwrite,
                     size_hint=(None, None),
                     size=(500, 300),
                     auto_dismiss=True)