diff --git a/libgraphtheory/editorplugins/assignvalues/assignvaluesplugin.json b/libgraphtheory/editorplugins/assignvalues/assignvaluesplugin.json index db273232..69eac8b9 100644 --- a/libgraphtheory/editorplugins/assignvalues/assignvaluesplugin.json +++ b/libgraphtheory/editorplugins/assignvalues/assignvaluesplugin.json @@ -1,57 +1,60 @@ { "Encoding": "UTF-8", "KPlugin": { "Category": "Plugins", "Description": "Assign values to graph edges and nodes.", "Description[ca@valencia]": "Assigna valors a les arestes i nodes del graf.", "Description[ca]": "Assigna valors a les arestes i nodes del graf.", "Description[de]": "Werte zu Graphenkanten und -knoten zuweisen.", + "Description[en_GB]": "Assign values to graph edges and nodes.", "Description[es]": "Asignar valores a aristas de grafos y a nodos.", "Description[et]": "Väärtuste omistamine graafi seostele ja tippudele.", "Description[fi]": "Sijoita arvot graafin väleihin ja solmuihin.", "Description[fr]": "Assigne des valeurs aux arêtes et aux sommets d'un graphe.", "Description[gl]": "Asigna valores ás arestas e vértices do gráfico.", "Description[it]": "Assegna valori ad archi e nodi di un grafo.", "Description[nl]": "Waarden toekennen aan randen en knooppunten van grafen.", "Description[pl]": "Przypisz wartości krawędziom i węzłom grafu", "Description[pt]": "Atribui valores às arestas e nós do grafo.", "Description[pt_BR]": "Atribuir valores às bordas e nós do grafo.", "Description[ru]": "Присваивает значения рёбрам и вершинам графа.", "Description[sk]": "Priradiť hodnoty k okrajom grafu a uzlom.", "Description[sl]": "Povezavam in vozliščem grafa dodeli vrednosti.", "Description[sv]": "Tilldela värden till grafkanter och noder.", "Description[tr]": "Değerleri grafik kenarlarına ve düğümlerine ata.", "Description[uk]": "Додавання значень до ребер та вузлів графу.", "Description[x-test]": "xxAssign values to graph edges and nodes.xx", + "Description[zh_TW]": "指定值給圖形邊緣與節點。", "Id": "rocs_assignvaluesplugin", "License": "GPL", "Name": "Assign Values Plugin", "Name[ast]": "Complementu d'asignación de valores", "Name[ca@valencia]": "Connector per assignar valors", "Name[ca]": "Connector per assignar valors", "Name[cs]": "Modul pro přiřazování hodnot", "Name[de]": "Wertzuweisungs-Modul", + "Name[en_GB]": "Assign Values Plugin", "Name[es]": "Complemento para asignar valores", "Name[et]": "Väärtuste omistamise plugin", "Name[fi]": "Sijoita arvot -liitännäinen", "Name[fr]": "Module d'extension pour assigner des valeurs", "Name[gl]": "Complemento de asignar valores", "Name[it]": "Estensione di assegnazione valori", "Name[nl]": "Plug-in voor waarden toekennen", "Name[pl]": "Wtyczka przypisywania wartości", "Name[pt]": "'Plugin' de Atribuição de Valores", "Name[pt_BR]": "Plugin de atribuição de valores", "Name[ru]": "Модуль присвоения значений", "Name[sk]": "Plugin priradenia hodnôt", "Name[sl]": "Vstavek za dodeljevanje vrednosti", "Name[sv]": "Insticksprogram för att tilldela värden", "Name[tr]": "Değerleri Ata", "Name[uk]": "Додаток пов’язування значень", "Name[x-test]": "xxAssign Values Pluginxx", "Name[zh_TW]": "指定值外掛程式", "ServiceTypes": [ "rocs/editorplugins" ], "Version": "0.2" } } \ No newline at end of file diff --git a/libgraphtheory/editorplugins/generategraph/generategraphplugin.json b/libgraphtheory/editorplugins/generategraph/generategraphplugin.json index 9ffe8471..b497c370 100644 --- a/libgraphtheory/editorplugins/generategraph/generategraphplugin.json +++ b/libgraphtheory/editorplugins/generategraph/generategraphplugin.json @@ -1,73 +1,76 @@ { "Encoding": "UTF-8", "KPlugin": { "Category": "Plugins", "Description": "This generates a new graph by a pattern.", "Description[ast]": "Esto xenera un grafu nuevu por un patrón.", "Description[ca@valencia]": "Això genera un nou graf segons un patró.", "Description[ca]": "Això genera un nou graf segons un patró.", "Description[de]": "Erstellt anhand eines Musters einen neuen Graphen.", + "Description[en_GB]": "This generates a new graph by a pattern.", "Description[es]": "Esto genera un nuevo grafo usando un patrón.", "Description[et]": "Uue graafi genereerimine mustri järgi.", "Description[fi]": "Tämä generoi uuden graafin mallin perusteella.", "Description[fr]": "Cette fonction génère un nouveau graphe à l'aide d'un motif.", "Description[gl]": "Xera un gráfico novo segundo un padrón.", "Description[it]": "Questo genera un nuovo grafo secondo uno schema.", "Description[nl]": "Dit genereert een nieuwe graaf naar een patroon.", "Description[pl]": "Generuje to nowy graf według wzorca.", "Description[pt]": "Isto gera um novo grafo com base num dado padrão.", "Description[pt_BR]": "Isto gera um novo grafo de acordo com um padrão.", "Description[ru]": "Создаёт новый граф по шаблону.", "Description[sk]": "Toto generuje nový graf podľa vzoru.", "Description[sl]": "Po vzorcu ustvari nov graf.", "Description[sv]": "Skapar en ny graf enligt ett mönster.", "Description[tr]": "Bu, bir desene göre bir grafik oluşturur.", "Description[uk]": "Створює новий граф за шаблоном.", "Description[x-test]": "xxThis generates a new graph by a pattern.xx", + "Description[zh_TW]": "依樣式產生新的圖形。", "Id": "rocs_generategraphplugin", "License": "GPL", "Name": "Generate Graph", "Name[ast]": "Xenerar grafu", "Name[bg]": "Създаване на графика", "Name[bs]": "Generiši Graf", "Name[ca@valencia]": "Genera el graf", "Name[ca]": "Genera el graf", "Name[cs]": "Vygenerovat graf", "Name[da]": "Generér graf", "Name[de]": "Graphen erstellen", "Name[el]": "Δημιουργία γράφου", + "Name[en_GB]": "Generate Graph", "Name[es]": "Generar grafo", "Name[et]": "Graafi genereerimine", "Name[fi]": "Generoi graafi", "Name[fr]": "Générer un graphe", "Name[gl]": "Xerar un gráfico", "Name[hu]": "Gráf készítése", "Name[it]": "Genera grafo", "Name[kk]": "Графты құру", "Name[km]": "បង្កើត​ក្រាហ្វ", "Name[ko]": "그래프 생성", "Name[lt]": "Generuoti grafiką", "Name[lv]": "Ģenerēt grafu", "Name[mr]": "आलेख बनवा", "Name[nb]": "Lag graf", "Name[nds]": "Diagramm opstellen", "Name[nl]": "Graaf genereren", "Name[pl]": "Generuj graf", "Name[pt]": "Gerar um Grafo", "Name[pt_BR]": "Gerar o grafo", "Name[ru]": "Построитель графа", "Name[sk]": "Generovať graf", "Name[sl]": "Ustvari graf", "Name[sv]": "Skapa graf", "Name[tr]": "Grafik Oluştur", "Name[ug]": "گرافنى ھاسىل قىل", "Name[uk]": "Створення графу", "Name[x-test]": "xxGenerate Graphxx", "Name[zh_CN]": "生成图", "Name[zh_TW]": "產生圖形", "ServiceTypes": [ "rocs/editorplugins" ], "Version": "0.2" } } \ No newline at end of file diff --git a/libgraphtheory/editorplugins/transformedges/transformedgesplugin.json b/libgraphtheory/editorplugins/transformedges/transformedgesplugin.json index 32b0c768..877be4ab 100644 --- a/libgraphtheory/editorplugins/transformedges/transformedgesplugin.json +++ b/libgraphtheory/editorplugins/transformedges/transformedgesplugin.json @@ -1,69 +1,72 @@ { "Encoding": "UTF-8", "KPlugin": { "Category": "Plugins", "Description": "Transform graph edges by a transformation rule.", "Description[ast]": "Tresforma los berbesos del grafu pente una regla de tresformación.", "Description[ca@valencia]": "Transforma les arestes del graf seguint una regla de transformació.", "Description[ca]": "Transforma les arestes del graf seguint una regla de transformació.", "Description[de]": "Graphenkanten mittels Transformationsregel umformen.", + "Description[en_GB]": "Transform graph edges by a transformation rule.", "Description[es]": "Transforma las aristas del grafo usando una regla de transformación.", "Description[et]": "Graafi seoste teisendamine vastava reegli järgi.", "Description[fi]": "Muuntaa graafin välit säännön mukaan.", "Description[fr]": "Transforme les arêtes d'un graphe à l'aide d'une règle de transformation.", "Description[gl]": "Transforma as arestas do gráfico segundo unha regra de transformación.", "Description[it]": "Trasforma gli archi di un grafo con una regola di trasformazione.", "Description[nl]": "Kanten van de graaf volgens een bepaalde regel transformeren.", "Description[pl]": "Przekształć krawędzie grafu według reguły przekształcania.", "Description[pt]": "Transforma as arestas do grafo com base numa regra de transformação.", "Description[pt_BR]": "Transformar os cantos do grafo de acordo com uma regra de transformação.", "Description[ru]": "Преобразует рёбра графа по заданному правилу.", "Description[sk]": "Transformácia hrán grafu podľa transformačného pravidla.", "Description[sl]": "Po pravilu preoblikuje povezave grafa.", "Description[sv]": "Transformerar grafernas kanter med en transformeringsregel.", "Description[tr]": "Grafik kenarlarını bir dönüştürme kuralı ile dönüştür.", "Description[uk]": "Перетворити ребра графу за правилом перетворення.", "Description[x-test]": "xxTransform graph edges by a transformation rule.xx", + "Description[zh_TW]": "依轉換規則來轉換圖形邊緣。", "Id": "rocs_transformedges", "License": "GPL", "Name": "Transform Edges", "Name[ast]": "Tresformar berbesos", "Name[bs]": "Trasformiši ivice", "Name[ca@valencia]": "Transforma les arestes", "Name[ca]": "Transforma les arestes", "Name[da]": "Transformér kanter", "Name[de]": "Kanten umformen", "Name[el]": "Μετασχηματισμός ακμών", + "Name[en_GB]": "Transform Edges", "Name[es]": "Transformar aristas", "Name[et]": "Seoste teisendamine", "Name[fi]": "Muunna välit", "Name[fr]": "Transformer des arêtes", "Name[gl]": "Transformar as arestas", "Name[hu]": "Élek átalakítása", "Name[it]": "Trasforma archi", "Name[kk]": "Қырларын түрлендіру", "Name[km]": "ប្លែង​គែម", "Name[ko]": "선 변형", "Name[lt]": "Transformuoti briaunas", "Name[lv]": "Transformēt šķautnes", "Name[nb]": "Omform kanter", "Name[nds]": "Kanten wanneln", "Name[nl]": "Kanten transformeren", "Name[pl]": "Przekształć krawędzie", "Name[pt]": "Transformar as Arestas", "Name[pt_BR]": "Transformar os cantos", "Name[ru]": "Преобразование рёбер", "Name[sk]": "Transformácia hrán", "Name[sl]": "Preoblikuj povezave", "Name[sv]": "Transformera kanter", "Name[tr]": "Kenarları Dönüştür", "Name[uk]": "Перетворення ребер", "Name[x-test]": "xxTransform Edgesxx", "Name[zh_CN]": "转换边", "Name[zh_TW]": "轉換邊緣", "ServiceTypes": [ "rocs/editorplugins" ], "Version": "0.2" } } \ No newline at end of file diff --git a/libgraphtheory/fileformats/dot/dotfileformat.json b/libgraphtheory/fileformats/dot/dotfileformat.json index 155f4522..435f013b 100644 --- a/libgraphtheory/fileformats/dot/dotfileformat.json +++ b/libgraphtheory/fileformats/dot/dotfileformat.json @@ -1,59 +1,62 @@ { "Encoding": "UTF-8", "KPlugin": { "Category": "Plugins", "Description": "Read and write Graphviz graph documents (DOT)", "Description[ast]": "Llee y escribe documentos (DOT) de grafos Graphviz", "Description[ca@valencia]": "Llig i escriu documents gràfics del Graphviz (DOT).", "Description[ca]": "Llegeix i escriu documents gràfics del Graphviz (DOT).", "Description[cs]": "Čte a ukládá soubory grafů Graphviz (DOT)", "Description[de]": "Graphviz-Graphendokumente (DOT) lesen und schreiben", + "Description[en_GB]": "Read and write Graphviz graph documents (DOT)", "Description[es]": "Leer y escribir documentos de grafos Graphviz (DOT)", "Description[et]": "Graphvizi graafidokumentide (DOT) lugemine ja kirjutamine.", "Description[fi]": "Lukee ja kirjoittaa Graphviz-graafitiedostoja (DOT)", "Description[fr]": "Lit et écrit des documents de graphes « Graphviz » (« DOT »)", "Description[gl]": "Le e escribe documentos de gráficos de Graphviz (DOT)", "Description[it]": "Leggi e scrivi i grafi Graphviz (DOT)", "Description[nl]": "Lezen en schrijven van Graphviz grafiekbestanden (DOT)", "Description[pl]": "Czytaj i zapisuj dokumenty grafów Graphviz (DOT)", "Description[pt]": "Lê e grava documentos de grafos no Graphviz (DOT)", "Description[pt_BR]": "Lê e grava documentos de grafo do Graphviz (DOT)", "Description[ru]": "Читает и записывает определения графов Graphviz (DOT)", "Description[sk]": "Čítanie a zápis grafických dokumentov Graphviz (DOT)", "Description[sl]": "Branje in pisanje dokumentov grafov Graphviz (DOT)", "Description[sv]": "Läs och skriv Graphviz-grafdokument (DOT)", "Description[tr]": "Graphviz grafik belgelerini oku ve yaz (DOT)", "Description[uk]": "Читання і запис файлів документів графів Graphviz (DOT)", "Description[x-test]": "xxRead and write Graphviz graph documents (DOT)xx", + "Description[zh_TW]": "讀寫 Graphviz 圖形檔 (DOT)。", "Id": "rocs_dotfileformat", "License": "GPL", "Name": "DOT Graph File Format", "Name[ast]": "Formatu de ficheru de grafos DOT", "Name[ca@valencia]": "Format de fitxer de grafs DOT", "Name[ca]": "Format de fitxer de grafs DOT", "Name[cs]": "Formát souborů grafů DOT", "Name[de]": "DOT-Graphendateiformat", + "Name[en_GB]": "DOT Graph File Format", "Name[es]": "Formato de archivo de grafos DOT", "Name[et]": "DOT graafifailivorming", "Name[fi]": "DOT-graafitiedostomuoto", "Name[fr]": "Format de fichier de graphe « DOT »", "Name[gl]": "Complemento do formato de ficheiros de gráficos DOT", "Name[it]": "Formato di file di grafi DOT", "Name[nl]": "Bestandsformaat voor DOT Graph", "Name[pl]": "Format plików grafów DOT", "Name[pt]": "Formato de Ficheiros de Grafos do DOT", "Name[pt_BR]": "Formato de arquivo de grafo DOT", "Name[ru]": "Поддержка файлов графов DOT", "Name[sk]": "Súborový formát grafu DOT", "Name[sl]": "Vrsta datotek grafov DOT", "Name[sv]": "DOT-graffilformat", "Name[tr]": "DOT Grafik Dosya Biçimi", "Name[uk]": "формат файлів графів DOT", "Name[x-test]": "xxDOT Graph File Formatxx", "Name[zh_TW]": "DOT 圖形檔案格式", "ServiceTypes": [ "rocs/graphtheory/fileformat" ], "Version": "0.1" } } \ No newline at end of file diff --git a/libgraphtheory/fileformats/gml/gmlfileformat.json b/libgraphtheory/fileformats/gml/gmlfileformat.json index 2de0bfcf..a324701c 100644 --- a/libgraphtheory/fileformats/gml/gmlfileformat.json +++ b/libgraphtheory/fileformats/gml/gmlfileformat.json @@ -1,59 +1,62 @@ { "Encoding": "UTF-8", "KPlugin": { "Category": "Plugins", "Description": "Read and write Graph Markup Language documents (GML)", "Description[ast]": "Llee y escribe documentos del llinguax de marques de grafos (GML)", "Description[ca@valencia]": "Llig i escriu fitxers escrits en Llenguatge de Marcatge de Gràfics (GML)", "Description[ca]": "Llegeix i escriu fitxers escrits en Llenguatge de Marcatge de Gràfics (GML)", "Description[cs]": "Číst a ukládat dokumenty Graph Markup Language (GML)", "Description[de]": "Dokumente im Format „Graph Markup Language“ (GML) lesen und schreiben", + "Description[en_GB]": "Read and write Graph Markup Language documents (GML)", "Description[es]": "Leer y escribir documentos del lenguaje de marcas de grafos (GML)", "Description[et]": "GML (Graph Markup Language) dokumentide lugemine ja kirjutamine.", "Description[fi]": "Lukee ja kirjoittaa Graph Markup Language (GML) -tiedostoja", "Description[fr]": "Lit et écrit des documents au format « Graph Markup Language » (« GML »)", "Description[gl]": "Le e escribe documentos na linguaxe de etiquetaxe de gráficos (GML)", "Description[it]": "Leggi e scrivi i documenti scritti in Graph Markup Language (GML)", "Description[nl]": "Lezen en schrijven van Graph Markup Language documenten (GML)", "Description[pl]": "Czytaj i zapisuj dokumenty Graph Markup Language (GML)", "Description[pt]": "Lê e grava documentos no formato GML (Graph Markup Language)", "Description[pt_BR]": "Lê e grava documentos no formato Graph Markup Language (GML)", "Description[ru]": "Читает и записывает документы GML (язык разметки графов)", "Description[sk]": "Čítanie a zápis dokumentov Graph Markup Language (GML)", "Description[sl]": "Branje in pisanje dokumentov grafov Graph Markup Language (GML)", "Description[sv]": "Läs och skriv GML-dokument (Graph Markup Language)", "Description[tr]": "Graph İşaret Dili belgelerini oku ve yaz (GML)", "Description[uk]": "Читання і запис файлів у форматі Graph Markup Language (GML).", "Description[x-test]": "xxRead and write Graph Markup Language documents (GML)xx", + "Description[zh_TW]": "讀寫 Graph Markup Language 文件 (GML) 。", "Id": "rocs_gmlfileformat", "License": "GPL", "Name": "GML File Format", "Name[ast]": "Formatu de ficheru GML", "Name[ca@valencia]": "Format de fitxer GML", "Name[ca]": "Format de fitxer GML", "Name[cs]": "Formát souboru GML", "Name[de]": "GML-Dateiformat", + "Name[en_GB]": "GML File Format", "Name[es]": "Formato de archivo GML", "Name[et]": "GML-failivorming", "Name[fi]": "GML-tiedostomuoto", "Name[fr]": "Format de fichier GML", "Name[gl]": "Formato de ficheiro GML", "Name[it]": "Formato di file GML", "Name[nl]": "GML-bestandsformaat", "Name[pl]": "Format pliku GML", "Name[pt]": "Formato de Ficheiro GML", "Name[pt_BR]": "Formato de arquivo GML", "Name[ru]": "Поддержка файлов графов GML", "Name[sk]": "Formát súborov GML", "Name[sl]": "Vrsta datotek GML", "Name[sv]": "GML-filformat", "Name[tr]": "GML Dosya Biçimi", "Name[uk]": "формат файлів GML", "Name[x-test]": "xxGML File Formatxx", "Name[zh_TW]": "GML 檔案格式", "ServiceTypes": [ "rocs/graphtheory/fileformat" ], "Version": "0.1" } } \ No newline at end of file diff --git a/libgraphtheory/fileformats/rocs1/rocs1fileformat.json b/libgraphtheory/fileformats/rocs1/rocs1fileformat.json index 00595570..4785d7ca 100644 --- a/libgraphtheory/fileformats/rocs1/rocs1fileformat.json +++ b/libgraphtheory/fileformats/rocs1/rocs1fileformat.json @@ -1,59 +1,62 @@ { "Encoding": "UTF-8", "KPlugin": { "Category": "Plugins", "Description": "Rocs Graph File Format (old)", "Description[ast]": "Formatu de ficheru de grafos Rocs (vieyu)", "Description[ca@valencia]": "Format de fitxers de grafs del Rocs (antic)", "Description[ca]": "Format de fitxers de grafs del Rocs (antic)", "Description[cs]": "Formát souborů grafů Rocs (starý)", "Description[de]": "Rocs-Graphendatei-Format (veraltet)", + "Description[en_GB]": "Rocs Graph File Format (old)", "Description[es]": "Formato de archivo de grafos de Rocs (antiguo)", "Description[et]": "Rocsi graafifaili vorming (vana)", "Description[fi]": "Rocsin graafitiedostomuoto (vanha)", "Description[fr]": "Format de fichier de graphe Rocs (ancien)", "Description[gl]": "Formato de ficheiro de gráficos de Rocs (vello)", "Description[it]": "Formato di file di grafi di Rocs (vecchio)", "Description[nl]": "Bestandsformaat voor Rocs Graph (oud)", "Description[pl]": "Format plików grafów Rocs (stary)", "Description[pt]": "Formato de Ficheiro de Grafo do Rocs (antigo)", "Description[pt_BR]": "Formato de arquivo de grafo do Rocs (antigo)", "Description[ru]": "Формат файлов графов Rocs 1 (старый формат)", "Description[sk]": "Súborový formát grafu Rocs (starý)", "Description[sl]": "Vrsta datotek z grafi Rocs (stara)", "Description[sv]": "Rocs-graffilformat (gammalt)", "Description[tr]": "Rocs Grafik Dosya Biçimi (eski)", "Description[uk]": "формат файлів графів Rocs (застарілий)", "Description[x-test]": "xxRocs Graph File Format (old)xx", + "Description[zh_TW]": "Rocs 圖形檔格式(舊式)", "Id": "rocs_rocs1fileformat", "License": "GPL", "Name": "Rocs File Format (old)", "Name[ast]": "Formatu de ficheru Rocs (vieyu)", "Name[ca@valencia]": "Format de fitxer del Rocs (antic)", "Name[ca]": "Format de fitxer del Rocs (antic)", "Name[cs]": "Formát souborů Rocs (starý)", "Name[de]": "Rocs-Dateiformat (veraltet)", + "Name[en_GB]": "Rocs File Format (old)", "Name[es]": "Formato de archivo de Rocs (antiguo)", "Name[et]": "Rocsi failivorming (vana)", "Name[fi]": "Rocsin tiedostomuoto (vanha)", "Name[fr]": "Format de fichier Rocs (ancien)", "Name[gl]": "Formato de ficheiro de Rocs (vello)", "Name[it]": "Formato di file di Rocs (vecchio)", "Name[nl]": "Rocs-bestandsformaat (oud)", "Name[pl]": "Format plików Rocs (stary)", "Name[pt]": "Formato de Ficheiro do Rocs (antigo)", "Name[pt_BR]": "Formato de arquivo do Rocs (antigo)", "Name[ru]": "Поддержка файлов графов Rocs 1 (старый формат)", "Name[sk]": "Formát súborov Rocs (starý)", "Name[sl]": "Vrsta datotek Rocs (stara)", "Name[sv]": "Rocs-filformat (gammalt)", "Name[tr]": "Rocs Dosya Biçimi (eski)", "Name[uk]": "формат файлів Rocs (застарілий)", "Name[x-test]": "xxRocs File Format (old)xx", "Name[zh_TW]": "Rocs 檔案格式(舊)", "ServiceTypes": [ "rocs/graphtheory/fileformat" ], "Version": "0.1" } } \ No newline at end of file diff --git a/libgraphtheory/fileformats/rocs2/rocs2fileformat.json b/libgraphtheory/fileformats/rocs2/rocs2fileformat.json index 6a1bd3d2..4566d1bf 100644 --- a/libgraphtheory/fileformats/rocs2/rocs2fileformat.json +++ b/libgraphtheory/fileformats/rocs2/rocs2fileformat.json @@ -1,59 +1,62 @@ { "Encoding": "UTF-8", "KPlugin": { "Category": "Plugins", "Description": "Rocs Graph File Format", "Description[ast]": "Formatu de ficheru de grafos Rocs", "Description[ca@valencia]": "Format de fitxers de graf del Rocs", "Description[ca]": "Format de fitxers de graf del Rocs", "Description[cs]": "Formát souborů grafů Rocs", "Description[de]": "Rocs-Graphendatei-Format", + "Description[en_GB]": "Rocs Graph File Format", "Description[es]": "Formato de archivo de grafos de Rocs", "Description[et]": "Rocsi graafifaili vorming", "Description[fi]": "Rocsin graafitiedostomuoto", "Description[fr]": "Format de fichier de graphe Rocs", "Description[gl]": "Formato de ficheiro de gráficos de Rocs", "Description[it]": "Formato di file di grafi di Rocs", "Description[nl]": "Bestandsformaat voor Rocs Graph", "Description[pl]": "Format plików grafów Rocs", "Description[pt]": "Formato de Ficheiro de Grafo do Rocs", "Description[pt_BR]": "Formato de arquivo de grafo do Rocs", "Description[ru]": "Формат файлов графов Rocs", "Description[sk]": "Súborový formát grafi Rocs", "Description[sl]": "Vrsta datotek z grafi Rocs", "Description[sv]": "Rocs-graffilformat", "Description[tr]": "Rocs Grafik Dosya Biçimi", "Description[uk]": "формат файлів графів Rocs", "Description[x-test]": "xxRocs Graph File Formatxx", + "Description[zh_TW]": "Rocs 圖形檔格式", "Id": "rocs_rocs2fileformat", "License": "GPL", "Name": "Rocs File Format", "Name[ast]": "Formatu de ficheru Rocs", "Name[ca@valencia]": "Format de fitxer del Rocs", "Name[ca]": "Format de fitxer del Rocs", "Name[cs]": "Formát souborů Rocs", "Name[de]": "Rocs-Dateiformat", + "Name[en_GB]": "Rocs File Format", "Name[es]": "Formato de archivo de Rocs", "Name[et]": "Rocsi failivorming", "Name[fi]": "Rocsin tiedostomuoto", "Name[fr]": "Format de fichier Rocs", "Name[gl]": "Formato de ficheiro de Rocs", "Name[it]": "Formato di file di Rocs", "Name[nl]": "Rocs-bestandsformaat", "Name[pl]": "Format plików Rocs", "Name[pt]": "Formato de Ficheiro do Rocs", "Name[pt_BR]": "Formato de arquivo do Rocs", "Name[ru]": "Поддержка файлов графов Rocs", "Name[sk]": "Súborový formát Rocs", "Name[sl]": "Vrsta datotek Rocs", "Name[sv]": "Rocs-filformat", "Name[tr]": "Rocs Dosya Biçimi", "Name[uk]": "формат файлів Rocs", "Name[x-test]": "xxRocs File Formatxx", "Name[zh_TW]": "Rocs 檔案格式", "ServiceTypes": [ "rocs/graphtheory/fileformat" ], "Version": "0.1" } } \ No newline at end of file diff --git a/libgraphtheory/fileformats/tgf/tgffileformat.json b/libgraphtheory/fileformats/tgf/tgffileformat.json index 2f20f920..3a459976 100644 --- a/libgraphtheory/fileformats/tgf/tgffileformat.json +++ b/libgraphtheory/fileformats/tgf/tgffileformat.json @@ -1,58 +1,61 @@ { "Encoding": "UTF-8", "KPlugin": { "Category": "Plugins", "Description": "Read and write graph documents in Trivial Graph Format (TGF)", "Description[ast]": "Llee y escribe documentos nel formatu de grafos triviales (TGF)", "Description[ca@valencia]": "Llig i escriu fitxers escrits en Format Gràfic Trivial (TGF)", "Description[ca]": "Llegeix i escriu fitxers escrits en Format Gràfic Trivial (TGF)", "Description[de]": "Dokumente im Format „Trivial Graph“ (TGF) lesen und schreiben", + "Description[en_GB]": "Read and write graph documents in Trivial Graph Format (TGF)", "Description[es]": "Leer y escribir documentos de grafos en el formato de grafos Trivial (TGF)", "Description[et]": "TGF (Trivial Graph Format) vormingus graafidokumentide lugemine ja kirjutamine", "Description[fi]": "Lukee ja kirjoittaa Trivial Graph Format (TGF) -muotoisia graafitiedostoja", "Description[fr]": "Lit et écrit de documents de graphe au format « Trivial Graph Format  » (« TGF »)", "Description[gl]": "Le e escribe documentos gráficos co Trivial Graph Format (TGF)", "Description[it]": "Leggi e scrivi i documenti scritti in Trivial Graph Format (TGF)", "Description[nl]": "Lezen en schrijven van Trivial Graph Format documenten (TGF)", "Description[pl]": "Czytaj i zapisuj dokumenty grafów w Trivial Graph Format (TGF)", "Description[pt]": "Lê e grava documentos no formato TGF (Trivial Graph Format)", "Description[pt_BR]": "Lê e grava documentos no formato Trivial Graph Format (TGF)", "Description[ru]": "Читает и записывает определения графов в формате TGF", "Description[sk]": "Čítať a zapisovať grafické dokumenty v triviálnom grafickom formáte (TGF)", "Description[sl]": "Branje in pisanje dokumentov grafov Trivial Graph Format (TGF)", "Description[sv]": "Läs och skriv grafdokument med Trivial Graph-format (TGF)", "Description[tr]": "Grafik belgelerini Açık Grafik Biçiminde oku ve yaz (TGF)", "Description[uk]": "Читання і запис документів графів у форматі звичайного графу (TGF)", "Description[x-test]": "xxRead and write graph documents in Trivial Graph Format (TGF)xx", + "Description[zh_TW]": "讀寫 Trivial Graph Format (TGF) 格式的圖形檔。", "Id": "rocs_tgffileformat", "License": "GPL", "Name": "TGF Graph File Format", "Name[ast]": "Formatu de ficheru de grafos TGF", "Name[ca@valencia]": "Format de fitxer de grafs TGF", "Name[ca]": "Format de fitxer de grafs TGF", "Name[cs]": "Formát souborů grafů TGF", "Name[de]": "TGF-Graphendateiformat", + "Name[en_GB]": "TGF Graph File Format", "Name[es]": "Formato de archivo de grafos TGF", "Name[et]": "TGF graafifailivorming", "Name[fi]": "TGF-graafitiedostomuoto", "Name[fr]": "Format de fichier de graphe « TGF »", "Name[gl]": "Complemento de ficheiros de gráficos TGF", "Name[it]": "Formato di file di grafi TGF", "Name[nl]": "Bestandsformaat voor TGF Graph", "Name[pl]": "Format plików grafów TGF", "Name[pt]": "Formato de Ficheiro de Grafo TGF", "Name[pt_BR]": "Formato de arquivo de grafo TGF", "Name[ru]": "Поддержка файлов графов TGF", "Name[sk]": "Grafický súborový formát TGF", "Name[sl]": "Vrsta datotek z grafi TGF", "Name[sv]": "TGF-graffilformat", "Name[tr]": "TGF Grafik Dosya Biçimi", "Name[uk]": "формат файлів графів TGF", "Name[x-test]": "xxTGF Graph File Formatxx", "Name[zh_TW]": "TGF 圖形檔案格式", "ServiceTypes": [ "rocs/graphtheory/fileformat" ], "Version": "0.1" } } \ No newline at end of file diff --git a/libgraphtheory/fileformats/tikz/tikzfileformat.json b/libgraphtheory/fileformats/tikz/tikzfileformat.json index 4243f332..777c66cc 100644 --- a/libgraphtheory/fileformats/tikz/tikzfileformat.json +++ b/libgraphtheory/fileformats/tikz/tikzfileformat.json @@ -1,58 +1,61 @@ { "Encoding": "UTF-8", "KPlugin": { "Category": "Plugins", "Description": "Writes graph documents in PGF/TikZ format for use in LaTeX documents", "Description[ast]": "Escribe documentos de grafos nel formatu PGF/TikZ pal so usu en documentos LaTeX", "Description[ca@valencia]": "Escriu documents gràfics en format PGF/TikZ per utilitzar-los en documents LaTeX", "Description[ca]": "Escriu documents gràfics en format PGF/TikZ per utilitzar-los en documents LaTeX", "Description[de]": "Exportiert Graphendokumente im Format PGF/TikZ zur Verwendung in LaTeX-Dokumenten", + "Description[en_GB]": "Writes graph documents in PGF/TikZ format for use in LaTeX documents", "Description[es]": "Escribe documentos de grafos en el formato PGF/TikZ para usar en documentos LaTeX", "Description[et]": "Graafidokumentide kirjutamine PGF/TikZ vormingus kasutamiseks LaTeXi dokumentides", "Description[fi]": "Kirjoittaa PGF/TikZ-muotoisia graafitiedostoja LaTeX-tiedostoissa käyttämiseen", "Description[fr]": "Écrit des documents de graphes au format « PGF » / « TikZ » pour utilisation dans des documents LaTeX", "Description[gl]": "Escribe documentos de gráficos no formato PGF/TikZ para usar en documentos de LaTeX", "Description[it]": "Scrive grafi in formato PGF/TikZ per usarli nei documenti LaTeX", "Description[nl]": "Schrijft grafiekdocumenten in PGF/TikZ-formaat die in LaTeX-documenten worden gebruikt.", "Description[pl]": "Zapisuje dokumenty grafów w formacie PGF/TikZ do wykorzystania w dokumentach LaTeX", "Description[pt]": "Grava os documentos dos grafos no formato PGF/TikZ para usar nos documentos em LaTeX", "Description[pt_BR]": "Grava documentos de grafo no formato PGF/TikZ para uso em documentos LaTeX", "Description[ru]": "Записывает определения графов в формате PGF/TikZ для использования в документах LaTeX", "Description[sk]": "Zapíše grafické dokumenty do formátu PGF/TikZ na použitie s dokumentmi LaTeX", "Description[sl]": "Zapiše dokumente grafov v obliki PGF/TikZ za uporabo v dokumentih LaTeX", "Description[sv]": "Skriver grafdokument med PGF/TikZ-format för användning i Latex-dokument", "Description[tr]": "LaTeX belgelerinde kullanmak üzere grafik belgelerini PGF/TikZ biçiminde yazar", "Description[uk]": "Запис документів графів у форматі PGF/TikZ з метою наступного використання у документах LaTeX", "Description[x-test]": "xxWrites graph documents in PGF/TikZ format for use in LaTeX documentsxx", + "Description[zh_TW]": "寫入 PGF/TikZ 格式的圖形文件,以便在 LaTeX 文件中使用", "Id": "rocs_tikzfileformat", "License": "GPL", "Name": "PGF/TikZ Graph File Export Plugin", "Name[ast]": "Complementu d'esportación de ficheros de grafos PGF/TikZ", "Name[ca@valencia]": "Connector d'exportació del fitxer de grafs a PGF/TikZ", "Name[ca]": "Connector d'exportació del fitxer de grafs a PGF/TikZ", "Name[cs]": "Export souborů grafů PGF/TikZ", "Name[de]": "PGF/TikZ-Graphendateiexportmodul", + "Name[en_GB]": "PGF/TikZ Graph File Export Plugin", "Name[es]": "Complemento de exportación de archivo de grafos PGF/TikZ", "Name[et]": "PGF/TikZ graafifaili ekspordiplugin", "Name[fi]": "PGF/TikZ-graafitiedoston vientiliitännäinen", "Name[fr]": "Module externe d'exportation de fichiers « PGF / TikZ »", "Name[gl]": "Complemento de exportación de ficheiros de gráficos PGG/TikZ", "Name[it]": "Estensione di esportazione a file PGF/TikZ", "Name[nl]": "Plugin voor exporteren van PGF/TikZ Graph-bestanden", "Name[pl]": "Wtyczka eksportu plików grafów PGF/TikZ", "Name[pt]": "'Plugin' de Exportação para Ficheiros de Grafos PGF/TikZ", "Name[pt_BR]": "Plugin para exportação de arquivo de grafo PGF/TikZ", "Name[ru]": "Модуль экспорта в файлы графов PGF/TikZ", "Name[sk]": "Exportný plugin súborov grafu PGF/TikZ", "Name[sl]": "Vstavek izvoza datotek grafov PGF/TikZ", "Name[sv]": "Exportinsticksprogram för PGF/TikZ-graffilformat", "Name[tr]": "PGF/TikZ Grafik Dosya Dışa Aktarma Eklentisi", "Name[uk]": "Додаток експортування файлів графів PGF/TikZ", "Name[x-test]": "xxPGF/TikZ Graph File Export Pluginxx", "Name[zh_TW]": "PGF/TikZ 圖形檔匯出外掛程式", "ServiceTypes": [ "rocs/graphtheory/fileformat" ], "Version": "0.1" } } \ No newline at end of file diff --git a/src/rocsui.rc b/src/rocsui.rc index 0dc37fad..50c93fad 100644 --- a/src/rocsui.rc +++ b/src/rocsui.rc @@ -1,86 +1,66 @@ Script Document Graph Document Tools - - - Main Toolbar - - - - - - - - Align Toolbar - - - - - - - - - diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 7d3c2c1d..2a246281 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -1,584 +1,584 @@ /* This file is part of Rocs. Copyright 2008-2011 Tomaz Canabrava Copyright 2008 Ugo Sangiori Copyright 2010-2011 Wagner Reck Copyright 2011-2014 Andreas Cord-Landwehr This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "mainwindow.h" #include "rocsversion.h" #include "settings.h" #include "libgraphtheory/editor.h" #include "libgraphtheory/editorplugins/editorpluginmanager.h" #include "libgraphtheory/kernel/kernel.h" #include "libgraphtheory/view.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "ui/documenttypeswidget.h" #include "ui/codeeditorwidget.h" #include "ui/scriptoutputwidget.h" #include "ui/sidedockwidget.h" #include "ui/fileformatdialog.h" #include "ui/journalwidget.h" #include "grapheditorwidget.h" #include "plugins/scriptapi/scriptapiwidget.h" #include "project/project.h" using namespace GraphTheory; MainWindow::MainWindow() : KXmlGuiWindow() , m_currentProject(0) , m_kernel(new Kernel) , m_codeEditorWidget(new CodeEditorWidget(this)) , m_graphEditorWidget(new GraphEditorWidget(this)) , m_outputWidget(new ScriptOutputWidget(this)) { setObjectName("RocsMainWindow"); m_graphEditor = new GraphTheory::Editor(); setupWidgets(); setupActions(); - setupGUI(ToolBar | Keys | Save | Create); + setupGUI(Keys | Save | Create); setupToolsPluginsAction(); // setup kernel connect(m_kernel, &Kernel::message, m_outputWidget, &ScriptOutputWidget::processMessage); // TODO: use welcome widget instead of creating default empty project createProject(); updateCaption(); // update rocs config version Settings::setVersion(ROCS_VERSION_STRING); // disable save action from kpart, since we take care for the editor by global save action // here "file_save" is the action identifier from katepartui.rc // note that we may not use that name for our own actions foreach(KActionCollection *ac, KActionCollection::allCollections()) { if (ac->action("file_save")) { ac->action("file_save")->setDisabled(true); } } } MainWindow::~MainWindow() { Settings::setVSplitterSizeTop(m_vSplitter->sizes() [0]); Settings::setVSplitterSizeBottom(m_vSplitter->sizes() [1]); Settings::setHSplitterSizeLeft(m_hSplitter->sizes() [0]); Settings::setHSplitterSizeRight(m_hSplitter->sizes() [1]); Settings::setHScriptSplitterSizeLeft(m_hScriptSplitter->sizes() [0]); Settings::setHScriptSplitterSizeRight(m_hScriptSplitter->sizes() [1]); m_recentProjects->saveEntries(Settings::self()->config()->group("RecentFiles")); Settings::self()->save(); m_graphEditor->deleteLater(); m_kernel->deleteLater(); } void MainWindow::closeEvent(QCloseEvent *event) { if (queryClose() == true) { event->accept(); return; } else { event->ignore(); return; } } void MainWindow::setupWidgets() { // setup main widgets QWidget *sidePanel = setupSidePanel(); QWidget *scriptPanel = setupScriptPanel(); // splits the main window horizontal m_vSplitter = new QSplitter(this); m_vSplitter->setOrientation(Qt::Vertical); m_vSplitter->addWidget(m_graphEditorWidget); m_vSplitter->addWidget(scriptPanel); // horizontal arrangement m_hSplitter = new QSplitter(this); m_hSplitter->setOrientation(Qt::Horizontal); m_hSplitter->addWidget(m_vSplitter); m_hSplitter->addWidget(sidePanel); // set sizes for script panel m_hScriptSplitter->setSizes(QList() << Settings::hScriptSplitterSizeLeft() << Settings::hScriptSplitterSizeRight() << 80); // set sizes for vertical splitter m_vSplitter->setSizes(QList() << Settings::vSplitterSizeTop() << Settings::vSplitterSizeBottom()); // set sizes for side panel // the following solves the setting of the panel width if it was closed at previous session int panelWidth = Settings::hSplitterSizeRight(); if (panelWidth == 0) { //FIXME this is only a workaround // that fixes the wrong saving of hSplitterSizeRight panelWidth = 400; } m_hSplitter->setSizes(QList() << Settings::hSplitterSizeLeft() << panelWidth); setCentralWidget(m_hSplitter); } QWidget* MainWindow::setupScriptPanel() { m_hScriptSplitter = new QSplitter(this); m_hScriptSplitter->setOrientation(Qt::Horizontal); KToolBar *executeCommands = new KToolBar(this); executeCommands->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); executeCommands->setOrientation(Qt::Vertical); m_runScript = new QAction(QIcon::fromTheme("media-playback-start"), i18nc("@action:intoolbar Script Execution", "Run"), this); m_runScript->setToolTip(i18nc("@info:tooltip", "Execute currently active script on active graph document.")); m_stopScript = new QAction(QIcon::fromTheme("process-stop"), i18nc("@action:intoolbar Script Execution", "Stop"), this); m_stopScript->setToolTip(i18nc("@info:tooltip", "Stop script execution.")); m_stopScript->setEnabled(false); executeCommands->addAction(m_runScript); executeCommands->addAction(m_stopScript); // add actions to action collection to be able to set shortcuts on them in the ui actionCollection()->addAction("_runScript", m_runScript); actionCollection()->addAction("_stopScript", m_stopScript); connect(m_runScript, &QAction::triggered, this, &MainWindow::executeScript); connect(m_stopScript, &QAction::triggered, this, &MainWindow::stopScript); m_hScriptSplitter->addWidget(m_codeEditorWidget); m_hScriptSplitter->addWidget(m_outputWidget); QWidget *scriptInterface = new QWidget(this); scriptInterface->setLayout(new QHBoxLayout); scriptInterface->layout()->addWidget(m_hScriptSplitter); scriptInterface->layout()->addWidget(executeCommands); return scriptInterface; } QWidget* MainWindow::setupSidePanel() { QWidget *panel = new QWidget(this); panel->setLayout(new QVBoxLayout); panel->setVisible(false); // add sidebar SidedockWidget* sideDock = new SidedockWidget(panel); addToolBar(Qt::RightToolBarArea, sideDock->toolbar()); panel->layout()->addWidget(sideDock); // add widgets to dock // document property widgets DocumentTypesWidget *documentTypesWidget = new DocumentTypesWidget(panel); connect(this, &MainWindow::graphDocumentChanged, documentTypesWidget, &DocumentTypesWidget::setDocument); sideDock->addDock(documentTypesWidget, i18n("Element Types"), QIcon::fromTheme("document-properties")); if (m_currentProject && m_currentProject->activeGraphDocument()) { documentTypesWidget->setDocument(m_currentProject->activeGraphDocument()); } // Project Journal m_journalWidget = new JournalEditorWidget(panel); sideDock->addDock(m_journalWidget, i18nc("@title", "Journal"), QIcon::fromTheme("story-editor")); // Rocs scripting API documentation ScriptApiWidget* apiDoc = new ScriptApiWidget(panel); sideDock->addDock(apiDoc, i18nc("@title", "Scripting API"), QIcon::fromTheme("documentation")); return panel; } void MainWindow::setProject(Project *project) { m_codeEditorWidget->setProject(project); m_graphEditorWidget->setProject(project); m_journalWidget->openJournal(project); updateCaption(); if (m_currentProject) { m_currentProject->disconnect(this); m_currentProject->deleteLater(); } connect(project, static_cast(&Project::activeGraphDocumentChanged), this, &MainWindow::graphDocumentChanged); connect(project, &Project::modifiedChanged, this, &MainWindow::updateCaption); m_currentProject = project; emit graphDocumentChanged(m_currentProject->activeGraphDocument()); } void MainWindow::setupActions() { KStandardAction::quit(this, SLOT(quit()), actionCollection()); KStandardAction::preferences(this, SLOT(showConfigurationDialog()), actionCollection()); // setup graph visual editor actions and add them to mainwindow action collection // m_graphEditor->setupActions(actionCollection()); //FIXME add editor actions to main action collection // Menu actions QAction *newProjectAction = new QAction(QIcon::fromTheme("document-new"), i18nc("@action:inmenu", "New Project"), this); newProjectAction->setShortcutContext(Qt::ApplicationShortcut); actionCollection()->addAction("new-project", newProjectAction); actionCollection()->setDefaultShortcut(newProjectAction, QKeySequence::New); connect(newProjectAction, &QAction::triggered, this, &MainWindow::createProject); QAction *projectSaveAction = new QAction(QIcon::fromTheme("document-save"), i18nc("@action:inmenu", "Save Project"), this); projectSaveAction->setShortcutContext(Qt::ApplicationShortcut); actionCollection()->addAction("save-project", projectSaveAction); actionCollection()->setDefaultShortcut(projectSaveAction, QKeySequence::Save); connect(projectSaveAction, &QAction::triggered, this, &MainWindow::saveProject); QAction *projectOpenAction = new QAction(QIcon::fromTheme("document-open"), i18nc("@action:inmenu", "Open Project"), this); projectOpenAction->setShortcutContext(Qt::ApplicationShortcut); actionCollection()->addAction("open-project", projectOpenAction); actionCollection()->setDefaultShortcut(projectOpenAction, QKeySequence::Open); connect(projectOpenAction, &QAction::triggered, this, [=] () { openProject(); }); m_recentProjects = new KRecentFilesAction(QIcon ("document-open"), i18nc("@action:inmenu","Recent Projects"), this); connect(m_recentProjects, &KRecentFilesAction::urlSelected, this, &MainWindow::openProject); actionCollection()->addAction("recent-project", m_recentProjects); m_recentProjects->loadEntries(Settings::self()->config()->group("RecentFiles")); createAction("document-save-as", i18nc("@action:inmenu", "Save Project as"), "save-project-as", SLOT(saveProjectAs()), this); createAction("document-new", i18nc("@action:inmenu", "New Graph Document"), "new-graph", SLOT(createGraphDocument()), this); createAction("document-new", i18nc("@action:inmenu", "New Script File"), "new-script", SLOT(createCodeDocument()), this); createAction("document-import", i18nc("@action:inmenu", "Import Graph"), "import-graph", SLOT(importGraphDocument()), this); createAction("document-export", i18nc("@action:inmenu", "Export Graph as"), "export-graph-as", SLOT(exportGraphDocument()), this); createAction("document-import", i18nc("@action:inmenu", "Import Script"), "add-script", SLOT(importCodeDocument()), this); createAction("document-export", i18nc("@action:inmenu", "Export Script"), "export-script", SLOT(exportCodeDocument()), this); } void MainWindow::createAction(const QByteArray& iconName, const QString& actionTitle, const QString& actionName, const char* slot, QObject *parent) { QAction* action = new QAction(QIcon::fromTheme(iconName), actionTitle, parent); actionCollection()->addAction(actionName, action); connect(action, SIGNAL(triggered(bool)), parent, slot); } void MainWindow::showConfigurationDialog() { QPointer dialog = new KConfigDialog(this, "settings", Settings::self()); KTextEditor::Editor *editor = KTextEditor::Editor::instance(); for (int index = 0; index < editor->configPages(); ++index) { KTextEditor::ConfigPage *page = editor->configPage(index, dialog); dialog->addPage(page, page->name(), page->icon().name(), page->fullName()); } dialog->exec(); } void MainWindow::setupToolsPluginsAction() { QList availablePlugins = m_graphEditorPluginManager.plugins(); QList actions; int count = 0; for (auto plugin : availablePlugins) { QAction *action = new QAction(plugin->displayName(), this); action->setData(count++); connect(action, &QAction::triggered, this, &MainWindow::showEditorPluginDialog); actions << action; } unplugActionList("tools_plugins"); plugActionList("tools_plugins", actions); } void MainWindow::importCodeDocument() { QString startDirectory = Settings::lastOpenedDirectory(); QUrl fileUrl = QUrl::fromLocalFile(QFileDialog::getOpenFileName(this, i18nc("@title:window", "Import Script into Project"), startDirectory)); if (fileUrl.isEmpty()) { return; } m_currentProject->importCodeDocument(fileUrl); Settings::setLastOpenedDirectory(startDirectory); } void MainWindow::exportCodeDocument() { QString startDirectory = Settings::lastOpenedDirectory(); QUrl fileUrl = QUrl::fromLocalFile(QFileDialog::getSaveFileName(this, i18nc("@title:window", "Export Script"), startDirectory, i18n("JavaScript (*.js)"))); m_codeEditorWidget->activeDocument()->saveAs(fileUrl); } void MainWindow::createProject() { if (!queryClose()) { return; } Project *project = new Project(m_graphEditor); project->addCodeDocument(KTextEditor::Editor::instance()->createDocument(nullptr)); project->addGraphDocument(m_graphEditor->createDocument()); project->setModified(false); setProject(project); } void MainWindow::saveProject() { if (m_currentProject->projectUrl().isEmpty()) { saveProjectAs(); return; } else { m_currentProject->projectSave(); m_recentProjects->addUrl(m_currentProject->projectUrl()); } updateCaption(); } void MainWindow::saveProjectAs() { QString startDirectory = Settings::lastOpenedDirectory(); QString file = QFileDialog::getSaveFileName(this, i18nc("@title:window", "Save Project As"), startDirectory, i18n("Rocs Projects (*.rocs)")); if (file.isEmpty()) { qCritical() << "Filename is empty and no script file was created."; return; } QFileInfo fi(file); if (fi.exists()) { const int btnCode = KMessageBox::warningContinueCancel( this, i18nc("@info", "A file named \"%1\" already exists. Are you sure you want to overwrite it?", fi.fileName()), i18nc("@title:window", "Overwrite File?"), KStandardGuiItem::overwrite()); if (btnCode == KMessageBox::Cancel) { return; // cancel saving } } Settings::setLastOpenedDirectory(m_currentProject->projectUrl().path()); m_currentProject->projectSaveAs(QUrl::fromLocalFile(file)); m_recentProjects->addUrl(QUrl::fromLocalFile(file)); updateCaption(); } void MainWindow::openProject(const QUrl &fileName) { if (!queryClose()) { return; } QString startDirectory = Settings::lastOpenedDirectory(); QUrl file = fileName; if (file.isEmpty()){ // show open dialog file = QUrl::fromLocalFile(QFileDialog::getOpenFileName(this, i18nc("@title:window", "Open Project Files"), startDirectory, i18n("Rocs projects (*.rocs)"))); if (file.isEmpty()) { return; } } Project *project = new Project(file, m_graphEditor); setProject(project); m_recentProjects->addUrl(file); updateCaption(); Settings::setLastOpenedDirectory(file.path()); } void MainWindow::updateCaption() { if (!m_currentProject) { return; } QString modified; if (m_currentProject->isModified()) { modified = '*'; } if (m_currentProject->projectUrl().isEmpty()) { setCaption(i18nc("caption text for temporary project", "[ untitled ]%1", modified)); } else { setCaption(QString("[ %1 ]%2").arg(m_currentProject->projectUrl().toLocalFile()).arg(modified)); } } QString MainWindow::uniqueFilename(const QString &basePrefix, const QString &suffix) { QFile targetFile; QString basePath = m_currentProject->projectUrl().path(); QString fullSuffix = '.' + suffix; QString fullPrefix = basePrefix; if (fullPrefix.isNull()) { fullPrefix = m_currentProject->projectUrl().fileName().remove(QRegExp(".rocs*$")); } else if (fullPrefix.endsWith(fullSuffix)) { fullPrefix.remove(QRegExp(fullSuffix + '$')); } targetFile.setFileName(basePath + fullPrefix + fullSuffix); for(int i = 1; targetFile.exists(); i++) { targetFile.setFileName(basePath + fullPrefix + QString::number(i) + fullSuffix); } return targetFile.fileName(); } void MainWindow::createCodeDocument() { QString basePrefix = QInputDialog::getText(this, i18n("ScriptName"), i18n("Enter the name of your new script")); if (basePrefix.isNull()) { qDebug() << "Filename is empty and no script file was created."; } else { QString fileName = uniqueFilename(basePrefix, "js"); //TODO this does nothing KTextEditor::Document *document = KTextEditor::Editor::instance()->createDocument(nullptr); m_currentProject->addCodeDocument(document); } } void MainWindow::createGraphDocument() { GraphDocumentPtr document = m_graphEditor->createDocument(); m_currentProject->addGraphDocument(document); } bool MainWindow::queryClose() { if (!m_currentProject) { return true; } if (m_currentProject->isModified()) { const int btnCode = KMessageBox::warningYesNoCancel(this, i18nc( "@info", "Changes on your project are unsaved. Do you want to save your changes?")); if (btnCode == KMessageBox::Yes) { saveProject(); return true; } if (btnCode == KMessageBox::No) { return true; } return false; // do not close } return true; // save to close project: no changes } void MainWindow::quit() { if (queryClose()) { QApplication::quit(); } } void MainWindow::importGraphDocument() { FileFormatDialog importer(this); GraphDocumentPtr document = importer.importFile(); if (!document) { qWarning() << "No graph document was imported."; return; } m_currentProject->addGraphDocument(document); } void MainWindow::exportGraphDocument() { FileFormatDialog exporter(this); exporter.exportFile(m_currentProject->activeGraphDocument()); } void MainWindow::showEditorPluginDialog() { QAction *action = qobject_cast (sender()); if (!action) { return; } if (EditorPluginInterface *plugin = m_graphEditorPluginManager.plugins().value(action->data().toInt())) { plugin->showDialog(m_currentProject->activeGraphDocument()); } } void MainWindow::executeScript() { if (m_outputWidget->isOutputClearEnabled()) { m_outputWidget->clear(); } QString script = m_codeEditorWidget->activeDocument()->text(); enableStopAction(); m_kernel->execute(m_currentProject->activeGraphDocument(), script); } void MainWindow::stopScript() { m_kernel->stop(); disableStopAction(); } void MainWindow::enableStopAction() { m_stopScript->setEnabled(true); } void MainWindow::disableStopAction() { m_stopScript->setEnabled(false); }