1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00

Merge master into encryption branch

This commit is contained in:
Laurent Cozic 2017-12-15 07:31:57 +00:00
parent 5bc72e2b44
commit d9c1e30e9b
19 changed files with 121 additions and 96 deletions

View File

@ -34,12 +34,17 @@ From `/ElectronClient` you can also run `run.sh` to run the app for testing.
# Building the Mobile application # Building the Mobile application
From `/ReactNativeClient`, run `npm install`, then `react-native run-ios` or `react-native run-android`. First you need to to setup React Native to build projects with native code. For this, follow the instructions on the [Get Started](https://facebook.github.io/react-native/docs/getting-started.html) tutorial, in the "Building Projects with Native Code" tab.
Then, from `/ReactNativeClient`, run `npm install`, then `react-native run-ios` or `react-native run-android`.
# Building the Terminal application # Building the Terminal application
From `/CliClient`: ```
- Run `npm install` cd CliClient
- Then `build.sh` npm install
- Copy the translations to the build directory: `rsync --delete -aP ../ReactNativeClient/locales/ build/locales/` ./build.sh
- Run `run.sh` to start the application for testing. rsync --delete -aP ../ReactNativeClient/locales/ build/locales/
```
Run `run.sh` to start the application for testing.

View File

@ -65,12 +65,10 @@ class Command extends BaseCommand {
} else { } else {
const commandNames = this.allCommands().map((a) => a.name()); const commandNames = this.allCommands().map((a) => a.name());
this.stdout(_('Type `help [command]` for more information about a command.')); this.stdout(_('Type `help [command]` for more information about a command; or type `help all` for the complete usage information.'));
this.stdout(''); this.stdout('');
this.stdout(_('The possible commands are:')); this.stdout(_('The possible commands are:'));
this.stdout(''); this.stdout('');
this.stdout(_('Type `help all` for the complete help of all the commands.'));
this.stdout('');
this.stdout(commandNames.join(', ')); this.stdout(commandNames.join(', '));
this.stdout(''); this.stdout('');
this.stdout(_('In any command, a note or notebook can be refered to by title or ID, or using the shortcuts `$n` or `$b` for, respectively, the currently selected note or notebook. `$c` can be used to refer to the currently selected item.')); this.stdout(_('In any command, a note or notebook can be refered to by title or ID, or using the shortcuts `$n` or `$b` for, respectively, the currently selected note or notebook. `$c` can be used to refer to the currently selected item.'));

View File

@ -29,7 +29,7 @@ class Command extends BaseCommand {
const folder = await app().loadItem(BaseModel.TYPE_FOLDER, pattern); const folder = await app().loadItem(BaseModel.TYPE_FOLDER, pattern);
if (!folder) throw new Error(_('Cannot find "%s".', pattern)); if (!folder) throw new Error(_('Cannot find "%s".', pattern));
const ok = force ? true : await this.prompt(_('Delete notebook "%s"?', folder.title), { booleanAnswerDefault: 'n' }); const ok = force ? true : await this.prompt(_('Delete notebook? All notes within this notebook will also be deleted.'), { booleanAnswerDefault: 'n' });
if (!ok) return; if (!ok) return;
await Folder.delete(folder.id); await Folder.delete(folder.id);

View File

@ -1,5 +1,6 @@
const Note = require('lib/models/Note.js'); const Note = require('lib/models/Note.js');
const TextWidget = require('tkwidgets/TextWidget.js'); const TextWidget = require('tkwidgets/TextWidget.js');
const { _ } = require('lib/locale.js');
class NoteWidget extends TextWidget { class NoteWidget extends TextWidget {
@ -32,8 +33,15 @@ class NoteWidget extends TextWidget {
this.reloadNote(); this.reloadNote();
} }
welcomeText() {
return _('Welcome to Joplin!\n\nType `:help shortcuts` for the list of keyboard shortcuts, or just `:help` for usage information.\n\nFor example, to create a notebook press `mb`; to create a note press `mn`.');
}
reloadNote() { reloadNote() {
if (this.noteId_) { if (!this.noteId_ && !this.notes.length) {
this.text = this.welcomeText();
this.scrollTop = 0;
} else if (this.noteId_) {
this.doAsync('loadNote', async () => { this.doAsync('loadNote', async () => {
this.note_ = await Note.load(this.noteId_); this.note_ = await Note.load(this.noteId_);
this.text = this.note_ ? this.note_.title + "\n\n" + this.note_.body : ''; this.text = this.note_ ? this.note_.title + "\n\n" + this.note_.body : '';

View File

@ -15,70 +15,70 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.4\n" "X-Generator: Poedit 2.0.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
msgid "Give focus to next pane" msgid "Give focus to next pane"
msgstr "Fokussiere das nächste Fenster" msgstr "Das nächste Fenster fokussieren"
msgid "Give focus to previous pane" msgid "Give focus to previous pane"
msgstr "Fokussiere das vorherige Fenster" msgstr "Das vorherige Fenster fokussieren"
msgid "Enter command line mode" msgid "Enter command line mode"
msgstr "Wechsle zum Terminal-Modus" msgstr "Zum Terminal-Modus wechseln"
msgid "Exit command line mode" msgid "Exit command line mode"
msgstr "Verlasse den Terminal-Modus" msgstr "Den Terminal-Modus verlassen"
msgid "Edit the selected note" msgid "Edit the selected note"
msgstr "Bearbeite die ausgewählte Notiz" msgstr "Die ausgewählte Notiz bearbeiten"
msgid "Cancel the current command." msgid "Cancel the current command."
msgstr "Breche den momentanen Befehl ab." msgstr "Den momentanen Befehl abbrechen."
msgid "Exit the application." msgid "Exit the application."
msgstr "Verlasse das Programm." msgstr "Das Programm verlassen."
msgid "Delete the currently selected note or notebook." msgid "Delete the currently selected note or notebook."
msgstr "" msgstr "Die momentan ausgewählte Notiz(-buch) löschen."
"Lösche die momentan ausgewählte Notiz oder das momentan ausgewählte "
"Notizbuch."
msgid "To delete a tag, untag the associated notes." msgid "To delete a tag, untag the associated notes."
msgstr "" msgstr ""
"Um eine Markierung zu löschen, habe die Markierungen zugehöriger Notizen auf." "Hebe die Markierungen zugehöriger Notizen auf, um eine Markierung zu löschen."
msgid "Please select the note or notebook to be deleted first." msgid "Please select the note or notebook to be deleted first."
msgstr "" msgstr ""
"Bitte wählen Sie zuert eine Notiz oder ein Notizbuch aus, das gelöscht " "Wähle bitte zuerst eine Notiz oder ein Notizbuch aus, das gelöscht werden "
"werden soll." "soll."
msgid "Set a to-do as completed / not completed" msgid "Set a to-do as completed / not completed"
msgstr "Markiere ein ToDo as abgeschlossen / nicht abgeschlossen" msgstr "Ein To-Do as abgeschlossen / nicht abgeschlossen markieren"
#, fuzzy
msgid "[t]oggle [c]onsole between maximized/minimized/hidden/visible." msgid "[t]oggle [c]onsole between maximized/minimized/hidden/visible."
msgstr "" msgstr ""
"Schal[t]e das Terminal zwischen maximiert/minimiert/versteckt/sichtbar um." "Schal[t]e das Terminal zwischen maximiert/minimiert/versteckt/sichtbar um."
msgid "Search" msgid "Search"
msgstr "Suche" msgstr "Suchen"
msgid "[t]oggle note [m]etadata." msgid "[t]oggle note [m]etadata."
msgstr "Schal[t]e Notiz-[M]etadata ein." msgstr "Notiz-[M]etadata einschal[t]en."
msgid "[M]ake a new [n]ote" msgid "[M]ake a new [n]ote"
msgstr "Erstelle eine neue Notiz" msgstr "Eine neue [N]otiz [m]achen"
msgid "[M]ake a new [t]odo" msgid "[M]ake a new [t]odo"
msgstr "Erstelle ein neues To-Do" msgstr "Ein neues [T]o-Do [m]achen"
msgid "[M]ake a new note[b]ook" msgid "[M]ake a new note[b]ook"
msgstr "Erstelle ein neues Notiz[b]uch" msgstr "Ein neues Notiz[b]uch [m]achen"
#, fuzzy
msgid "Copy ([Y]ank) the [n]ote to a notebook." msgid "Copy ([Y]ank) the [n]ote to a notebook."
msgstr "Kopiere die Notiz zu einem Notizbuch." msgstr "Die Notiz zu einem Notizbuch kopieren."
msgid "Move the note to a notebook." msgid "Move the note to a notebook."
msgstr "Verschiebe die Notiz zu einem Notizbuch." msgstr "Die Notiz zu einem Notizbuch verschieben."
msgid "Press Ctrl+D or type \"exit\" to exit the application" msgid "Press Ctrl+D or type \"exit\" to exit the application"
msgstr "Drücke Strg+D oder schreibe \"exit\", um das Programm zu verlassen" msgstr "Drücke Strg+D oder schreibe \"exit\", um das Programm zu verlassen"
@ -120,7 +120,7 @@ msgstr "Der Befehl \"%s\" ist nur im GUI Modus verfügbar"
#, javascript-format #, javascript-format
msgid "Missing required argument: %s" msgid "Missing required argument: %s"
msgstr "Fehlender benötigtes Argument: %s" msgstr "Fehlendes benötigtes Argument: %s"
#, javascript-format #, javascript-format
msgid "%s: %s" msgid "%s: %s"
@ -176,14 +176,14 @@ msgstr ""
"kopiert." "kopiert."
msgid "Marks a to-do as done." msgid "Marks a to-do as done."
msgstr "Markiert ein ToDo als abgeschlossen." msgstr "Markiert ein To-Do als abgeschlossen."
#, javascript-format #, javascript-format
msgid "Note is not a to-do: \"%s\"" msgid "Note is not a to-do: \"%s\""
msgstr "Notiz ist kein Todo: \"%s\"" msgstr "Notiz ist kein To-Do: \"%s\""
msgid "Edit note." msgid "Edit note."
msgstr "Bearbeite Notiz." msgstr "Notiz bearbeiten."
msgid "" msgid ""
"No text editor is defined. Please set it using `config editor <editor-path>`" "No text editor is defined. Please set it using `config editor <editor-path>`"
@ -200,7 +200,7 @@ msgstr "Notiz \"%s\" existiert nicht. Soll sie erstellt werden?"
msgid "Starting to edit note. Close the editor to get back to the prompt." msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr "" msgstr ""
"Beginne die Notiz zu bearbeiten. Schließ das Textbearbeitungsprogramm um " "Beginne die Notiz zu bearbeiten. Schließ das Textbearbeitungsprogramm, um "
"zurück zum Terminal zu kommen." "zurück zum Terminal zu kommen."
msgid "Note has been saved." msgid "Note has been saved."
@ -405,7 +405,7 @@ msgstr ""
"%d Notizen stimmen mit diesem Muster überein. Sollen sie gelöscht werden?" "%d Notizen stimmen mit diesem Muster überein. Sollen sie gelöscht werden?"
msgid "Delete note?" msgid "Delete note?"
msgstr "Lösche Notiz?" msgstr "Notiz löschen?"
msgid "Searches for the given <pattern> in all the notes." msgid "Searches for the given <pattern> in all the notes."
msgstr "Sucht nach dem gegebenen <pattern> in allen Notizen." msgstr "Sucht nach dem gegebenen <pattern> in allen Notizen."
@ -423,7 +423,7 @@ msgstr "Synchronisiert mit "
msgid "Sync to provided target (defaults to sync.target config value)" msgid "Sync to provided target (defaults to sync.target config value)"
msgstr "" msgstr ""
"Synchronisiere mit dem gegebenen Ziel ( voreingestellt auf den sync.target " "Mit dem gegebenen Ziel synchronisieren ( voreingestellt auf den sync.target "
"Optionswert)" "Optionswert)"
msgid "Synchronisation is already in progress." msgid "Synchronisation is already in progress."
@ -496,7 +496,7 @@ msgstr ""
"Notizbuch verrichtet." "Notizbuch verrichtet."
msgid "Displays version information" msgid "Displays version information"
msgstr "" msgstr "Zeigt die Versionsnummer an"
#, javascript-format #, javascript-format
msgid "%s %s (%s)" msgid "%s %s (%s)"
@ -540,7 +540,7 @@ msgid ""
msgstr "" msgstr ""
"Bitte öffne die folgende URL in deinem Browser, um das Programm zu " "Bitte öffne die folgende URL in deinem Browser, um das Programm zu "
"authentifizieren. Das Programm wird einen Ordner in \"Apps/Joplin\" " "authentifizieren. Das Programm wird einen Ordner in \"Apps/Joplin\" "
"erstellen und wird nur in diesem Ordner schreiben und lesen. Es wird keinen " "erstellen und wird nur in diesem Ordner schreiben und lesen. Es wird weder "
"Zugriff auf Dateien außerhalb dieses Ordners haben, noch auf persönliche " "Zugriff auf Dateien außerhalb dieses Ordners haben, noch auf persönliche "
"Daten. Es werden keine Daten mit Dritten geteilt." "Daten. Es werden keine Daten mit Dritten geteilt."
@ -560,7 +560,7 @@ msgid "New notebook"
msgstr "Neues Notizbuch" msgstr "Neues Notizbuch"
msgid "Import Evernote notes" msgid "Import Evernote notes"
msgstr "Importiere Evernote Notizen" msgstr "Evernote Notizen importieren"
msgid "Evernote Export Files" msgid "Evernote Export Files"
msgstr "" msgstr ""
@ -626,7 +626,7 @@ msgid "Please create a notebook first."
msgstr "Bitte erstelle zuerst ein Notizbuch." msgstr "Bitte erstelle zuerst ein Notizbuch."
msgid "Note title:" msgid "Note title:"
msgstr "Notiz titel:" msgstr "Notiz Titel:"
msgid "Please create a notebook first" msgid "Please create a notebook first"
msgstr "Bitte erstelle zuerst ein Notizbuch" msgstr "Bitte erstelle zuerst ein Notizbuch"
@ -646,9 +646,8 @@ msgstr "Trenne jede Markierung mit einem Komma."
msgid "Rename notebook:" msgid "Rename notebook:"
msgstr "Benne Notizbuch um:" msgstr "Benne Notizbuch um:"
#, fuzzy
msgid "Set alarm:" msgid "Set alarm:"
msgstr "Erstelle Alarm" msgstr "Alarm erstellen:"
msgid "Layout" msgid "Layout"
msgstr "Layout" msgstr "Layout"
@ -661,10 +660,10 @@ msgid "View them now"
msgstr "" msgstr ""
msgid "Add or remove tags" msgid "Add or remove tags"
msgstr "Füge hinzu oder entferne Markierungen" msgstr "Markierungen hinzufügen oder entfernen"
msgid "Switch between note and to-do type" msgid "Switch between note and to-do type"
msgstr "Wechsel zwischen Notiz und To-Do Typ" msgstr "Zwischen Notiz und To-Do Typ wechseln"
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
@ -674,17 +673,18 @@ msgstr "Notizen löschen?"
msgid "No notes in here. Create one by clicking on \"New note\"." msgid "No notes in here. Create one by clicking on \"New note\"."
msgstr "" msgstr ""
"Hier sind keine Notizen. Erstelle eine indem zu auf \"Neue Notiz\" drückst." "Hier sind noch keine Notizen. Erstelle eine, indem du auf \"Neue Notiz\" "
"drückst."
#, javascript-format #, javascript-format
msgid "Unsupported link or message: %s" msgid "Unsupported link or message: %s"
msgstr "Nicht unterstützter Link oder Nachricht: %s" msgstr "Nicht unterstützter Link oder Nachricht: %s"
msgid "Attach file" msgid "Attach file"
msgstr "Hänge Datei an" msgstr "Datei anhängen"
msgid "Set alarm" msgid "Set alarm"
msgstr "Erstelle Alarm" msgstr "Alarm erstellen"
msgid "Refresh" msgid "Refresh"
msgstr "Aktualisieren" msgstr "Aktualisieren"
@ -724,15 +724,15 @@ msgid "Tags"
msgstr "Markierungen" msgstr "Markierungen"
msgid "Searches" msgid "Searches"
msgstr "Sucht" msgstr "Suchen"
#, javascript-format #, fuzzy, javascript-format
msgid "Usage: %s" msgid "Usage: %s"
msgstr "" msgstr "Benutzung: %s"
#, javascript-format #, javascript-format
msgid "Unknown flag: %s" msgid "Unknown flag: %s"
msgstr "" msgstr "Unbekanntes Argument: %s"
msgid "File system" msgid "File system"
msgstr "Dateisystem" msgstr "Dateisystem"
@ -766,6 +766,12 @@ msgid ""
"\n" "\n"
"Please consider using a regular OneDrive account." "Please consider using a regular OneDrive account."
msgstr "" msgstr ""
"Konnte nicht mit OneDrive synchronisieren.\n"
"\n"
"Dieser Fehler kommt oft vor, wenn OneDrive Business benutzt wird, das leider "
"nicht unterstützt wird.\n"
"\n"
"Bitte benutze stattdessen einen normalen OneDrive account."
#, javascript-format #, javascript-format
msgid "Cannot access %s" msgid "Cannot access %s"
@ -876,10 +882,10 @@ msgid "Dark"
msgstr "Dunkel" msgstr "Dunkel"
msgid "Show uncompleted todos on top of the lists" msgid "Show uncompleted todos on top of the lists"
msgstr "Zeige unvollständige ToDos oben in der Liste an" msgstr "Unvollständige To-Dos oben in der Liste anzeigen"
msgid "Save geo-location with notes" msgid "Save geo-location with notes"
msgstr "Speicher momentanen Standort zusammen mit Notizen" msgstr "Momentanen Standort zusammen mit Notizen speichern"
msgid "Synchronisation interval" msgid "Synchronisation interval"
msgstr "Synchronisationsinterval" msgstr "Synchronisationsinterval"
@ -900,10 +906,10 @@ msgid "%d hours"
msgstr "%d Stunden" msgstr "%d Stunden"
msgid "Automatically update the application" msgid "Automatically update the application"
msgstr "Halte die Applikation automatisch auf den neusten Stand" msgstr "Die Applikation automatisch aktualisieren"
msgid "Show advanced options" msgid "Show advanced options"
msgstr "Zeige erweiterte Optionen an" msgstr "Erweiterte Optionen anzeigen"
msgid "Synchronisation target" msgid "Synchronisation target"
msgstr "Synchronisationsziel" msgstr "Synchronisationsziel"
@ -913,8 +919,8 @@ msgid ""
"`sync.2.path` to specify the target directory." "`sync.2.path` to specify the target directory."
msgstr "" msgstr ""
"Das Synchronisationsziel, mit dem synchronisiert werden soll. Wenn mit dem " "Das Synchronisationsziel, mit dem synchronisiert werden soll. Wenn mit dem "
"Dateisystem synchronisiert werden soll, setzen Sie den Wert zu `sync.2." "Dateisystem synchronisiert werden soll, setz den Wert zu `sync.2.path`, um "
"path`, um den Zielpfad zu spezifizieren." "den Zielpfad zu spezifizieren."
#, javascript-format #, javascript-format
msgid "Invalid option value: \"%s\". Possible values are: %s." msgid "Invalid option value: \"%s\". Possible values are: %s."
@ -925,10 +931,11 @@ msgstr ""
#, javascript-format #, javascript-format
msgid "\"%s\": \"%s\"" msgid "\"%s\": \"%s\""
msgstr "" msgstr "\"%s\": \"%s\""
msgid "Sync status (synced items / total items)" msgid "Sync status (synced items / total items)"
msgstr "Synchronisations status (synchronisierte Notizen / insgesamt )" msgstr ""
"Synchronisationsstatus (synchronisierte Notizen / vorhandenen Notizen )"
#, javascript-format #, javascript-format
msgid "%s: %d/%d" msgid "%s: %d/%d"
@ -954,7 +961,7 @@ msgid "%s: %d notes"
msgstr "%s: %d Notizen" msgstr "%s: %d Notizen"
msgid "Coming alarms" msgid "Coming alarms"
msgstr "Anstehender Alarm" msgstr "Anstehende Alarme"
#, javascript-format #, javascript-format
msgid "On %s: %s" msgid "On %s: %s"
@ -962,8 +969,8 @@ msgstr "Auf %s: %s"
msgid "There are currently no notes. Create one by clicking on the (+) button." msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr "" msgstr ""
"Momentan existieren noch keine Notizen. Erstelle eine indem Sie auf den (+) " "Momentan existieren noch keine Notizen. Erstelle eine, indem du auf den (+) "
"Knopf drücken." "Knopf drückst."
msgid "Delete these notes?" msgid "Delete these notes?"
msgstr "Sollen diese Notizen gelöscht werden?" msgstr "Sollen diese Notizen gelöscht werden?"
@ -981,11 +988,11 @@ msgid "Configuration"
msgstr "Konfiguration" msgstr "Konfiguration"
msgid "Move to notebook..." msgid "Move to notebook..."
msgstr "Verschiebe zu Notizbuch..." msgstr "Zu Notizbuch verschieben..."
#, javascript-format #, javascript-format
msgid "Move %d notes to notebook \"%s\"?" msgid "Move %d notes to notebook \"%s\"?"
msgstr "Verschiebe %d Notizen zu dem Notizbuch \"%s\"?" msgstr "%d Notizen zu dem Notizbuch \"%s\" verschieben?"
msgid "Select date" msgid "Select date"
msgstr "Datum ausswählen" msgstr "Datum ausswählen"
@ -1026,7 +1033,7 @@ msgid "Convert to note"
msgstr "Zu einer Notiz umwandeln" msgstr "Zu einer Notiz umwandeln"
msgid "Convert to todo" msgid "Convert to todo"
msgstr "Zu einem ToDo umwandeln" msgstr "Zu einem To-Do umwandeln"
msgid "Hide metadata" msgid "Hide metadata"
msgstr "Metadaten verstecken" msgstr "Metadaten verstecken"
@ -1047,13 +1054,13 @@ msgid ""
"Click on the (+) button to create a new note or notebook. Click on the side " "Click on the (+) button to create a new note or notebook. Click on the side "
"menu to access your existing notebooks." "menu to access your existing notebooks."
msgstr "" msgstr ""
"Drücken Sie auf den (+) Knopf, um eine neue Notiz oder ein neues Notizbuch " "Drücke auf den (+) Knopf, um eine neue Notiz oder ein neues Notizbuch zu "
"zu erstellen." "erstellen."
msgid "You currently have no notebook. Create one by clicking on (+) button." msgid "You currently have no notebook. Create one by clicking on (+) button."
msgstr "" msgstr ""
"Du habst noch kein Notizbuch. Sie können eines erstellen, indem Sie auf den " "Du hast noch kein Notizbuch. Du kannst eines erstellen, indem du auf den (+) "
"(+) Knopf drücken." "Knopf drückst."
msgid "Welcome" msgid "Welcome"
msgstr "Wilkommen" msgstr "Wilkommen"

View File

@ -1,6 +1,6 @@
{ {
"name": "joplin", "name": "joplin",
"version": "0.10.82", "version": "0.10.83",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -18,7 +18,7 @@
], ],
"owner": "Laurent Cozic" "owner": "Laurent Cozic"
}, },
"version": "0.10.82", "version": "0.10.83",
"bin": { "bin": {
"joplin": "./main.js" "joplin": "./main.js"
}, },

View File

@ -1,5 +1,6 @@
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
const { BrowserWindow } = require('electron'); const { BrowserWindow } = require('electron');
const { shim } = require('lib/shim');
const url = require('url') const url = require('url')
const path = require('path') const path = require('path')
const urlUtils = require('lib/urlUtils.js'); const urlUtils = require('lib/urlUtils.js');
@ -38,12 +39,18 @@ class ElectronAppWrapper {
defaultHeight: 600, defaultHeight: 600,
}); });
this.win_ = new BrowserWindow({ const windowOptions = {
'x': windowState.x, 'x': windowState.x,
'y': windowState.y, 'y': windowState.y,
'width': windowState.width, 'width': windowState.width,
'height': windowState.height 'height': windowState.height,
}) };
// Linux icon workaround for bug https://github.com/electron-userland/electron-builder/issues/2098
// Fix: https://github.com/electron-userland/electron-builder/issues/2269
if (shim.isLinux()) windowOptions.icon = __dirname + '/build/icons/128x128.png';
this.win_ = new BrowserWindow(windowOptions)
this.win_.loadURL(url.format({ this.win_.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'), pathname: path.join(__dirname, 'index.html'),

View File

@ -21,7 +21,7 @@ fs.readdirSync(guiPath).forEach((filename) => {
if (ext !== 'jsx') return; if (ext !== 'jsx') return;
p.pop(); p.pop();
const basePath = p.join('/'); const basePath = p.join('.');
const jsPath = basePath + '.min.js'; const jsPath = basePath + '.min.js';

View File

@ -59,7 +59,7 @@ class ConfigScreenComponent extends React.Component {
} }
return ( return (
<div key={key+value} style={rowStyle}> <div key={key} style={rowStyle}>
<div style={labelStyle}><label>{md.label()}</label></div> <div style={labelStyle}><label>{md.label()}</label></div>
<select value={value} style={controlStyle} onChange={(event) => { updateSettingValue(key, event.target.value) }}> <select value={value} style={controlStyle} onChange={(event) => { updateSettingValue(key, event.target.value) }}>
{items} {items}
@ -72,9 +72,9 @@ class ConfigScreenComponent extends React.Component {
} }
return ( return (
<div key={key+value} style={rowStyle}> <div key={key} style={rowStyle}>
<div style={controlStyle}> <div style={controlStyle}>
<input id={'setting_checkbox_' + key} type="checkbox" defaultChecked={!!value} onChange={(event) => { onCheckboxClick(event) }}/><label onClick={(event) => { onCheckboxClick(event) }} style={labelStyle} htmlFor={'setting_checkbox_' + key}>{md.label()}</label> <input id={'setting_checkbox_' + key} type="checkbox" checked={!!value} onChange={(event) => { onCheckboxClick(event) }}/><label onClick={(event) => { onCheckboxClick(event) }} style={labelStyle} htmlFor={'setting_checkbox_' + key}>{md.label()}</label>
</div> </div>
</div> </div>
); );
@ -86,7 +86,7 @@ class ConfigScreenComponent extends React.Component {
} }
return ( return (
<div key={key+value} style={rowStyle}> <div key={key} style={rowStyle}>
<div style={labelStyle}><label>{md.label()}</label></div> <div style={labelStyle}><label>{md.label()}</label></div>
<input type="text" style={controlStyle} value={this.state.settings[key]} onChange={(event) => {onTextChange(event)}} /> <input type="text" style={controlStyle} value={this.state.settings[key]} onChange={(event) => {onTextChange(event)}} />
</div> </div>

View File

@ -98,7 +98,7 @@ class SideBarComponent extends React.Component {
let deleteMessage = ''; let deleteMessage = '';
if (itemType === BaseModel.TYPE_FOLDER) { if (itemType === BaseModel.TYPE_FOLDER) {
deleteMessage = _('Delete notebook?'); deleteMessage = _('Delete notebook? All notes within this notebook will also be deleted.');
} else if (itemType === BaseModel.TYPE_TAG) { } else if (itemType === BaseModel.TYPE_TAG) {
deleteMessage = _('Remove this tag from all the notes?'); deleteMessage = _('Remove this tag from all the notes?');
} else if (itemType === BaseModel.TYPE_SEARCH) { } else if (itemType === BaseModel.TYPE_SEARCH) {

View File

@ -1,6 +1,6 @@
{ {
"name": "Joplin", "name": "Joplin",
"version": "0.10.38", "version": "0.10.39",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,6 +1,6 @@
{ {
"name": "Joplin", "name": "Joplin",
"version": "0.10.38", "version": "0.10.39",
"description": "Joplin for Desktop", "description": "Joplin for Desktop",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {

View File

@ -14,4 +14,4 @@ echo "Create a draft release at: https://github.com/laurent22/joplin/releases/ta
echo "" echo ""
echo "Then run:" echo "Then run:"
echo "" echo ""
echo "node $APP_DIR/update-readme-download.js" echo "node $APP_DIR/update-readme-download.js && git add -A && git commit -m 'Update website' && git push"

View File

@ -18,9 +18,9 @@ Three types of applications are available: for the **desktop** (Windows, macOS a
Operating System | Download Operating System | Download
-----------------|-------- -----------------|--------
Windows | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-Setup-0.10.38.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a> Windows | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-Setup-0.10.39.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a>
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a> macOS | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a>
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a> Linux | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a>
## Mobile applications ## Mobile applications

View File

@ -79,7 +79,7 @@ Rename the currently selected notebook ($b) to "Something":
Attach a local file to the currently selected note ($n): Attach a local file to the currently selected note ($n):
ren $n /home/laurent/pictures/Vacation12.jpg attach $n /home/laurent/pictures/Vacation12.jpg
The configuration can also be changed from command-line mode. For example, to change the current editor to Sublime Text: The configuration can also be changed from command-line mode. For example, to change the current editor to Sublime Text:

View File

@ -69,7 +69,7 @@ class NotesScreenComponent extends BaseScreenComponent {
} }
deleteFolder_onPress(folderId) { deleteFolder_onPress(folderId) {
dialogs.confirm(this, _('Delete notebook?')).then((ok) => { dialogs.confirm(this, _('Delete notebook? All notes within this notebook will also be deleted.')).then((ok) => {
if (!ok) return; if (!ok) return;
Folder.delete(folderId).then(() => { Folder.delete(folderId).then(() => {

View File

@ -218,15 +218,15 @@
<tbody> <tbody>
<tr> <tr>
<td>Windows</td> <td>Windows</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-Setup-0.10.38.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a></td> <td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-Setup-0.10.39.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a></td>
</tr> </tr>
<tr> <tr>
<td>macOS</td> <td>macOS</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a></td> <td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a></td>
</tr> </tr>
<tr> <tr>
<td>Linux</td> <td>Linux</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a></td> <td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -258,7 +258,7 @@ sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin
</code></pre><p>Rename the currently selected notebook ($b) to &quot;Something&quot;:</p> </code></pre><p>Rename the currently selected notebook ($b) to &quot;Something&quot;:</p>
<pre><code>ren $b &quot;Something&quot; <pre><code>ren $b &quot;Something&quot;
</code></pre><p>Attach a local file to the currently selected note ($n):</p> </code></pre><p>Attach a local file to the currently selected note ($n):</p>
<pre><code>ren $n /home/laurent/pictures/Vacation12.jpg <pre><code>attach $n /home/laurent/pictures/Vacation12.jpg
</code></pre><p>The configuration can also be changed from command-line mode. For example, to change the current editor to Sublime Text:</p> </code></pre><p>The configuration can also be changed from command-line mode. For example, to change the current editor to Sublime Text:</p>
<pre><code>config editor &quot;subl -w&quot; <pre><code>config editor &quot;subl -w&quot;
</code></pre><h2 id="editing-a-note">Editing a note</h2> </code></pre><h2 id="editing-a-note">Editing a note</h2>