mirror of
https://github.com/tomasriveral/NoteWrapper.git
synced 2026-08-12 10:20:46 +02:00
Compare commits
13
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29d86955f4 | ||
|
|
0f9ec32bfc | ||
|
|
5ad8f2f99e | ||
|
|
c6e590e57c | ||
|
|
d47bdb82eb | ||
|
|
50748eeac0 | ||
|
|
19a8f7e07f | ||
|
|
1c17c62835 | ||
|
|
e666ca32de | ||
|
|
2a8392ac2e | ||
|
|
a32f97d229 | ||
|
|
6555b7247e | ||
|
|
2b2a3455d2 |
Generated
+3
-3
@@ -20,11 +20,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779560665,
|
"lastModified": 1780749050,
|
||||||
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
|
"narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
|
"rev": "a799d3e3886da994fa307f817a6bc705ae538eeb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
in {
|
in {
|
||||||
packages.default = pkgs.stdenv.mkDerivation (finalAttrs: {
|
packages.default = pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "notewrapper";
|
pname = "notewrapper";
|
||||||
version = "v2.2";
|
version = "v2.3.0";
|
||||||
|
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
|
|||||||
+25
-15
@@ -598,7 +598,8 @@ backup_config_end:
|
|||||||
|
|
||||||
*backupMessage = 0; // we reset it to show the message only once
|
*backupMessage = 0; // we reset it to show the message only once
|
||||||
|
|
||||||
vaultSelected = ncursesSelect(vaultsArray, "Select vault to open (Use arrows or WASD, Enter to select):", vaultsCount, extraOptions, " ", "Or select an option below", "", shouldDebug);
|
vaultSelected = ncursesSelect(vaultsArray, "Select vault to open (Use arrows or WASD, Enter to select or use 1-9 to quick select or use 1-9 to quick select):", vaultsCount, extraOptions, " ",
|
||||||
|
"Or select an option below", "", shouldDebug);
|
||||||
|
|
||||||
// now that we won't use vaultsArray in this iteration of the loop, we should free it and
|
// now that we won't use vaultsArray in this iteration of the loop, we should free it and
|
||||||
// all its elements. (As this is memory in the heap and not the stack and thus is our
|
// all its elements. (As this is memory in the heap and not the stack and thus is our
|
||||||
@@ -666,8 +667,9 @@ backup_config_end:
|
|||||||
goto note_creation;
|
goto note_creation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
noteSelected =
|
char vaultMessage[PATH_MAX];
|
||||||
ncursesSelect(filesArray, "Select note or journal to open (Use arrows or WASD, Enter to select):", filesCount, extraNotesOptions, " ", "Or select an option below", "", shouldDebug);
|
snprintf(vaultMessage, PATH_MAX, "%s: Select note or journal to open (Use arrows or WASD, Enter to select or use 1-9 to quick select):", vaultSelected);
|
||||||
|
noteSelected = ncursesSelect(filesArray, vaultMessage, filesCount, extraNotesOptions, " ", "Or select an option below", "", shouldDebug);
|
||||||
// now that we won't use filesArray in this iteration of the loop, we should free it
|
// now that we won't use filesArray in this iteration of the loop, we should free it
|
||||||
// and all its elements. (As this is memory in the heap and not the stack and thus
|
// and all its elements. (As this is memory in the heap and not the stack and thus
|
||||||
// is our responsability to manage)
|
// is our responsability to manage)
|
||||||
@@ -695,24 +697,32 @@ backup_config_end:
|
|||||||
|
|
||||||
int *journalWasUpdated = malloc(sizeof(int));
|
int *journalWasUpdated = malloc(sizeof(int));
|
||||||
*journalWasUpdated = 0;
|
*journalWasUpdated = 0;
|
||||||
|
|
||||||
|
// used to go back to note selection
|
||||||
|
int *returnNoteSelection = malloc(sizeof(int));
|
||||||
|
*returnNoteSelection = 0;
|
||||||
|
|
||||||
if (!regexReturn) { // if the regex matches -> it's a journal
|
if (!regexReturn) { // if the regex matches -> it's a journal
|
||||||
debug("%s is a journal. Updating it...", noteSelected);
|
debug("%s is a journal. Updating it...", noteSelected);
|
||||||
fullPath = updateJournal(fullPath, noteSelected, timeFormat, journalWasUpdated,
|
fullPath = updateJournal(fullPath, noteSelected, timeFormat, journalWasUpdated, returnNoteSelection,
|
||||||
shouldDebug); // we return the path. As if it is a divided journal we
|
shouldDebug); // we return the path. As if it is a divided journal we
|
||||||
// must point to the correct entry
|
// must point to the correct entry
|
||||||
}
|
}
|
||||||
if (newLineOnOpening) {
|
if (!*returnNoteSelection) { // if we don't need to return to the note selection
|
||||||
if (*journalWasUpdated) {
|
if (newLineOnOpening) {
|
||||||
appendToFile(fullPath, " \n",
|
if (*journalWasUpdated) {
|
||||||
shouldDebug); // when updating the journal it adds a \n char at the
|
appendToFile(fullPath, " \n",
|
||||||
// end. So appendToFile(\n) does not work. We append a
|
shouldDebug); // when updating the journal it adds a \n char at the
|
||||||
// (special and rare) whitespace character + \n to
|
// end. So appendToFile(\n) does not work. We append a
|
||||||
// bypass this issue.
|
// (special and rare) whitespace character + \n to
|
||||||
|
// bypass this issue.
|
||||||
|
}
|
||||||
|
appendToFile(fullPath, "\n", shouldDebug);
|
||||||
}
|
}
|
||||||
appendToFile(fullPath, "\n", shouldDebug);
|
openEditor(fullPath, editorToOpen, shouldRender, shouldJumpToEnd, shouldDebug);
|
||||||
|
free(fullPath);
|
||||||
}
|
}
|
||||||
openEditor(fullPath, editorToOpen, shouldRender, shouldJumpToEnd, shouldDebug);
|
free(returnNoteSelection);
|
||||||
free(fullPath);
|
|
||||||
} else if (strcmp(noteSelected, "Create new note") == 0) {
|
} else if (strcmp(noteSelected, "Create new note") == 0) {
|
||||||
note_creation:
|
note_creation:
|
||||||
noteSelected = createNewNote(notesDirectoryString, vaultSelected, bypassSelectionNote, bypassSelectionNoteValue, journalRegex, shouldDebug);
|
noteSelected = createNewNote(notesDirectoryString, vaultSelected, bypassSelectionNote, bypassSelectionNoteValue, journalRegex, shouldDebug);
|
||||||
@@ -733,7 +743,7 @@ backup_config_end:
|
|||||||
const char *yesNo[] = {"No, go back to note selection.", "Yes."};
|
const char *yesNo[] = {"No, go back to note selection.", "Yes."};
|
||||||
char *answer = ncursesSelect((char **)yesNo,
|
char *answer = ncursesSelect((char **)yesNo,
|
||||||
"Are you sure you want to delete the entire vault? This can "
|
"Are you sure you want to delete the entire vault? This can "
|
||||||
"not be undone (Use arrows or WASD, Enter to select):",
|
"not be undone (Use arrows or WASD, Enter to select or use 1-9 to quick select):",
|
||||||
1, 1, " ", "", "", shouldDebug);
|
1, 1, " ", "", "", shouldDebug);
|
||||||
debug("You answered: %s for deleting the vault %s", answer, vaultSelected);
|
debug("You answered: %s for deleting the vault %s", answer, vaultSelected);
|
||||||
if (strcmp(answer, "Yes.") == 0) {
|
if (strcmp(answer, "Yes.") == 0) {
|
||||||
|
|||||||
+10
-6
@@ -188,7 +188,7 @@ char **getVaultsFromDirectories(char **directoryStringArray, int directoryNumber
|
|||||||
return vaultsArray;
|
return vaultsArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *updateJournal(char *path, char *journal, char *timeFormat, int *journalWasUpdated, int shouldDebug) {
|
char *updateJournal(char *path, char *journal, char *timeFormat, int *journalWasUpdated, int *returnNoteSelection, int shouldDebug) {
|
||||||
path[PATH_MAX] = '\0'; // it assures it is a string (Most cases this does nothing). But rewriting at least
|
path[PATH_MAX] = '\0'; // it assures it is a string (Most cases this does nothing). But rewriting at least
|
||||||
// one bytes make the compile happy. He doesn't want to return an unchanged input.
|
// one bytes make the compile happy. He doesn't want to return an unchanged input.
|
||||||
debug("Handling the journal %s", path);
|
debug("Handling the journal %s", path);
|
||||||
@@ -221,13 +221,14 @@ char *updateJournal(char *path, char *journal, char *timeFormat, int *journalWas
|
|||||||
that the Create new entry in journal is on top entryArray = realloc(entryArray,
|
that the Create new entry in journal is on top entryArray = realloc(entryArray,
|
||||||
sizeof(char*));*/
|
sizeof(char*));*/
|
||||||
// simpler to just malloc 2 and later realloc
|
// simpler to just malloc 2 and later realloc
|
||||||
const int extraOptions = 3;
|
const int extraOptions = 4;
|
||||||
char **entryArray = malloc(extraOptions * sizeof(char *));
|
char **entryArray = malloc(extraOptions * sizeof(char *));
|
||||||
char *createEntryMessage = malloc(PATH_MAX);
|
char *createEntryMessage = malloc(PATH_MAX);
|
||||||
snprintf(createEntryMessage, PATH_MAX, "Create new entry for the journal %s", journal);
|
snprintf(createEntryMessage, PATH_MAX, "Create new entry for the journal %s", journal);
|
||||||
entryArray[0] = createEntryMessage;
|
entryArray[0] = createEntryMessage;
|
||||||
entryArray[1] = "Open random entry";
|
entryArray[1] = "Open random entry";
|
||||||
entryArray[2] = "Search inside entries";
|
entryArray[2] = "Search inside entries";
|
||||||
|
entryArray[3] = "Return to the note selection";
|
||||||
int entryCount = extraOptions; // we need to count how many dirs there is to always readjust
|
int entryCount = extraOptions; // we need to count how many dirs there is to always readjust
|
||||||
// how many memory we alloc
|
// how many memory we alloc
|
||||||
// Refer https://pubs.opengroup.org/onlinepubs/7990989775/xsh/readdir.html
|
// Refer https://pubs.opengroup.org/onlinepubs/7990989775/xsh/readdir.html
|
||||||
@@ -259,10 +260,11 @@ char *updateJournal(char *path, char *journal, char *timeFormat, int *journalWas
|
|||||||
// element
|
// element
|
||||||
|
|
||||||
// we must now select to create new entry or to enter in old one
|
// we must now select to create new entry or to enter in old one
|
||||||
char *selectedOption = ncursesSelect(entryArray, "Create new entry or acces old entry (Use arrows or WASD, Enter to select):", extraOptions, entryCount - extraOptions, " ", " ", "",
|
char *selectedOption =
|
||||||
shouldDebug); // the "Create new entry for the journal %s" will be the only options. All
|
ncursesSelect(entryArray, "Create new entry or acces old entry (Use arrows or WASD, Enter to select or use 1-9 to quick select):", extraOptions, entryCount - extraOptions, " ", " ", "",
|
||||||
// other will be extraOptions. This is made so that "Create [...] %s" will
|
shouldDebug); // the "Create new entry for the journal %s" will be the only options. All
|
||||||
// always be on top
|
// other will be extraOptions. This is made so that "Create [...] %s" will
|
||||||
|
// always be on top
|
||||||
debug("Selected option from journal entry selection: %s", selectedOption);
|
debug("Selected option from journal entry selection: %s", selectedOption);
|
||||||
if (strcmp(selectedOption, createEntryMessage) == 0) { // create new entry
|
if (strcmp(selectedOption, createEntryMessage) == 0) { // create new entry
|
||||||
char temp[PATH_MAX];
|
char temp[PATH_MAX];
|
||||||
@@ -301,6 +303,8 @@ char *updateJournal(char *path, char *journal, char *timeFormat, int *journalWas
|
|||||||
snprintf(selectedOption, PATH_MAX, "%s/%s", path, temp);
|
snprintf(selectedOption, PATH_MAX, "%s/%s", path, temp);
|
||||||
path = strdup(selectedOption);
|
path = strdup(selectedOption);
|
||||||
free(selectedOption);
|
free(selectedOption);
|
||||||
|
} else if (strcmp(selectedOption, "Return to the note selection") == 0) {
|
||||||
|
*returnNoteSelection = 1;
|
||||||
} else { // we just recreate the path to the selected entry
|
} else { // we just recreate the path to the selected entry
|
||||||
// snprintf does not like to have the same variable as input and output so we use a
|
// snprintf does not like to have the same variable as input and output so we use a
|
||||||
// buffer
|
// buffer
|
||||||
|
|||||||
+2
-1
@@ -25,6 +25,7 @@ char **getVaultsFromDirectories(char **directoryStringArray, int directoryNumber
|
|||||||
// handles both type of journal (divided and unified).
|
// handles both type of journal (divided and unified).
|
||||||
// creates new entry with date.
|
// creates new entry with date.
|
||||||
// for divided select if we want to acces to a new entry or a old one.
|
// for divided select if we want to acces to a new entry or a old one.
|
||||||
|
// returnNoteSelection tells us if the user wants to go back to the note selection.
|
||||||
// returns the path to the file that needs to be opened.
|
// returns the path to the file that needs to be opened.
|
||||||
char *updateJournal(char *path, char *journal, char *timeFormat, int *journalWasUpdated, int shouldDebug);
|
char *updateJournal(char *path, char *journal, char *timeFormat, int *journalWasUpdated, int *returnNoteSelection, int shouldDebug);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ void createNewVault(char **directoriesArray, int directoryCount, char **vaultsAr
|
|||||||
int emptyWarning = 0; // set to 1 later if inpted empty name
|
int emptyWarning = 0; // set to 1 later if inpted empty name
|
||||||
input_screen:
|
input_screen:
|
||||||
// choose in which directory the vault will be created
|
// choose in which directory the vault will be created
|
||||||
char *dirToVault = ncursesSelect(directoriesArray, "Select a directory, in which the vault will remain (Use arrows or WASD, Enter to select)", directoryCount, 0, "", "", " ", shouldDebug);
|
char *dirToVault =
|
||||||
|
ncursesSelect(directoriesArray, "Select a directory, in which the vault will remain (Use arrows or WASD, Enter to select or use 1-9 to quick select)", directoryCount, 0, "", "", " ", shouldDebug);
|
||||||
char *vaultName = malloc(PATH_MAX);
|
char *vaultName = malloc(PATH_MAX);
|
||||||
if (!bypass) { // if won't bypass (if -v or --vault weren't set)
|
if (!bypass) { // if won't bypass (if -v or --vault weren't set)
|
||||||
echo();
|
echo();
|
||||||
@@ -309,6 +310,69 @@ char *ncursesSelect(char **options, char *optionsText, int optionsNumber, int ex
|
|||||||
highlight = 0;
|
highlight = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case '1':
|
||||||
|
if (optionsNumber + extraOptionsNumber >= 1) {
|
||||||
|
debug("Quickselected option 1.");
|
||||||
|
highlight = 0;
|
||||||
|
goto end_loop;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
if (optionsNumber + extraOptionsNumber >= 1) {
|
||||||
|
debug("Quickselected option 2.");
|
||||||
|
highlight = 1;
|
||||||
|
goto end_loop;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
if (optionsNumber + extraOptionsNumber >= 1) {
|
||||||
|
debug("Quickselected option 3.");
|
||||||
|
highlight = 2;
|
||||||
|
goto end_loop;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
if (optionsNumber + extraOptionsNumber >= 1) {
|
||||||
|
debug("Quickselected option 4.");
|
||||||
|
highlight = 3;
|
||||||
|
goto end_loop;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '5':
|
||||||
|
if (optionsNumber + extraOptionsNumber >= 1) {
|
||||||
|
debug("Quickselected option 5.");
|
||||||
|
highlight = 4;
|
||||||
|
goto end_loop;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '6':
|
||||||
|
if (optionsNumber + extraOptionsNumber >= 1) {
|
||||||
|
debug("Quickselected option 6.");
|
||||||
|
highlight = 5;
|
||||||
|
goto end_loop;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '7':
|
||||||
|
if (optionsNumber + extraOptionsNumber >= 1) {
|
||||||
|
debug("Quickselected option 7.");
|
||||||
|
highlight = 6;
|
||||||
|
goto end_loop;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '8':
|
||||||
|
if (optionsNumber + extraOptionsNumber >= 1) {
|
||||||
|
debug("Quickselected option 8.");
|
||||||
|
highlight = 7;
|
||||||
|
goto end_loop;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '9':
|
||||||
|
if (optionsNumber + extraOptionsNumber >= 1) {
|
||||||
|
debug("Quickselected option 9.");
|
||||||
|
highlight = 8;
|
||||||
|
goto end_loop;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 10: //\n
|
case 10: //\n
|
||||||
goto end_loop;
|
goto end_loop;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user