mirror of
https://github.com/ApfelTeeSaft/SplitNotes.git
synced 2026-08-27 11:53:28 +00:00
Added a determined font and color as well as the ability to switch between big and small fonts. Also limited files that should be displayed in the "open notes" prompt.
122 lines
2.3 KiB
Python
122 lines
2.3 KiB
Python
import tkinter.filedialog as file_dia
|
|
import os.path as path
|
|
|
|
import config
|
|
|
|
"""
|
|
NOTE STANDARD FORMATTING
|
|
|
|
empty newlines separate notes for different splits
|
|
|
|
lines that start and end with [ ] are ignored for notes.
|
|
these can be used for titles.
|
|
(ex. [Split1] is not included in notes)
|
|
|
|
all other lines of text are added as notes
|
|
"""
|
|
|
|
def get_note_lines(file_path):
|
|
"""
|
|
Reads file at given path and returns
|
|
a list containing all rows of text in given file.
|
|
Returns false if file can not be read.
|
|
"""
|
|
|
|
|
|
#check so file isn't too big
|
|
if path.getsize(file_path) > config.MAX_FILE_SIZE:
|
|
return False
|
|
|
|
try:
|
|
notes_file = open(file_path, "r")
|
|
except:
|
|
return False
|
|
|
|
#read file line per line
|
|
f_lines = []
|
|
keep_reading = True
|
|
while keep_reading:
|
|
cur_line = notes_file.readline()
|
|
|
|
if cur_line:
|
|
f_lines.append(cur_line)
|
|
else:
|
|
keep_reading = False
|
|
|
|
return f_lines
|
|
|
|
|
|
def encode_notes(note_lines):
|
|
"""
|
|
Takes a list containing strings.
|
|
Encodes given strings according to the note formatting.
|
|
Returns the list containing the notes for every split.
|
|
"""
|
|
|
|
def is_title(line):
|
|
if not line:
|
|
return False
|
|
|
|
return (line[0] == "[") and (line[-1] == "]")
|
|
|
|
def is_newline(line):
|
|
return (line == "\n") or (line == "\r")
|
|
|
|
def remove_new_line(line):
|
|
if (len(line) >= 1) and (is_newline(line[-1])):
|
|
return line[:-1]
|
|
else:
|
|
return line
|
|
|
|
note_list = []
|
|
cur_notes = ""
|
|
|
|
for line in note_lines:
|
|
#remove whitespace at beginning and end
|
|
line = line.strip(" ")
|
|
|
|
if is_newline(line):
|
|
if cur_notes:
|
|
note_list.append(cur_notes)
|
|
cur_notes = ""
|
|
else:
|
|
line = remove_new_line(line)
|
|
if not is_title(line):
|
|
cur_notes += line + "\n" #newline
|
|
|
|
if cur_notes:
|
|
note_list.append(cur_notes)
|
|
|
|
return note_list
|
|
|
|
|
|
def get_notes(file_path):
|
|
"""
|
|
Takes a path to a file and returns a list with the notes
|
|
in the file encoded according to the note fromatting.
|
|
|
|
Returns False if file is empty.
|
|
"""
|
|
note_lines = get_note_lines(file_path)
|
|
|
|
if not note_lines:
|
|
return False
|
|
|
|
note_list = encode_notes(note_lines)
|
|
|
|
return note_list
|
|
|
|
|
|
def select_file():
|
|
"""
|
|
Opens a file select window.
|
|
Returns False upon no file selection.
|
|
Otherwise returns absolute path to selected file.
|
|
"""
|
|
|
|
file = file_dia.askopenfilename(filetypes=config.TEXT_FILES)
|
|
|
|
if file:
|
|
return file
|
|
else:
|
|
return False |