mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-12 00:42:32 +12:00
Merge branch 'gtk_next' into Tipoftheday
This commit is contained in:
commit
9c09075225
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -25,3 +25,4 @@ manuskript.log
|
|||
snowflake*
|
||||
test-projects
|
||||
main.pyproject.user
|
||||
*.glade#
|
||||
|
|
31
manuskript/data/characters_templates.py
Normal file
31
manuskript/data/characters_templates.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
#!/usr/bin/env python
|
||||
# --!-- coding: utf8 --!--
|
||||
|
||||
import os
|
||||
|
||||
#from io.jsonFile import* # I need to figure out how to import this. io is also a package in python
|
||||
from collections import OrderedDict
|
||||
|
||||
|
||||
# So this is a template for character details
|
||||
# It is edited by the Character Template Editor
|
||||
# Most of the code is taken from characters.py
|
||||
# I think this should have a custom save that's like a .json file in the main part of the manuskript save
|
||||
|
||||
#Main Class
|
||||
class CharacterDetailTemplates:
|
||||
# Basic Template
|
||||
templates = {'Basic Human':
|
||||
{'Age':'','Birthdate':'',
|
||||
'Eye Color':'','Hair Color':'',
|
||||
'Handed':''},
|
||||
}
|
||||
|
||||
|
||||
# TODO: saving
|
||||
def save(self):
|
||||
pass
|
||||
|
||||
def load(self):
|
||||
pass
|
||||
|
|
@ -156,8 +156,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)
|
||||
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
#!/usr/bin/env python
|
||||
# --!-- coding: utf8 --!--
|
||||
|
||||
# Imports
|
||||
# Python bundled modules
|
||||
import os
|
||||
|
||||
from zipfile import BadZipFile
|
||||
|
||||
# Manuskript modules
|
||||
|
||||
from manuskript.data.abstractData import AbstractData
|
||||
from manuskript.data.version import Version, CURRENT_MSK_VERSION
|
||||
from manuskript.data.info import Info
|
||||
|
@ -17,6 +21,9 @@ from manuskript.data.plots import Plots
|
|||
from manuskript.data.world import World
|
||||
from manuskript.data.outline import Outline
|
||||
from manuskript.data.revisions import Revisions
|
||||
# This is for the charecter template
|
||||
from manuskript.data.characters_templates import CharacterDetailTemplates
|
||||
|
||||
from manuskript.io.mskFile import MskFile
|
||||
from manuskript.util import profileTime
|
||||
|
||||
|
@ -38,6 +45,8 @@ class Project(AbstractData):
|
|||
self.world = World(self.file.directoryPath)
|
||||
self.outline = Outline(self.file.directoryPath, self.plots, self.labels, self.statuses)
|
||||
self.revisions = Revisions(self.file.directoryPath)
|
||||
self.character_templates = CharacterDetailTemplates() # TODO: RENAME PROPERALLY
|
||||
|
||||
|
||||
def __del__(self):
|
||||
del self.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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
53
manuskript/ui/compileWindow.py
Normal file
53
manuskript/ui/compileWindow.py
Normal 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")
|
51
manuskript/ui/importWindow.py
Normal file
51
manuskript/ui/importWindow.py
Normal 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")
|
|
@ -16,6 +16,8 @@ from manuskript.ui.views import *
|
|||
from manuskript.ui.chooser import openFileDialog, saveFileDialog, FileFilter
|
||||
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, packViewIntoSlot, unpackFromSlot
|
||||
|
@ -61,6 +63,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,
|
||||
|
@ -76,10 +80,13 @@ class MainWindow:
|
|||
bindMenuItem(builder, "save_menu_item", self._saveAction)
|
||||
bindMenuItem(builder, "saveas_menu_item", self._saveAsAction)
|
||||
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)
|
||||
bindMenuItem(builder, "frequency_menu_item", self._frequencyAction)
|
||||
bindMenuItem(builder, "character_details_template_editor", self._characterDetailsTemplateEditorAction)
|
||||
bindMenuItem(builder, "about_menu_item", self._aboutAction)
|
||||
|
||||
self.hide()
|
||||
|
@ -101,7 +108,7 @@ class MainWindow:
|
|||
|
||||
self.generalView = packViewIntoSlot(self.generalSlot, GeneralView, self.project.info)
|
||||
self.summaryView = packViewIntoSlot(self.summarySlot, SummaryView, self.project.summary)
|
||||
self.charactersView = packViewIntoSlot(self.charactersSlot, CharactersView, self.project.characters)
|
||||
self.charactersView = packViewIntoSlot(self.charactersSlot, CharactersView, self.project)
|
||||
self.plotView = packViewIntoSlot(self.plotSlot, PlotView, self.project.plots)
|
||||
self.worldView = packViewIntoSlot(self.worldSlot, WorldView, self.project.world)
|
||||
self.outlineView = packViewIntoSlot(self.outlineSlot, OutlineView, self.project.outline)
|
||||
|
@ -157,6 +164,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)
|
||||
|
@ -169,6 +182,9 @@ class MainWindow:
|
|||
|
||||
def _frequencyAction(self, menuItem: Gtk.MenuItem):
|
||||
self.frequencyWindow.show()
|
||||
|
||||
def _characterDetailsTemplateEditorAction(self, menuItem: Gtk.MenuItem):
|
||||
self.characterTemplateWindow.show()
|
||||
|
||||
def _aboutAction(self, menuItem: Gtk.MenuItem):
|
||||
self.aboutDialog.show()
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from manuskript.ui.tools.frequencyWindow import FrequencyWindow
|
||||
from manuskript.ui.tools.frequencyWindow import FrequencyWindow
|
|
@ -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()
|
||||
|
|
|
@ -8,13 +8,14 @@ from gi.repository import Gtk
|
|||
|
||||
from manuskript.data import Characters, Character, Importance, Color
|
||||
from manuskript.ui.util import rgbaFromColor, pixbufFromColor
|
||||
from manuskript.util import validString, invalidString, validInt, invalidInt
|
||||
from manuskript.util import validString, invalidString, validInt, invalidInt, unique_name_checker
|
||||
|
||||
|
||||
class CharactersView:
|
||||
|
||||
def __init__(self, characters: Characters):
|
||||
self.characters = characters
|
||||
def __init__(self, project):
|
||||
self.characterTemplates = project.character_templates # The template for detailed info
|
||||
self.characters = project.characters
|
||||
self.character = None
|
||||
|
||||
builder = Gtk.Builder()
|
||||
|
@ -77,11 +78,19 @@ class CharactersView:
|
|||
self.detailsSelection = builder.get_object("details_selection")
|
||||
self.addDetailsButton = builder.get_object("add_details")
|
||||
self.removeDetailsButton = builder.get_object("remove_details")
|
||||
self.charecterDetailsMenuButton = builder.get_object("characters_details_menu_button")
|
||||
self.newTemplateButton = builder.get_object("new_template_button")
|
||||
self.newTemplateEntry = builder.get_object("new_template_entry")
|
||||
self.newTemplateEntryBuffer = builder.get_object("new_template_entry_buffer")
|
||||
self.charecterDetailsMenuAppendBox = builder.get_object("template_select_box")
|
||||
self.charecterDetailsMenuTemplateBox = builder.get_object("template_select_box2")
|
||||
self.detailsNameRenderer = builder.get_object("details_name")
|
||||
self.detailsValueRenderer = builder.get_object("details_value")
|
||||
|
||||
self.addDetailsButton.connect("clicked", self._addDetailsClicked)
|
||||
self.removeDetailsButton.connect("clicked", self._removeDetailsClicked)
|
||||
self.charecterDetailsMenuButton.connect("clicked", self._onCharecterDetailsMenuClicked)
|
||||
self.newTemplateButton.connect("clicked", self._onNewTemplateButtonClicked)
|
||||
self.detailsNameRenderer.connect("edited", self._detailsNameEdited)
|
||||
self.detailsValueRenderer.connect("edited", self._detailsValueEdited)
|
||||
|
||||
|
@ -108,6 +117,7 @@ class CharactersView:
|
|||
self.notesBuffer.connect("changed", self._notesChanged)
|
||||
|
||||
self.unloadCharacterData()
|
||||
|
||||
|
||||
def refreshCharacterStore(self):
|
||||
self.charactersStore.clear()
|
||||
|
@ -300,7 +310,7 @@ class CharactersView:
|
|||
if tree_iter is None:
|
||||
return
|
||||
|
||||
name = "Description"
|
||||
name = unique_name_checker.get_unique_name_for_dictionary(self.character.details, "Description")
|
||||
value = "Value"
|
||||
|
||||
self.detailsStore.set_value(tree_iter, 0, name)
|
||||
|
@ -321,6 +331,68 @@ class CharactersView:
|
|||
model.remove(tree_iter)
|
||||
|
||||
self.character.details.pop(name)
|
||||
|
||||
def _updateCharecterDetailsMenu(self):
|
||||
def clear_container(container):
|
||||
data = container.get_children()
|
||||
for d in data:
|
||||
container.remove(d)
|
||||
clear_container( self.charecterDetailsMenuAppendBox)
|
||||
clear_container(self.charecterDetailsMenuTemplateBox)
|
||||
for template_name in self.characterTemplates.templates:
|
||||
button = Gtk.Button(label=template_name) # TODO: turn into ModelButton
|
||||
button.connect("clicked", self._appendTemplateClicked, template_name)
|
||||
self.charecterDetailsMenuAppendBox.add(button)
|
||||
# Now we do the buttons for charecterDetailsMenuTemplateBox
|
||||
box = Gtk.Box()
|
||||
label = Gtk.Label(label=template_name)
|
||||
overwrite_button = Gtk.Button()
|
||||
overwrite_button.add(Gtk.Image(icon_name='emblem-synchronizing-symbolic'))
|
||||
overwrite_button.connect("clicked", self._updateTemplateClicked, template_name)
|
||||
overwrite_button.set_tooltip_markup ('Overwrite template with text of current file') # TODO: This might be an issue when it comes to translating
|
||||
delete_button = Gtk.Button()
|
||||
delete_button.add(Gtk.Image(icon_name='list-remove-symbolic'))
|
||||
delete_button.set_tooltip_markup ('Delete') # TODO: This might be an issue when it comes to translating
|
||||
delete_button.connect("clicked", self._deleteTemplateClicked, template_name)
|
||||
box.pack_end(delete_button, False, False, 0)
|
||||
box.pack_end(overwrite_button, False, False, 0)
|
||||
box.pack_start(label, True, False, 0)
|
||||
self.charecterDetailsMenuTemplateBox.add(box)
|
||||
|
||||
self.charecterDetailsMenuAppendBox.show_all()
|
||||
self.charecterDetailsMenuTemplateBox.show_all()
|
||||
|
||||
def _onCharecterDetailsMenuClicked(self, button: Gtk.MenuButton):
|
||||
self._updateCharecterDetailsMenu()
|
||||
|
||||
def _updateTemplateClicked(self, button: Gtk.ModelButton, template_name):
|
||||
if self.character is None:
|
||||
return
|
||||
self.characterTemplates.templates[template_name] = self.character.details # TODO: Add A warning? Or should there be undo/ redo when revisions are written.
|
||||
|
||||
def _deleteTemplateClicked(self, button: Gtk.ModelButton, template_name):
|
||||
del self.characterTemplates.templates[template_name]
|
||||
self._updateCharecterDetailsMenu()
|
||||
|
||||
def _appendTemplateClicked(self, button: Gtk.ModelButton, template_name):
|
||||
if self.character is None:
|
||||
return
|
||||
self.character.details.update(self.characterTemplates.templates[template_name])
|
||||
|
||||
# We have to reload the character
|
||||
self.loadCharacterData(self.character)
|
||||
|
||||
def _onNewTemplateButtonClicked(self, button: Gtk.Button):
|
||||
text = self.newTemplateEntryBuffer.get_text()
|
||||
if text == "":
|
||||
return
|
||||
if text in self.characterTemplates.templates:
|
||||
new_text = unique_name_checker.get_unique_name_for_dictionary(self.characterTemplates.templates, text)
|
||||
self.newTemplateEntryBuffer.set_text(new_text, -1) # TODO: Add a warning
|
||||
return
|
||||
else:
|
||||
self.characterTemplates.templates[text] = self.character.details
|
||||
self._updateCharecterDetailsMenu()
|
||||
|
||||
def _detailsNameEdited(self, renderer: Gtk.CellRendererText, path: str, text: str):
|
||||
if self.character is None:
|
||||
|
@ -330,11 +402,12 @@ class CharactersView:
|
|||
|
||||
if (model is None) or (tree_iter is None):
|
||||
return
|
||||
|
||||
|
||||
text_to_set = unique_name_checker.get_unique_name_for_dictionary(self.character.details, text)
|
||||
name = model.get_value(tree_iter, 0)
|
||||
model.set_value(tree_iter, 0, text)
|
||||
model.set_value(tree_iter, 0, text_to_set)
|
||||
|
||||
self.character.details[text] = self.character.details.pop(name)
|
||||
self.character.details[text_to_set] = self.character.details.pop(name)
|
||||
|
||||
def _detailsValueEdited(self, renderer: Gtk.CellRendererText, path: str, text: str):
|
||||
if self.character is None:
|
||||
|
@ -462,3 +535,4 @@ class CharactersView:
|
|||
|
||||
def show(self):
|
||||
self.widget.show_all()
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
16
manuskript/util/unique_name_checker.py
Normal file
16
manuskript/util/unique_name_checker.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# So this thing changes a name until it works with a dictionary
|
||||
# Ie. if you have a dictioary {'Item':1,'Item2':1,'Item3':1} and if you add an item it'll be Item4
|
||||
# It works only on strings
|
||||
|
||||
def get_unique_name_for_dictionary(dictionary, name):
|
||||
count = 1
|
||||
test_name = name
|
||||
while test_name in dictionary:
|
||||
count += 1
|
||||
test_name = str(name) +(str(count))
|
||||
|
||||
return test_name
|
||||
|
|
@ -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.
|
||||
|
||||
|
@ -31,9 +31,11 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
|
|||
<property name="window-position">center-on-parent</property>
|
||||
<property name="type-hint">dialog</property>
|
||||
<property name="program-name">Manuskript</property>
|
||||
<property name="version">0.12.0</property>
|
||||
<property name="version">Gtk Working Version (Last Version 0.15.0)</property>
|
||||
<property name="copyright" translatable="yes">Copyright © 2015-2021 Olivier Keshavjee et al.</property>
|
||||
<property name="comments" translatable="yes">This is a Gtk Version Still In Development</property>
|
||||
<property name="website">https://www.theologeek.ch/manuskript/</property>
|
||||
<property name="website-label" translatable="yes">https://www.theologeek.ch/manuskript/</property>
|
||||
<property name="authors">Olivier Keshavjee
|
||||
Curtis Gedak
|
||||
Youness Alaoui
|
||||
|
@ -118,7 +120,7 @@ nicxxx
|
|||
obw
|
||||
peter88213
|
||||
ssantos </property>
|
||||
<property name="logo">../icons/Manuskript/logo-400x104.png</property>
|
||||
<property name="logo">../icons/Manuskript/logo-400x104.png</property>
|
||||
<property name="license-type">gpl-3-0</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkBox">
|
||||
|
|
|
@ -85,6 +85,211 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
|
|||
</object>
|
||||
<object class="GtkTextBuffer" id="motivation"/>
|
||||
<object class="GtkEntryBuffer" id="name"/>
|
||||
<object class="GtkEntryBuffer" id="new_template_entry_buffer"/>
|
||||
<object class="GtkPopoverMenu" id="charecter_options_popover">
|
||||
<property name="width-request">350</property>
|
||||
<property name="height-request">250</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="main_menu_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkModelButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="text" translatable="yes">Append Template</property>
|
||||
<property name="menu-name">append_template</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkModelButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="text" translatable="yes">Mange Templates</property>
|
||||
<property name="menu-name">edit_template</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="submenu">main</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="append_template_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkModelButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="text" translatable="yes">Append Template</property>
|
||||
<property name="menu-name">main</property>
|
||||
<property name="inverted">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="border-width">4</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="template_select_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<property name="activate-on-single-click">False</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="submenu">append_template</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="edit_template_box">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkModelButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="text" translatable="yes">Set info to template</property>
|
||||
<property name="menu-name">main</property>
|
||||
<property name="inverted">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScrolledWindow">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="border-width">4</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="template_select_box2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<property name="activate-on-single-click">False</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<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="margin-bottom">4</property>
|
||||
<property name="spacing">4</property>
|
||||
<child>
|
||||
<object class="GtkEntry" id="new_template_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="buffer">new_template_entry_buffer</property>
|
||||
<property name="placeholder-text" translatable="yes">Enter a unique name</property>
|
||||
<property name="input-hints">GTK_INPUT_HINT_NO_EMOJI | GTK_INPUT_HINT_NONE</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="new_template_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="tooltip-text" translatable="yes">Adds a new template with the content of the current charecter's details.</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="icon-name">list-add-symbolic</property>
|
||||
</object>
|
||||
</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="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="submenu">edit_template</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkTextBuffer" id="notes"/>
|
||||
<object class="GtkTextBuffer" id="one_paragraph_summary"/>
|
||||
<object class="GtkTextBuffer" id="one_sentence_summary"/>
|
||||
|
@ -795,10 +1000,7 @@ summary</property>
|
|||
<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="border-width">8</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">8</property>
|
||||
<child>
|
||||
|
@ -923,6 +1125,41 @@ summary</property>
|
|||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="label" translatable="yes">Next</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuButton" id="characters_details_menu_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="focus-on-click">False</property>
|
||||
<property name="receives-default">True</property>
|
||||
<property name="direction">up</property>
|
||||
<property name="popover">charecter_options_popover</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="icon-name">open-menu-symbolic</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">False</property>
|
||||
|
|
875
ui/compile.glade
Normal file
875
ui/compile.glade
Normal 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>
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
@ -102,10 +127,7 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
|
|||
<property name="width-request">300</property>
|
||||
<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="border-width">8</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">8</property>
|
||||
<child>
|
||||
|
@ -184,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>
|
||||
|
@ -204,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>
|
||||
|
@ -223,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>
|
||||
|
@ -234,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>
|
||||
|
@ -277,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>
|
||||
|
@ -311,20 +350,51 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
|
|||
<property name="width-request">250</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</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="hexpand">True</property>
|
||||
<property name="border-width">8</property>
|
||||
<property name="shadow-type">in</property>
|
||||
<child>
|
||||
<object class="GtkViewport">
|
||||
<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>
|
||||
|
@ -490,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>
|
||||
|
@ -506,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>
|
||||
|
|
|
@ -430,7 +430,7 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<object class="GtkBox" id="tip_of_the_day_grid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
|
@ -439,7 +439,7 @@ along with Manuskript. If not, see <http://www.gnu.org/licenses/>.
|
|||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Quote of The Day</property>
|
||||
<property name="label" translatable="yes">Quote of The Day</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
|
|
114
ui/import.glade
114
ui/import.glade
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue