Compare commits

..

5 Commits

Author SHA1 Message Date
1b5c32c320
Improve i18n
All checks were successful
Pull Request / build (pull_request) Successful in 3m35s
2024-10-17 22:18:08 +02:00
e028bed311
Fix horizontal scrollbar showing up on search results listview 2024-10-17 21:33:25 +02:00
6f59af3cde
Cleanup .fxml files 2024-10-17 21:33:04 +02:00
4b84ec5a82
Wrap example sentences 2024-10-17 21:10:27 +02:00
039cb7e0a8
Cleanup details.fxml 2024-10-17 21:10:13 +02:00
11 changed files with 132 additions and 103 deletions

View File

@ -24,7 +24,7 @@ class DictionaryEntryCellFactory(private val resources: ResourceBundle, private
} }
companion object { companion object {
private const val CELL_PADDING = 16 private const val CELL_PADDING = 24
} }
} }

View File

@ -26,6 +26,7 @@ class SentenceCellFactory(private val config: Config) : Callback<ListView<Senten
private class SentenceCell(private val config: Config) : ListCell<SentenceFx?>() { private class SentenceCell(private val config: Config) : ListCell<SentenceFx?>() {
private val labelSentence = Label().apply { private val labelSentence = Label().apply {
styleClass.add("sentence") styleClass.add("sentence")
isWrapText = true
} }
private val root = VBox(labelSentence) private val root = VBox(labelSentence)

View File

@ -6,25 +6,23 @@
<?import javafx.scene.web.WebView?> <?import javafx.scene.web.WebView?>
<VBox stylesheets="/css/details.css" xmlns="http://javafx.com/javafx/23" xmlns:fx="http://javafx.com/fxml/1" <VBox stylesheets="/css/details.css" xmlns="http://javafx.com/javafx/23" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="com.marvinelsen.willow.ui.controllers.DetailsController"> fx:controller="com.marvinelsen.willow.ui.controllers.DetailsController">
<FlowPane fx:id="flowPaneHeader" hgap="8.0" onContextMenuRequested="#headerOnContextMenuRequested" prefHeight="38.0" <FlowPane fx:id="flowPaneHeader" hgap="8.0" vgap="8.0" rowValignment="BASELINE" VBox.vgrow="NEVER"
prefWidth="412.0" rowValignment="BASELINE" styleClass="flow-pane-header" vgap="8.0" VBox.vgrow="NEVER"> onContextMenuRequested="#headerOnContextMenuRequested">
<padding> <padding>
<Insets bottom="6.0" left="6.0" right="6.0" top="6.0"/> <Insets bottom="6.0" left="6.0" right="6.0" top="6.0"/>
</padding> </padding>
<Label fx:id="labelHeadword" styleClass="headword" text="Label"/> <Label fx:id="labelHeadword" styleClass="headword"/>
<Label fx:id="labelPronunciation" styleClass="pronunciation"> <Label fx:id="labelPronunciation" styleClass="pronunciation"/>
</Label>
</FlowPane> </FlowPane>
<TabPane fx:id="tabPaneDetails" tabClosingPolicy="UNAVAILABLE" VBox.vgrow="ALWAYS"> <TabPane fx:id="tabPaneDetails" tabClosingPolicy="UNAVAILABLE" VBox.vgrow="ALWAYS">
<Tab closable="false" text="%tab.definition"> <Tab closable="false" text="%details.tab.definition">
<WebView fx:id="webViewDefinition" minHeight="-1.0" minWidth="-1.0" prefHeight="-1.0" prefWidth="-1.0"/> <WebView fx:id="webViewDefinition"/>
</Tab> </Tab>
<Tab id="tabSentences" closable="false" text="%tab.sentences"> <Tab id="tabSentences" closable="false" text="%details.tab.sentences">
<StackPane> <StackPane>
<ProgressIndicator fx:id="progressIndicatorSentences" visible="false"/> <ProgressIndicator fx:id="progressIndicatorSentences" visible="false"/>
<Label fx:id="labelNoSentencesFound" text="%list.no_sentences_found" textAlignment="CENTER" <Label fx:id="labelNoSentencesFound" text="%details.list.no_sentences_found" textAlignment="CENTER"
visible="false" visible="false" wrapText="true">
wrapText="true">
<padding> <padding>
<Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/> <Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/>
</padding> </padding>
@ -32,17 +30,16 @@
<ListView fx:id="listViewSentences"/> <ListView fx:id="listViewSentences"/>
</StackPane> </StackPane>
</Tab> </Tab>
<Tab id="tabWords" closable="false" text="%tab.words"> <Tab id="tabWords" closable="false" text="%details.tab.words">
<VBox maxHeight="1.7976931348623157E308"> <VBox maxHeight="1.7976931348623157E308">
<TitledPane animated="false" maxHeight="-Infinity" text="%list.words_beginning" VBox.vgrow="ALWAYS"> <TitledPane animated="false" maxHeight="-Infinity" text="%details.list.words_beginning" VBox.vgrow="ALWAYS">
<StackPane> <StackPane>
<padding> <padding>
<Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/> <Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
</padding> </padding>
<ProgressIndicator fx:id="progressIndicatorWordsBeginning" visible="false"/> <ProgressIndicator fx:id="progressIndicatorWordsBeginning" visible="false"/>
<Label fx:id="labelNoWordsBeginningFound" text="%list.no_words_found" textAlignment="CENTER" <Label fx:id="labelNoWordsBeginningFound" text="%details.list.no_words_found" textAlignment="CENTER"
visible="false" visible="false" wrapText="true">
wrapText="true">
<padding> <padding>
<Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/> <Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/>
</padding> </padding>
@ -50,15 +47,14 @@
<ListView fx:id="listViewWordsBeginning" prefHeight="4000"/> <ListView fx:id="listViewWordsBeginning" prefHeight="4000"/>
</StackPane> </StackPane>
</TitledPane> </TitledPane>
<TitledPane animated="false" maxHeight="-Infinity" text="%list.words_containing" VBox.vgrow="ALWAYS"> <TitledPane animated="false" maxHeight="-Infinity" text="%details.list.words_containing" VBox.vgrow="ALWAYS">
<StackPane> <StackPane>
<padding> <padding>
<Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/> <Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
</padding> </padding>
<ProgressIndicator fx:id="progressIndicatorWordsContaining" visible="false"/> <ProgressIndicator fx:id="progressIndicatorWordsContaining" visible="false"/>
<Label fx:id="labelNoWordsContainingFound" text="%list.no_words_found" textAlignment="CENTER" <Label fx:id="labelNoWordsContainingFound" text="%details.list.no_words_found" textAlignment="CENTER"
visible="false" visible="false" wrapText="true">
wrapText="true">
<padding> <padding>
<Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/> <Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/>
</padding> </padding>
@ -68,10 +64,10 @@
</TitledPane> </TitledPane>
</VBox> </VBox>
</Tab> </Tab>
<Tab fx:id="tabCharacters" id="tabCharacters" closable="false" text="%tab.characters"> <Tab fx:id="tabCharacters" id="tabCharacters" closable="false" text="%details.tab.characters">
<StackPane> <StackPane>
<ListView fx:id="listViewCharacters"/> <ListView fx:id="listViewCharacters"/>
<Label fx:id="labelNoCharactersFound" text="%list.no_characters_found" textAlignment="CENTER" <Label fx:id="labelNoCharactersFound" text="%details.list.no_characters_found" textAlignment="CENTER"
visible="false" wrapText="true"> visible="false" wrapText="true">
<padding> <padding>
<Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/> <Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/>

View File

@ -15,7 +15,7 @@
<Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/> <Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/>
</BorderPane.margin> </BorderPane.margin>
<fx:include source="/fxml/search.fxml"/> <fx:include source="/fxml/search.fxml"/>
<SplitPane styleClass="split-pane" dividerPositions="0.33" VBox.vgrow="ALWAYS"> <SplitPane dividerPositions="0.33" VBox.vgrow="ALWAYS">
<fx:include source="/fxml/search-results.fxml"/> <fx:include source="/fxml/search-results.fxml"/>
<fx:include source="/fxml/details.fxml"/> <fx:include source="/fxml/details.fxml"/>
</SplitPane> </SplitPane>

View File

@ -5,12 +5,12 @@
<?import javafx.scene.control.ListView?> <?import javafx.scene.control.ListView?>
<?import javafx.scene.control.ProgressIndicator?> <?import javafx.scene.control.ProgressIndicator?>
<?import javafx.scene.layout.StackPane?> <?import javafx.scene.layout.StackPane?>
<StackPane xmlns="http://javafx.com/javafx/23" xmlns:fx="http://javafx.com/fxml/1" <StackPane minWidth="100" xmlns="http://javafx.com/javafx/23" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="com.marvinelsen.willow.ui.controllers.SearchResultsController" fx:controller="com.marvinelsen.willow.ui.controllers.SearchResultsController"
stylesheets="/css/search-results.css"> stylesheets="/css/search-results.css">
<ListView fx:id="listViewSearchResults" disable="true" minWidth="150.0"/> <ListView fx:id="listViewSearchResults" disable="true"/>
<Label fx:id="labelNoEntriesFound" text="%list.no_entries_found" textAlignment="CENTER" <Label fx:id="labelNoEntriesFound" text="%search.results.list.no_entries_found" textAlignment="CENTER" visible="false"
visible="false" wrapText="true"> wrapText="true">
<padding> <padding>
<Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/> <Insets bottom="8.0" left="8.0" right="8.0" top="8.0"/>
</padding> </padding>

View File

@ -18,20 +18,17 @@
<SearchMode fx:value="SIMPLIFIED"/> <SearchMode fx:value="SIMPLIFIED"/>
</userData> </userData>
</RadioButton> </RadioButton>
<RadioButton mnemonicParsing="false" text="%search.mode.traditional" <RadioButton mnemonicParsing="false" text="%search.mode.traditional" toggleGroup="$searchModeToggleGroup">
toggleGroup="$searchModeToggleGroup">
<userData> <userData>
<SearchMode fx:value="TRADITIONAL"/> <SearchMode fx:value="TRADITIONAL"/>
</userData> </userData>
</RadioButton> </RadioButton>
<RadioButton mnemonicParsing="false" text="%search.mode.pinyin" <RadioButton mnemonicParsing="false" text="%search.mode.pinyin" toggleGroup="$searchModeToggleGroup">
toggleGroup="$searchModeToggleGroup">
<userData> <userData>
<SearchMode fx:value="PINYIN"/> <SearchMode fx:value="PINYIN"/>
</userData> </userData>
</RadioButton> </RadioButton>
<RadioButton mnemonicParsing="false" text="%search.mode.phrase" <RadioButton mnemonicParsing="false" text="%search.mode.phrase" toggleGroup="$searchModeToggleGroup">
toggleGroup="$searchModeToggleGroup">
<userData> <userData>
<SearchMode fx:value="SEGMENTS"/> <SearchMode fx:value="SEGMENTS"/>
</userData> </userData>

View File

@ -1,13 +1,24 @@
# Search
search.prompt=Search dictionary… search.prompt=Search dictionary…
search.mode=Searching: search.mode=Search mode:
search.mode.pinyin=Pinyin search.mode.pinyin=Pinyin
search.mode.traditional=Traditional Chinese search.mode.traditional=Traditional
search.mode.simplified=Simplified Chinese search.mode.simplified=Simplified
search.mode.english=English search.mode.phrase=Phrase
tab.definition=Definition
tab.sentences=Sentences # Details
tab.words=Words details.tab.definition=Definition
tab.characters=Characters details.tab.sentences=Sentences
details.tab.words=Words
details.tab.characters=Characters
details.list.no_characters_found=No characters found
details.list.no_words_found=No words found
details.list.no_sentences_found=No sentences found.
details.list.words_beginning=Words beginning
details.list.words_containing=Words containing
# Menubar
menubar.file=_File menubar.file=_File
menubar.file.quit=_Quit menubar.file.quit=_Quit
menubar.file.preferences=_Preferences… menubar.file.preferences=_Preferences…
@ -16,10 +27,6 @@ menubar.edit.copy.headword=Copy Headword
menubar.edit.copy.pronunciation=Copy Pronunciation menubar.edit.copy.pronunciation=Copy Pronunciation
menubar.help=_Help menubar.help=_Help
menubar.help.about=_About… menubar.help.about=_About…
list.no_entries_found=No matching entries found
search.mode.phrase=Phrase # Search results
list.no_characters_found=No characters found search.results.list.no_entries_found=No matching entries found
list.no_words_found=No words found
list.no_sentences_found=No sentences found.
list.words_beginning=Words beginning
list.words_containing=Words containing

View File

@ -1,13 +1,24 @@
# Search
search.prompt=Durchsuche Wörterbuch… search.prompt=Durchsuche Wörterbuch…
search.mode=Suche: search.mode=Suchmodus:
search.mode.pinyin=Pinyin search.mode.pinyin=Pinyin
search.mode.traditional=Langzeichen search.mode.traditional=Langzeichen
search.mode.simplified=Kurzzeichen search.mode.simplified=Kurzzeichen
search.mode.english=Englisch search.mode.phrase=Satz
tab.definition=Definition
tab.sentences=Sätze # Details
tab.words=Wörter details.tab.definition=Definition
tab.characters=Schriftzeichen details.tab.sentences=Sätze
details.tab.words=Wörter
details.tab.characters=Schriftzeichen
details.list.no_characters_found=Keine Schriftzeichen gefunden
details.list.no_words_found=Keine Wörter gefunden
details.list.no_sentences_found=Keine Sätze gefunden
details.list.words_beginning=Am Wortanfang
details.list.words_containing=Im Wort
# Menubar
menubar.file=_Datei menubar.file=_Datei
menubar.file.quit=_Beenden menubar.file.quit=_Beenden
menubar.file.preferences=_Einstellungen… menubar.file.preferences=_Einstellungen…
@ -16,10 +27,6 @@ menubar.edit.copy.headword=Kopiere Wort
menubar.edit.copy.pronunciation=Kopiere Aussprache menubar.edit.copy.pronunciation=Kopiere Aussprache
menubar.help=_Hilfe menubar.help=_Hilfe
menubar.help.about=_Über… menubar.help.about=_Über…
list.no_entries_found=No matching entries found
search.mode.phrase=Phrase # Search results
list.no_characters_found=No characters found search.results.list.no_entries_found=Keine passenden Einträge gefunden
list.no_words_found=No words found
list.no_sentences_found=No sentences found.
list.words_beginning=Words beginning
list.words_containing=Words containing

View File

@ -1,13 +1,24 @@
# Search
search.prompt=Search dictionary… search.prompt=Search dictionary…
search.mode=Searching: search.mode=Search mode:
search.mode.pinyin=Pinyin search.mode.pinyin=Pinyin
search.mode.traditional=Traditional Chinese search.mode.traditional=Traditional
search.mode.simplified=Simplified Chinese search.mode.simplified=Simplified
search.mode.english=English search.mode.phrase=Phrase
tab.definition=Definition
tab.sentences=Sentences # Details
tab.words=Words details.tab.definition=Definition
tab.characters=Characters details.tab.sentences=Sentences
details.tab.words=Words
details.tab.characters=Characters
details.list.no_characters_found=No characters found
details.list.no_words_found=No words found
details.list.no_sentences_found=No sentences found.
details.list.words_beginning=Words beginning
details.list.words_containing=Words containing
# Menubar
menubar.file=_File menubar.file=_File
menubar.file.quit=_Quit menubar.file.quit=_Quit
menubar.file.preferences=_Preferences… menubar.file.preferences=_Preferences…
@ -16,10 +27,6 @@ menubar.edit.copy.headword=Copy Headword
menubar.edit.copy.pronunciation=Copy Pronunciation menubar.edit.copy.pronunciation=Copy Pronunciation
menubar.help=_Help menubar.help=_Help
menubar.help.about=_About… menubar.help.about=_About…
list.no_entries_found=No matching entries found
search.mode.phrase=Phrase # Search results
list.no_characters_found=No characters found search.results.list.no_entries_found=No matching entries found
list.no_words_found=No words found
list.no_sentences_found=No sentences found.
list.words_beginning=Words beginning
list.words_containing=Words containing

View File

@ -1,13 +1,24 @@
#Search
search.prompt=搜尋… search.prompt=搜尋…
search.mode=搜尋: search.mode=搜尋模式:
search.mode.pinyin=漢語拼音 search.mode.pinyin=漢語拼音
search.mode.traditional=繁體字 search.mode.traditional=繁體字
search.mode.simplified=簡體字 search.mode.simplified=簡體字
search.mode.english=英文 search.mode.phrase=句子
tab.definition=Definition
tab.sentences=例句 # Details
tab.words= details.tab.definition=釋義
tab.characters= details.tab.sentences=例句
details.tab.words=
details.tab.characters=
details.list.no_characters_found=No characters found
details.list.no_words_found=No words found
details.list.no_sentences_found=No sentences found.
details.list.words_beginning=Words beginning
details.list.words_containing=Words containing
# Menubar
menubar.file=_檔案 menubar.file=_檔案
menubar.file.quit=_結束 Willow menubar.file.quit=_結束 Willow
menubar.file.preferences=_設定… menubar.file.preferences=_設定…
@ -16,10 +27,6 @@ menubar.edit.copy.headword=複製 Wort
menubar.edit.copy.pronunciation=複製 Aussprache menubar.edit.copy.pronunciation=複製 Aussprache
menubar.help=_說明 menubar.help=_說明
menubar.help.about=_關於 Willow… menubar.help.about=_關於 Willow…
list.no_entries_found=No matching entries found
search.mode.phrase=Phrase # Search results
list.no_characters_found=No characters found search.results.list.no_entries_found=No matching entries found
list.no_words_found=No words found
list.no_sentences_found=No sentences found.
list.words_beginning=Words beginning
list.words_containing=Words containing

View File

@ -1,13 +1,24 @@
# Search
search.prompt=搜尋… search.prompt=搜尋…
search.mode=搜尋: search.mode=搜尋模式:
search.mode.pinyin=漢語拼音 search.mode.pinyin=漢語拼音
search.mode.traditional=繁體字 search.mode.traditional=繁體字
search.mode.simplified=簡體字 search.mode.simplified=簡體字
search.mode.english=英文 search.mode.phrase=句子
tab.definition=Definition
tab.sentences=例句 # Details
tab.words= details.tab.definition=釋義
tab.characters= details.tab.sentences=例句
details.tab.words=
details.tab.characters=
details.list.no_characters_found=No characters found
details.list.no_words_found=No words found
details.list.no_sentences_found=No sentences found
details.list.words_beginning=Words beginning
details.list.words_containing=Words containing
# Menubar
menubar.file=_檔案 menubar.file=_檔案
menubar.file.quit=_結束 Willow menubar.file.quit=_結束 Willow
menubar.file.preferences=_設定… menubar.file.preferences=_設定…
@ -16,10 +27,6 @@ menubar.edit.copy.headword=複製 Wort
menubar.edit.copy.pronunciation=複製 Aussprache menubar.edit.copy.pronunciation=複製 Aussprache
menubar.help=_說明 menubar.help=_說明
menubar.help.about=_關於 Willow… menubar.help.about=_關於 Willow…
list.no_entries_found=No matching entries found
search.mode.phrase=Phrase # Search results
list.no_characters_found=No characters found search.results.list.no_entries_found=No matching entries found
list.no_words_found=No words found
list.no_sentences_found=No sentences found.
list.words_beginning=Words beginning
list.words_containing=Words containing