This commit is contained in:
TheShadowOfHassen 2023-06-17 08:15:27 -04:00
commit 9c0bf58f27
12 changed files with 1436 additions and 88 deletions

View file

@ -152,8 +152,9 @@ class OutlineText(OutlineItem):
metadata, body = self.file.loadMMD(optimized)
OutlineItem.loadMetadata(self, metadata)
if not optimized:
if body is not None:
self.text = body
optimized = False
self.complete(optimized=optimized)

View file

@ -24,7 +24,8 @@ class MmdFile(AbstractFile):
metaValue = None
with open(self.path, 'rt', encoding='utf-8') as file:
for line in file:
line = file.readline()
while line:
m = metaPattern.match(line)
if not (m is None):
@ -33,14 +34,15 @@ class MmdFile(AbstractFile):
metaKey = m.group(1)
metaValue = m.group(2)
continue
else:
m = metaValuePattern.match(line)
m = metaValuePattern.match(line)
if not (m is None):
metaValue += "\n" + m.group(2)
elif line == "\n":
break
if not (m is None):
metaValue += "\n" + m.group(2)
elif line == "\n":
break
line = file.readline()
if not (metaKey is None):
metadata[metaKey] = metaValue
@ -50,6 +52,14 @@ class MmdFile(AbstractFile):
if (len(body) > 0) and (body[0] == "\n"):
body = body[1:]
elif file.seekable():
currentPosition = file.tell()
file.seek(0, 2)
endPosition = file.tell()
if endPosition - currentPosition == 1:
body = ""
return metadata, body

View file

@ -4,6 +4,8 @@
from manuskript.ui.util import *
from manuskript.ui.aboutDialog import AboutDialog
from manuskript.ui.compileWindow import CompileWindow
from manuskript.ui.importWindow import ImportWindow
from manuskript.ui.mainWindow import MainWindow
from manuskript.ui.settingsWindow import SettingsWindow
from manuskript.ui.startupWindow import StartupWindow

View file

@ -0,0 +1,53 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import GObject, Gtk, Handy
Handy.init()
from manuskript.ui.abstractDialog import AbstractDialog
from manuskript.data import Project
class CompileWindow(AbstractDialog):
def __init__(self, mainWindow):
AbstractDialog.__init__(self, mainWindow, "ui/compile.glade", "compile_window")
self.headerBar = None
self.back = None
self.forward = None
self.previewLeaflet = None
self.manageExportersButton = None
def initWindow(self, builder, window):
self.headerBar = builder.get_object("header_bar")
self.back = builder.get_object("back")
self.forward = builder.get_object("forward")
self.previewLeaflet = builder.get_object("preview_leaflet")
self.manageExportersButton = builder.get_object("manage_exporters")
self.previewLeaflet.bind_property("folded", self.back, "visible",
GObject.BindingFlags.SYNC_CREATE)
self.previewLeaflet.bind_property("folded", self.forward, "visible",
GObject.BindingFlags.SYNC_CREATE)
self.previewLeaflet.bind_property("folded", self.headerBar, "show-close-button",
GObject.BindingFlags.SYNC_CREATE |
GObject.BindingFlags.INVERT_BOOLEAN)
self.back.connect("clicked", self._backClicked)
self.forward.connect("clicked", self._forwardClicked)
def _backClicked(self, button: Gtk.Button):
if self.previewLeaflet.get_visible_child_name() == "preview_box":
self.previewLeaflet.set_visible_child_name("settings_box")
else:
self.hide()
def _forwardClicked(self, button: Gtk.Button):
if self.previewLeaflet.get_visible_child_name() == "settings_box":
self.previewLeaflet.set_visible_child_name("preview_box")

View file

@ -0,0 +1,51 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import GObject, Gtk, Handy
Handy.init()
from manuskript.ui.abstractDialog import AbstractDialog
from manuskript.data import Project
class ImportWindow(AbstractDialog):
def __init__(self, mainWindow):
AbstractDialog.__init__(self, mainWindow, "ui/import.glade", "import_window")
self.headerBar = None
self.back = None
self.forward = None
self.previewLeaflet = None
def initWindow(self, builder, window):
self.headerBar = builder.get_object("header_bar")
self.back = builder.get_object("back")
self.forward = builder.get_object("forward")
self.previewLeaflet = builder.get_object("preview_leaflet")
self.previewLeaflet.bind_property("folded", self.back, "visible",
GObject.BindingFlags.SYNC_CREATE)
self.previewLeaflet.bind_property("folded", self.forward, "visible",
GObject.BindingFlags.SYNC_CREATE)
self.previewLeaflet.bind_property("folded", self.headerBar, "show-close-button",
GObject.BindingFlags.SYNC_CREATE |
GObject.BindingFlags.INVERT_BOOLEAN)
self.back.connect("clicked", self._backClicked)
self.forward.connect("clicked", self._forwardClicked)
def _backClicked(self, button: Gtk.Button):
if self.previewLeaflet.get_visible_child_name() == "preview_box":
self.previewLeaflet.set_visible_child_name("settings_box")
else:
self.hide()
def _forwardClicked(self, button: Gtk.Button):
if self.previewLeaflet.get_visible_child_name() == "settings_box":
self.previewLeaflet.set_visible_child_name("preview_box")

View file

