Skip to content
Snippets Groups Projects
Commit fa2d9587 authored by Egmont Schreiter's avatar Egmont Schreiter
Browse files

Mindmap einseitig oder zweiseitig #10

per Option kann Mindmap einseitig oder zweiseitig erstellt werden
parent 7cedb12e
Branches master
No related tags found
No related merge requests found
......@@ -44,12 +44,29 @@ parser.add_argument(
type=str,
)
parser.add_argument(
'-o', '--orientation',
choices=['l', 'r'],
default = None,
help =
"""l - all mindmap nodes on left side,
r - all mindmap nodes on left side
empty = no parameter: first half nodes left, second half right side""",
type=str,
)
parser.add_argument(
'-v', '--verbose',
action='store_true'
)
# todo: Ort, Icons, Texte aus MM in ical übersetzen
# todo: prüfen, ob Icons in Text umgewandelt werden können
cal = icalendar.Calendar() # todo: prüfen ob 'global cal' anders gelöst werden kann
verbose = False
def get_text(node):
return node.get("TEXT")
......@@ -146,14 +163,19 @@ def gehe_durch_ics_tree(tree, parent=None):
gehe_durch_mindmap_tree(node, parent=node)
def verbose_debug_print(string):
global verbose
if verbose:
print(string)
def main(args):
global cal
global cal, verbose
"""Run main function."""
ics_filename = args.ics_file # input
mm_filename = args.mindmap_file # output
left_right_flag= args.orientation
verbose = args.verbose
mm_content = freeplane_tools.data.get_template() # Vorlage öffnen und verwenden
......@@ -192,6 +214,9 @@ def main(args):
# aus ics lesen
cal = icalendar.cal.Component.from_ical(ics_string)
# Zähle die Anzahl von parent-nodes (ohne parent_uid)
count_parent_nodes = 0
## ics in list umwandeln
list_todos = list()
for ics_todo in cal.walk("VTODO"):
......@@ -200,6 +225,7 @@ def main(args):
except:
parent_uid = None
try:
SUMMARY = str(ics_todo["SUMMARY"])
except:
......@@ -212,29 +238,53 @@ def main(args):
try:
status = str(ics_todo["STATUS"])
print(f"Status gefunden! ********* {status}")
verbose_debug_print(f"Status gefunden! ********* {status}")
except:
status = None
if status != "COMPLETED": # or status != None or status is not None:
print([UID, SUMMARY, parent_uid])
verbose_debug_print([UID, SUMMARY, parent_uid])
list_todos.append([UID, SUMMARY, parent_uid])
if parent_uid == None:
count_parent_nodes += 1 # root nodes zählen
# print(ics_todo)
# break
# print(list_todos)
# todo: Liste sortieren, zuerst Aufgaben ohne parent
# Liste sortieren, zuerst Aufgaben ohne parent
list_todos = sort_tree(list_todos)
count_converted_parent_nodes = 0
# Liste sortieren oder Stück für Stück durchgehen
for single_todo in list_todos:
UID = single_todo[0]
SUMMARY = single_todo[1]
parent_uid = single_todo[2]
print(f"UID: {UID} | Parent_ID: {parent_uid}")
verbose_debug_print(f"UID: {UID} | Parent_ID: {parent_uid}")
if parent_uid == None:
ET.SubElement(tree.findall("node")[0], "node", {"TEXT": SUMMARY, "ID": UID})
count_converted_parent_nodes += 1
if left_right_flag == None:
verbose_debug_print(f"Zweiseitig, konvertiert: {count_converted_parent_nodes}, gesamt: {count_parent_nodes}")
if count_converted_parent_nodes < count_parent_nodes / 2:
# erste Hälft links
mydict = {"TEXT": SUMMARY, "ID": UID, "POSITION": "left"}
else:
# zweite Hälfte rechts
mydict = {"TEXT": SUMMARY, "ID": UID}
if 'l' == left_right_flag:
mydict = {"TEXT": SUMMARY, "ID": UID, "POSITION":"left"}
elif 'r' == left_right_flag:
mydict = {"TEXT": SUMMARY, "ID": UID}
else:
pass
# todo je nach switch parent-nodes links, rechts oder verteilt (halbe-halbe) erzeugen, gesamtzahl ist in count_parent_nodes
ET.SubElement(tree.findall("node")[0], "node", mydict)
else:
# node finden mit attribut ID == parent_uid
# find_text = f".//*[@ID={parent_uid}]"
......@@ -244,7 +294,7 @@ def main(args):
for tag in tree.findall(".//*[@ID]")
if parent_uid in tag.attrib["ID"]
]
print(f" parent_node: {parent_node}, len={len(parent_node)}")
verbose_debug_print(f" parent_node: {parent_node}, len={len(parent_node)}")
if (
len(parent_node) < 1
): # keinen passenden Knoten gefunden
......@@ -256,7 +306,7 @@ def main(args):
ET.SubElement(parent_node[0], "node", {"TEXT": SUMMARY, "ID": UID})
## MM Zentralknoten anlegen mit Dateinamen
print(ics_filename.split(".")[0])
verbose_debug_print(ics_filename.split(".")[0])
# ET.SubElement(tree, 'node', {'TEXT': ics_filename, 'STYLE': 'oval'}) funktioniert nicht, legt einen zweiten untersten 'node' an
tree.findall("node")[0].set(
"TEXT", ics_filename.split(".")[0]
......@@ -288,17 +338,17 @@ def main(args):
# Eintrag in MM erzeugen
# mm_root = tree.getroot()
print(tree.tag)
verbose_debug_print(tree.tag)
# ET.SubElement(tree,'node', {'TEXT':'Beispiel 1', 'STYLE':'oval'})
# show text of all entries in mm
for node in tree.findall("node"):
text = node.get("TEXT")
print(f"{text}")
verbose_debug_print(f"{text}")
# ET.SubElement(node,"node", {'TEXT':'Beispiel 2'})
for innernode in node.findall("node"):
text = innernode.get("TEXT")
print(f" {text}")
verbose_debug_print(f" {text}")
# gehe_durch_mindmap_tree(tree, None)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment