Come posso fare in modo che Notepad ++ utilizzi i file “.txt” come filtro predefinito per la finestra di dialogo per i file aperti?


6

Quando vado ad aprire i file in NPP, i tipi di file sono impostati su "tutti i tipi ( . )".

Come posso impostare questo valore predefinito su ".txt"?

Potrebbe essere una cosa di Windows, dal momento che sono sicuro che utilizza solo la finestra di dialogo di apertura del file di Windows predefinita, ma altri programmi (blocco di testo, blocco note) sono in grado di predefinirlo.


È certamente possibile per un programmatore codificare, ma non c'è modo di cambiare l'impostazione una volta che è lì.
soandos,

Risposte:


4

Ho appena finito di rivedere il codice sorgente NPP e ho ulteriori dettagli se desideri cercare una soluzione per te stesso. Quando vai su File -> Apri, l'elenco delle estensioni di file viene caricato dal file Scintilla (SciLexer.dll).

Ora, quando vai su File -> Apri, la void Notepad_plus::fileOpen()funzione viene chiamata (nel NppIO.cppfile). Inizialmente, il All Types, *.*filtro viene aggiunto all'elenco filtri, quindi int Notepad_plus::setFileOpenSaveDlgFilters(FileDialog & fDlg, int langType)viene chiamata la funzione (nello stesso file). Questa funzione passa attraverso le voci di Scintilla che ho menzionato sopra e le aggiunge FileDialogall'elenco dei filtri passati . Il codice in FileOpenè simile al seguente:

fDlg.setExtFilter(TEXT("All types"), TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);

È possibile modificare l'indice del filtro predefinito. Per fare ciò, puoi invece cambiare quelle righe in questo:

fDlg._ofn.nFilterIndex = 2L;
fDlg.setExtFilter(TEXT("All types"), TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);

Ciò dovrebbe impostare l'indice del filtro sul secondo per impostazione predefinita.


Un altro modo semplice per risolvere rapidamente questo problema è modificare quelle righe (di nuovo, in NppIO.cpp) in modo che appaiano così:

fDlg.setExtFilter(TEXT("Text files"), TEXT(".txt"),
                  TEXT("All types"),  TEXT(".*"), NULL);
setFileOpenSaveDlgFilters(fDlg);

Ciò garantirà che i file di testo siano il primo filtro nell'elenco. Nota che questo farà sì che l'estensione .txt sia doppiamente definita nelle voci, ma se puoi vivere con quell'avvertimento, questo dovrebbe funzionare bene.


bene, è per un programmatore. hai un modo per cambiarlo direttamente sui binari (in un manuale, modificando con l'editor esadecimale, o in modo automatico, applicando una patch) o qualche versione modificata che ha questa modifica?
Kokbira,

Ho appena provato a modificare in modo esadecimale il file binario, ma poiché il filtro iniziale è definito solo come .*, non posso inserire alcun carattere aggiuntivo ( posso , tuttavia, cambiare i caratteri esistenti). Ne esaminerò di più, ma per ora penso che sarebbe più facile ricompilarlo.
Breakthrough

1

È certamente possibile per un programmatore programmare, ma non c'è modo di cambiare l'impostazione una volta che è lì.


1
NPP è open source. Puoi sempre apportare la modifica tu stesso e ricompilare!
Andrew Lambert,

a quel punto è un problema di codifica, e non per SU.
soandos,

Potrei, è probabilmente una soluzione banale (anche se ci vorrebbe un po 'per trovarlo.) Naturalmente, non sarei sicuro che i miei plugin funzionerebbero ancora nel modo in cui li voglio, e sarebbe un po' un modo rotatorio per fare qualcosa che c'è una possibilità è in realtà già esposto come impostazione in qualche modo.
corsiKa,

1
Direi che si potrebbe implementare come caratteristica (basta cambiare il valore dell'indice di filtro), ma così com'è, non è uno. Detto questo, se vuoi sapere come cambiarlo, fammi sapere e lo posterò come risposta. Se hai apportato la modifica e l' hai ricompilata da solo, i tuoi plugin funzionerebbero comunque bene (e compilare NPP è facile poiché non ci sono dipendenze aggiuntive, è tutto C ++ con STL).
Breakthrough

1
@TotalFrickinRockstarFromMars - è improbabile che si rompa qualsiasi plug-in. Tutto quello che stanno facendo è chiamare la finestra di dialogo File comune in Win32. L'estensione txt è già lì, quindi è solo una questione di impostare il numero di indice.
surfasb,

0

Per impostazione predefinita, non è possibile modificare quella "funzione" in modo normale.

Una soluzione è quella di modificare i file binari del programma, apportando alcune modifiche al codice (se il codice è aperto e si è autorizzati a farlo) e ricompilarlo per generare un altro programma binario o "hackerare" il file binario modificando alcuni file con un editor esadecimale o una patch già creata. Un'altra soluzione è in qualche modo modificare le finestre di dialogo predefinite dei file di Windows.

Puoi provare quel software, che dovrebbe usare la seconda soluzione: File-Ex

Con ciò, puoi aggiungere alcune funzionalità per aprire e salvare le finestre di dialogo e ricordare il filtro scelto. Provalo e pubblica se ha funzionato per te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.