@ -15,6 +15,8 @@ from manuskript.ui.views import *
from manuskript.ui.tools import *
from manuskript.ui.aboutDialog import AboutDialog
from manuskript.ui.compileWindow import CompileWindow
from manuskript.ui.importWindow import ImportWindow
from manuskript.ui.settingsWindow import SettingsWindow
from manuskript.ui.startupWindow import StartupWindow
from manuskript.ui.util import bindMenuItem
@ -76,6 +78,8 @@ class MainWindow:
self.aboutDialog = AboutDialog(self)
self.frequencyWindow = FrequencyWindow(self)
self.settingsWindow = SettingsWindow(self)
self.importWindow = ImportWindow(self)
self.compileWindow = CompileWindow(self)
self.windows = [
self.startupWindow,
@ -87,6 +91,8 @@ class MainWindow:
bindMenuItem(builder, "open_menu_item", self._openAction)
bindMenuItem(builder, "save_menu_item", self._saveAction)
bindMenuItem(builder, "close_menu_item", self._closeAction)
bindMenuItem(builder, "import_menu_item", self._importAction)
bindMenuItem(builder, "compile_menu_item", self._compileAction)
bindMenuItem(builder, "quit_menu_item", self._quitAction)
bindMenuItem(builder, "settings_menu_item", self._settingsAction)
@ -112,6 +118,12 @@ class MainWindow:
def _closeAction(self, menuItem: Gtk.MenuItem):
self.closeProject()
def _importAction(self, menuItem: Gtk.MenuItem):
self.importWindow.show()
def _compileAction(self, menuItem: Gtk.MenuItem):
self.compileWindow.show()
def _quitAction(self, menuItem: Gtk.MenuItem):
self.exit(True)

View file

@ -4,9 +4,22 @@
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import GObject, Gtk, Handy
from gi.repository import GObject, Gtk
import re
from enum import Enum, unique
from manuskript.data import OutlineFolder, OutlineText, OutlineState, Project
from manuskript.ui.abstractDialog import AbstractDialog
from manuskript.util import validString, validInt
@unique
class AnalyzeStatus(Enum):
NONE = 0
WORDS = 1
PHRASES = 2
class FrequencyWindow(AbstractDialog):
@ -14,18 +27,56 @@ class FrequencyWindow(AbstractDialog):
def __init__(self, mainWindow):
AbstractDialog.__init__(self, mainWindow, "ui/frequency.glade", "frequency_window")
self.analyzeStatus = AnalyzeStatus.NONE
self.analyzeTexts = list()
self.outlineCompletion = list()
self.analyzeCompleted = 0
self.headerBar = None
self.back = None
self.wordLeaflet = None
self.wordsProgress = None
self.analyzeWords = None
self.phrasesProgress = None
self.analyzePhrases = None
self.wordEntry = None
self.removeWord = None
self.addWord = None
self.excludeWordSelection = None
self.excludeWordsStore = None
self.wordsFrequencyStore = None
self.phrasesFrequencyStore = None
self.phraseMinimum = None
self.phraseMaximum = None
self.wordSize = None
def initWindow(self, builder, window):
self.headerBar = builder.get_object("header_bar")
self.back = builder.get_object("back")
self.wordLeaflet = builder.get_object("word_leaflet")
self.wordsProgress = builder.get_object("words_progress")
self.analyzeWords = builder.get_object("analyze_words")
self.phrasesProgress = builder.get_object("phrases_progress")
self.analyzePhrases = builder.get_object("analyze_phrases")
self.wordEntry = builder.get_object("word_entry")
self.removeWord = builder.get_object("remove_word")
self.addWord = builder.get_object("add_word")
self.excludeWordSelection = builder.get_object("exclude_word_selection")
self.excludeWordsStore = builder.get_object("exclude_words_store")
self.wordsFrequencyStore = builder.get_object("words_frequency_store")
self.phrasesFrequencyStore = builder.get_object("phrases_frequency_store")
self.filteredFrequencyStore = builder.get_object("filtered_frequency_store")
self.filteredFrequencyStore.set_visible_func(self._filterFrequencies)
self.filteredFrequencyStore.refilter()
self.phraseMinimum = builder.get_object("phrase_minimum")
self.phraseMaximum = builder.get_object("phrase_maximum")
self.wordSize = builder.get_object("word_size")
self.wordLeaflet.bind_property("folded", self.back, "visible",
GObject.BindingFlags.SYNC_CREATE)
@ -35,12 +86,182 @@ class FrequencyWindow(AbstractDialog):
self.back.connect("clicked", self._backClicked)
self.analyzeWords.connect("clicked", self._analyzeWordsClicked)
self.analyzePhrases.connect("clicked", self._analyzePhrasesClicked)
self.wordSize.connect("value-changed", self._wordSizeChanged)
self.excludeWordSelection.connect("changed", self._excludeWordSelectionChanged)
self.removeWord.connect("clicked", self._removeWordClicked)
self.addWord.connect("clicked", self._addWordClicked)
def getProject(self) -> Project:
return self.mainWindow.getProject()
def _filterFrequencies(self, model, iterator, userdata):
word = model[iterator][0]
if word is None:
return False
word_size = validInt(self.wordSize.get_value())
if len(word) < word_size:
return False
iter = self.excludeWordsStore.get_iter_first()
while iter is not None:
excluded = self.excludeWordsStore.get_value(iter, 0)
if word == excluded:
return False
iter = self.excludeWordsStore.iter_next(iter)
return True
def _backClicked(self, button: Gtk.Button):
if self.wordLeaflet.get_visible_child_name() == "wordlist_view":
self.wordLeaflet.set_visible_child_name("wordfilter_view")
else:
self.hide()
def __completeOutlineItem(self):
outline_item = self.outlineCompletion.pop(0)
if isinstance(outline_item, OutlineFolder):
for item in outline_item:
self.outlineCompletion.append(item)
elif isinstance(outline_item, OutlineText):
if outline_item.state != OutlineState.COMPLETE:
outline_item.load(False)
self.analyzeTexts.append(outline_item.text)
self.analyzeCompleted = self.analyzeCompleted + 1
incomplete = len(self.outlineCompletion)
complete = self.analyzeCompleted
fraction = 1.0 * complete / (complete + incomplete)
if self.analyzeStatus == AnalyzeStatus.WORDS:
self.wordsProgress.set_fraction(fraction)
elif self.analyzeStatus == AnalyzeStatus.PHRASES:
self.phrasesProgress.set_fraction(fraction)
if incomplete > 0:
return True
patterns = list()
if self.analyzeStatus == AnalyzeStatus.WORDS:
word_size = validInt(self.wordSize.get_value())
patterns.append(re.compile(r"\w{" + str(word_size) + r",}"))
elif self.analyzeStatus == AnalyzeStatus.PHRASES:
phrase_minimum = validInt(self.phraseMinimum.get_value())
phrase_maximum = validInt(self.phraseMaximum.get_value())
for n in range(phrase_minimum, phrase_maximum + 1):
patterns.append(re.compile(r"\w+" + r"\s+\w+" * (n - 1)))
frequencies = dict()
text = "\n".join(self.analyzeTexts)
for pattern in patterns:
for match in pattern.findall(text):
if match is None:
continue
if match in frequencies:
frequencies[match] = frequencies[match] + 1
else:
frequencies[match] = 1
if self.analyzeStatus == AnalyzeStatus.WORDS:
self.wordsFrequencyStore.clear()
for word, frequency in frequencies.items():
tree_iter = self.wordsFrequencyStore.append()
if tree_iter is None:
continue
self.wordsFrequencyStore.set_value(tree_iter, 0, validString(word))
self.wordsFrequencyStore.set_value(tree_iter, 1, validInt(frequency))
self.wordLeaflet.set_visible_child_name("wordlist_view")
elif self.analyzeStatus == AnalyzeStatus.PHRASES:
self.phrasesFrequencyStore.clear()
for phrase, frequency in frequencies.items():
tree_iter = self.phrasesFrequencyStore.append()
if tree_iter is None:
continue
self.phrasesFrequencyStore.set_value(tree_iter, 0, validString(phrase))
self.phrasesFrequencyStore.set_value(tree_iter, 1, validInt(frequency))
self.analyzeStatus = AnalyzeStatus.NONE
self.analyzeTexts = list()
self.analyzeWords.set_sensitive(True)
self.analyzePhrases.set_sensitive(True)
return False
def analyze(self, status: AnalyzeStatus):
if self.analyzeStatus != AnalyzeStatus.NONE:
return
project = self.getProject()
if project is None:
return
self.analyzeWords.set_sensitive(False)
self.analyzePhrases.set_sensitive(False)
self.analyzeStatus = status
if len(self.outlineCompletion) == 0:
self.analyzeTexts = list()
self.analyzeCompleted = 0
if self.analyzeStatus == AnalyzeStatus.WORDS:
self.wordsProgress.set_fraction(0.0)
elif self.analyzeStatus == AnalyzeStatus.PHRASES:
self.phrasesProgress.set_fraction(0.0)
GObject.idle_add(self.__completeOutlineItem)
for outline_item in project.outline:
self.outlineCompletion.append(outline_item)
def _analyzeWordsClicked(self, button: Gtk.Button):
self.wordLeaflet.set_visible_child_name("wordlist_view")
self.analyze(AnalyzeStatus.WORDS)
def _analyzePhrasesClicked(self, button: Gtk.Button):
self.analyze(AnalyzeStatus.PHRASES)
def _wordSizeChanged(self, adjustment: Gtk.Adjustment):
self.filteredFrequencyStore.refilter()
def _excludeWordSelectionChanged(self, selection: Gtk.TreeSelection):
model, tree_iter = selection.get_selected()
self.removeWord.set_sensitive(tree_iter is not None)
def _removeWordClicked(self, button: Gtk.Button):
model, tree_iter = self.excludeWordSelection.get_selected()
if tree_iter is None:
return
self.excludeWordsStore.remove(tree_iter)
self.filteredFrequencyStore.refilter()
def _addWordClicked(self, button: Gtk.Button):
tree_iter = self.excludeWordsStore.append()
if tree_iter is None:
return
word = self.wordEntry.get_buffer().get_text()
self.excludeWordsStore.set_value(tree_iter, 0, word)
self.filteredFrequencyStore.refilter()

View file

@ -270,8 +270,6 @@ class EditorView:
self.editorItems = self.project.outline.items
elif type(outlineItem) is OutlineFolder:
self.editorItems = outlineItem.items
elif type(outlineItem) is OutlineText:
self.__appendOutlineItemText(outlineItem)
if outlineItem is None:
for item in self.editorItems:

875
ui/compile.glade Normal file
View file

@ -0,0 +1,875 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0
Copyright (C) 2015-2021 Olivier Keshavjee et al.
This file is part of Manuskript.
Manuskript 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 3 of the License, or
(at your option) any later version.
Manuskript 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 Manuskript. If not, see <http://www.gnu.org/licenses/>.
-->
<interface>
<requires lib="gtk+" version="3.24"/>
<requires lib="libhandy" version="0.0"/>
<!-- interface-local-resource-path ../ -->
<!-- interface-license-type gplv3 -->
<!-- interface-name Manuskript -->
<!-- interface-description Manuskript is an open-source tool for writers. -->
<!-- interface-copyright 2015-2021 Olivier Keshavjee et al. -->
<object class="GtkListStore" id="file_format_store">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name mimeType -->
<column type="gchararray"/>
<!-- column-name icon -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">Markdown</col>
<col id="1" translatable="yes">text/markdown</col>
<col id="2" translatable="yes">text-x-generic</col>
</row>
<row>
<col id="0" translatable="yes">Folder</col>
<col id="1" translatable="yes">directory</col>
<col id="2" translatable="yes">folder</col>
</row>
<row>
<col id="0" translatable="yes">OPML</col>
<col id="1" translatable="yes">text/opml</col>
<col id="2" translatable="yes">text-x-generic-template</col>
</row>
<row>
<col id="0" translatable="yes">Mind Map</col>
<col id="1" translatable="yes">text/mind-map</col>
<col id="2" translatable="yes">text-x-generic-template</col>
</row>
</data>
</object>
<object class="HdyWindow" id="compile_window">
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="HdyTitleBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="HdyHeaderBar" id="header_bar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="title" translatable="yes">Export</property>
<child>
<object class="GtkButton" id="back">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkButton" id="forward">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">go-next-symbolic</property>
</object>
</child>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="HdyLeaflet" id="preview_leaflet">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="width-request">300</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">4</property>
<property name="margin-end">4</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Format:</property>
<attributes>
<attribute name="weight" value="semibold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="model">file_format_store</property>
<property name="active">0</property>
<child>
<object class="GtkCellRendererPixbuf"/>
<attributes>
<attribute name="icon-name">2</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="manage_exporters">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">4</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">preferences-other-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Manage Exporters</property>
<property name="ellipsize">end</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">8</property>
<property name="margin-end">8</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="label" translatable="yes">Settings</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="semibold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkExpander">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="border-width">8</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Decide here what will be included in the final export.</property>
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="ellipsize">end</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<!-- n-columns=3 n-rows=3 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="border-width">4</property>
<property name="column-homogeneous">True</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Type</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Title</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Text</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes"> </property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes"> </property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes"> </property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">4</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">folder-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Folder</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">4</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">text-x-generic-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Folder</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes">I need more granularity</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="border-width">4</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkExpander">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Filters what items will be included in the final export.
(Not fully implemented yet.)</property>
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="ellipsize">end</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes">Ignore compile status (include all items)</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes">Subitems of:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes">Labels</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="label" translatable="yes">Status</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Filters</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Content</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkExpander">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<placeholder/>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Separations</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkExpander">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<placeholder/>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Transformations</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkExpander">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<placeholder/>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Preview</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
</object>
<packing>
<property name="name">settings_box</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="width-request">250</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">8</property>
<property name="margin-end">8</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="label" translatable="yes">Preview</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="semibold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="has-subtitle">False</property>
<property name="spacing">8</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">4</property>
<property name="margin-end">4</property>
<property name="spacing">8</property>
<child>
<object class="GtkButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">4</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">emblem-synchronizing-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Preview</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">4</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-revert-symbolic</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Export</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">preview_box</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkTreeStore" id="file_store">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name icon -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkTreeStore" id="under_store">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name icon -->
<column type="gchararray"/>
</columns>
</object>
</interface>

View file

@ -65,16 +65,6 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<property name="editable">False</property>
</object>
</child>
<child type="tag">
<object class="GtkTextTag">
<property name="font">Normal</property>
</object>
</child>
<child type="tag">
<object class="GtkTextTag">
<property name="font">Normal</property>
</object>
</child>
<child type="tag">
<object class="GtkTextTag" id="h2_tag">
<property name="name">h2</property>
@ -173,7 +163,21 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<object class="GtkTextTag" id="p_tag">
<property name="name">p</property>
<property name="font">Normal</property>
<property name="pixels-above-lines">4</property>
<property name="pixels-below-lines">4</property>
<property name="left-margin">8</property>
<property name="indent">20</property>
<property name="right-margin">8</property>
</object>
</child>
<child type="tag">
<object class="GtkTextTag" id="line_tag">
<property name="name">line</property>
<property name="font">Normal</property>
<property name="editable">False</property>
<property name="left-margin">4</property>
<property name="strikethrough">True</property>
<property name="right-margin">4</property>
</object>
</child>
</object>
@ -397,6 +401,11 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="wrap-mode">word-char</property>
<property name="left-margin">8</property>
<property name="right-margin">8</property>
<property name="top-margin">4</property>
<property name="bottom-margin">4</property>
<property name="indent">4</property>
<property name="buffer">editor_text</property>
<property name="input-hints">GTK_INPUT_HINT_SPELLCHECK | GTK_INPUT_HINT_WORD_COMPLETION | GTK_INPUT_HINT_NONE</property>
</object>

View file

@ -27,6 +27,12 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<!-- interface-name Manuskript -->
<!-- interface-description Manuskript is an open-source tool for writers. -->
<!-- interface-copyright 2015-2021 Olivier Keshavjee et al. -->
<object class="GtkListStore" id="exclude_words_store">
<columns>
<!-- column-name word -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkAdjustment" id="phrase_maximum">
<property name="lower">2</property>
<property name="upper">99</property>
@ -41,6 +47,14 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkListStore" id="phrases_frequency_store">
<columns>
<!-- column-name phrase -->
<column type="gchararray"/>
<!-- column-name frequency -->
<column type="guint"/>
</columns>
</object>
<object class="GtkAdjustment" id="word_size">
<property name="lower">1</property>
<property name="upper">99</property>
@ -48,6 +62,17 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkListStore" id="words_frequency_store">
<columns>
<!-- column-name word -->
<column type="gchararray"/>
<!-- column-name frequency -->
<column type="guint"/>
</columns>
</object>
<object class="GtkTreeModelFilter" id="filtered_frequency_store">
<property name="child-model">words_frequency_store</property>
</object>
<object class="HdyWindow" id="frequency_window">
<property name="can-focus">False</property>
<child>
@ -181,9 +206,26 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkListBox">
<object class="GtkTreeView">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="can-focus">True</property>
<property name="model">exclude_words_store</property>
<property name="headers-visible">False</property>
<property name="headers-clickable">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="exclude_word_selection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Word</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
@ -201,8 +243,9 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<property name="can-focus">False</property>
<property name="spacing">8</property>
<child>
<object class="GtkButton">
<object class="GtkButton" id="remove_word">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child>
@ -220,7 +263,7 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
</packing>
</child>
<child>
<object class="GtkEntry">
<object class="GtkEntry" id="word_entry">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
@ -231,7 +274,7 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
</packing>
</child>
<child>
<object class="GtkButton">
<object class="GtkButton" id="add_word">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -274,10 +317,9 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
</packing>
</child>
<child>
<object class="GtkLevelBar">
<object class="GtkProgressBar" id="words_progress">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-top">12</property>
</object>
<packing>
<property name="expand">False</property>
@ -316,9 +358,43 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkListBox">
<object class="GtkTreeView">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="can-focus">True</property>
<property name="model">filtered_frequency_store</property>
<property name="search-column">0</property>
<property name="show-expanders">False</property>
<property name="tooltip-column">0</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Word</property>
<property name="expand">True</property>
<property name="sort-column-id">0</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Frequency</property>
<property name="expand">True</property>
<property name="sort-indicator">True</property>
<property name="sort-column-id">1</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
@ -484,9 +560,43 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkListBox">
<object class="GtkTreeView">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="can-focus">True</property>
<property name="model">phrases_frequency_store</property>
<property name="search-column">0</property>
<property name="show-expanders">False</property>
<property name="tooltip-column">0</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Phrase</property>
<property name="expand">True</property>
<property name="sort-column-id">0</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Frequency</property>
<property name="expand">True</property>
<property name="sort-indicator">True</property>
<property name="sort-column-id">1</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
@ -500,7 +610,7 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
</packing>
</child>
<child>
<object class="GtkProgressBar">
<object class="GtkProgressBar" id="phrases_progress">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2
<!-- Generated with glade 3.40.0
Copyright (C) 2015-2021 Olivier Keshavjee et al.
@ -27,7 +27,55 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<!-- interface-name Manuskript -->
<!-- interface-description Manuskript is an open-source tool for writers. -->
<!-- interface-copyright 2015-2021 Olivier Keshavjee et al. -->
<object class="HdyWindow">
<object class="GtkListStore" id="file_format_store">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name mimeType -->
<column type="gchararray"/>
<!-- column-name icon -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">Markdown</col>
<col id="1" translatable="yes">text/markdown</col>
<col id="2" translatable="yes">text-x-generic</col>
</row>
<row>
<col id="0" translatable="yes">Folder</col>
<col id="1" translatable="yes">directory</col>
<col id="2" translatable="yes">folder</col>
</row>
<row>
<col id="0" translatable="yes">OPML</col>
<col id="1" translatable="yes">text/opml</col>
<col id="2" translatable="yes">text-x-generic-template</col>
</row>
<row>
<col id="0" translatable="yes">Mind Map</col>
<col id="1" translatable="yes">text/mind-map</col>
<col id="2" translatable="yes">text-x-generic-template</col>
</row>
</data>
</object>
<object class="GtkTreeStore" id="file_store">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name icon -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkTreeStore" id="under_store">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name icon -->
<column type="gchararray"/>
</columns>
</object>
<object class="HdyWindow" id="import_window">
<property name="can-focus">False</property>
<child>
<object class="GtkBox">
@ -39,12 +87,12 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="HdyHeaderBar">
<object class="HdyHeaderBar" id="header_bar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="title" translatable="yes">Import</property>
<child>
<object class="GtkButton">
<object class="GtkButton" id="back">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -58,7 +106,7 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
</object>
</child>
<child>
<object class="GtkButton">
<object class="GtkButton" id="forward">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -85,7 +133,7 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
</packing>
</child>
<child>
<object class="HdyLeaflet">
<object class="HdyLeaflet" id="preview_leaflet">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
@ -366,6 +414,9 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
</packing>
</child>
</object>
<packing>
<property name="name">settings_box</property>
</packing>
</child>
<child>
<object class="GtkBox">
@ -609,6 +660,9 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
</packing>
</child>
</object>
<packing>
<property name="name">preview_box</property>
</packing>
</child>
</object>
<packing>
@ -620,52 +674,4 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
</object>
</child>
</object>
<object class="GtkListStore" id="file_format_store">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name mimeType -->
<column type="gchararray"/>
<!-- column-name icon -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">Markdown</col>
<col id="1" translatable="yes">text/markdown</col>
<col id="2" translatable="yes">text-x-generic</col>
</row>
<row>
<col id="0" translatable="yes">Folder</col>
<col id="1" translatable="yes">directory</col>
<col id="2" translatable="yes">folder</col>
</row>
<row>
<col id="0" translatable="yes">OPML</col>
<col id="1" translatable="yes">text/opml</col>
<col id="2" translatable="yes">text-x-generic-template</col>
</row>
<row>
<col id="0" translatable="yes">Mind Map</col>
<col id="1" translatable="yes">text/mind-map</col>
<col id="2" translatable="yes">text-x-generic-template</col>
</row>
</data>
</object>
<object class="GtkTreeStore" id="file_store">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name icon -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkTreeStore" id="under_store">
<columns>
<!-- column-name name -->
<column type="gchararray"/>
<!-- column-name icon -->
<column type="gchararray"/>
</columns>
</object>
</interface>