Giter Club home page Giter Club logo

outspline's Introduction

logo

Outspline is a modular outliner mainly intended to serve as a base for addons that extend its functionality. Its most important addon, developed in this very repository, is Organism, which adds advanced time management features, turning the application into a personal organizer.

Read the Wiki in order to get started. If you are trying to install Outspline, do not simply try to run src/setup.py after cloning this repository, since a special release procedure is required to prepare Outspline packages for installation. Please follow Getting started instead in order to use the official packages already released on SourceForge.

See also the website and the project page on SourceForge.

Outspline is distributed under the terms of the GNU General Public License v3.0 (see LICENSE).

outspline's People

Contributors

kynikos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

outspline's Issues

Update databases

Permettere di aggiornare i database quando si aggiornano gli addon
Creare dei convertitori per database creati con differenti
configurazioni dei plugin
Nel dialog di errore per database incompatibili, mostrare quali sono gli
addon da attivare/disattivare per poter aprire il database senza
aggiornarlo alla nuova configurazione
Nel controllo delle dipendenze bisognerebbe verificare anche la
compatibilita' tra le versioni degli addon
Also update History table, probably requires #164

Automate RELEASE procedures

Penso che la maggior parte delle operazioni in RELEASE si possano
automatizzare
Bisognerebbe trovare il modo di non duplicare, tra i vari componenti, le
funzioni ripetute dei setup.py

Automatic item selection

Dopo aver eliminato o tagliato delle item, selezionare quella sotto
(o sopra?) la selezione?
Dopo aver incollato delle item, selezionarle?

Scheduler: "until next task" duration

Scheduler: Potrei anche mettere la durata automatica "fino
all'inizio del task successivo (evita accavallamenti)"
non so quanto sarebbe utile, forse si potrebbe unire con i task senza
durata

Database menu deactivates

Aprire un database; cliccare sulla tab del notebook corrispondente
(senza trascinare): il menu Database si disattiva
Molto probabilmente succede perché in menu.update_menus() io richiedo che
il focus sia sulla splitter window, e quindi cliccando sulla tab il focus
viene considerato esterno

Dynamic text wrap

Calcolare dinamicamente il wrap del testo in
plugins.wxalarms._init_widgets() in base a quanto e' larga la finestra?

Plugin organisation

Organizzazione plugin (copiare da qualche parte queste regole):
components: ...
core: moduli principali, dipendono solo da coreaux e/o tra loro
coreaux: ...
extensions: estensioni del core, ognuna dipendente solo da coreaux e/o core
e/o tra loro, possono scrivere il database
interfaces: interfacce utente, ognuna dipendente solo da coreaux e/o core
e/o modules, non possono scrivere il database
plugins: estensioni generiche, possono dipendere da coreaux e/o core e/o
modules e/o interfaces e/o tra loro, non possono scrivere il
database

Tasklist: show last n minutes

Tasklist: Invece di usare come mint il tempo attuale, dovrei
lasciare almeno gli ultimi n minuti passati
Se uso un mint diverso dal tempo attuale, non ha piu' senso associare il
refresh della tasklist all'alarms_event
Forse e' meglio refresharla ogni n minuti con un Timer apposito
Altrimenti potrei cercare il valore minimo ottenuto da get_occurrences
e programmare il prossimo refresh con quel valore
Se il programma e' minimizzato nella tray non bisogna refreshare la
tasklist (ma quindi bisogna refresharla quando si ripristina la
finestra)
Usare un evento della tray icon

Separate table for history groups

Use a separate table for history groups: this would allow avoiding to update all the group indices with the history clean function when closing the database, also exploiting the normal PRIMARY KEY increment/"wrap" [http://www.sqlite.org/autoinc.html#Background].
It would also avoid the duplication of status and descriptions.

Include the logging module?

Includere il modulo logging di Python per intero in maniera da
scongiurare la possibilità che un futuro upgrade di Python renda Organism
inutilizzabile fino al suo seguente aggiornamento?

core_api: query template?

core_api: invece di dare direttamente la connessione con
get_connection() e get_memory_connection(), creare un piccolo template per
fare una query?
Eliminare anche give_memory_connection() e give_memory_connection()
Il problema e' che peggioro le prestazioni nei cicli, infatti dopo ad ogni
ciclo faccio implicitamente get e give

Tree: popup menu on blank space

Database tree: Riuscire a mostrare il menu popup anche sugli
spazi bianchi?
Al momento sarebbe gia' abilitato per mostrare create sibling e paste
siblings

Show detailed info

Show more detailed info with "organism --about"?
Otherwise use a separate --info flag?
For example show what's currently displayed by wxgui.about

Avoid extending wx classes?

Evitare di estendere le classi di wx, in maniera da poter passare
le relative istanze tramite le api senza passare anche i metodi specifici
di Organism?
Evitare di passare direttamente gli oggetti tramite l'api (ad esempio con
get_active_database())?
Creare nell'api degli oggetti mirror degli oggetti dell'interfaccia?
Potrei mettere gli oggetti utili nella classe GUI in maniera che siano
reperibili con wx.GetApp()
Potrei cosi' documentare quali sono i nomi supportati e sconsigliare
un uso diverso da quello documentato

Usage of API functions

Avvisare di usare le funzioni dell'API che ritornano direttamente gli oggetti (come quella che ritorna rootw) solo per usarli come parents per widgets

Encryption

Allow encrypting either the data in the database, e.g. the item texts, the rules etc., or the whole database file, but in this case note that SQLite writes temporary files in the file system anyway, so full-file encryption may be pointless.
See also https://www.zetetic.net/sqlcipher/design

Importing logger and Event

Documentare che si puo' importare logger e Event con
from core_api import
Effettivamente pero' e' incoerente, fare una funzione get_logger()?

Exploit search_alarms start and end data

Organizer: Ora search_alarms mi ritorna un dizionario con anche i
prossimi start e end
Potrei sfruttarlo per attivare notifiche per gli start e gli end, oppure
veri e propri alarm in cui l'analogo di Snooze potrebbe essere Delay
per gli start e Extend per gli end
Questo comportamento dovrebbe essere opzionale

About dialog: link color is lost

About window: al momento, a causa dei wx.TextAttr, i link
ipertestuali perdono il colore blu
See also how URLs are instead correctly highlighted in the text editor despite setting the font there too

Plugin coding style

Documentare che i plugin devono usare solamente le funzioni dell'API, che saranno mantenute ufficialmente per supportare cambiamenti nel codice del core

Uncaught exception dialog

Migliorare il dialog che mostra l'uncaught exception
Richiedere all'utente di inviare il log o l'output per email
Mostrare la versione e altre informazioni

Create/Paste item/sibling(s)

Al momento Create item e Paste items sono rispettivamente
Create sibling e Paste siblings nel menu contestuale del tree
Forse sarebbe meglio se cambiassero dinamicamente
Cambiare anche dinamicamente tra singolare e plurale nelle voci del menu
che hanno questo problema

Add more context menus

Add more context menus:

  • Tasklist item:
    • Find item in tree
    • Open in editor
    • Snooze (if active alarm, provide way to set snooze time)
    • Dismiss (if active alarm)
  • Tasklist tab:
    • Snooze all
    • Dismiss all
  • Editor tab:
    • Find item in tree
    • Apply
    • Close
  • Database tab:
    • Save
    • Close

Also consider adding the same menus to the menu bar.

See also #42

Show accelerator key combinations

Bisogna trovare il modo di mostrare la combinazione di tasti degli
acceleratori nel menu senza che queste si settino automaticamente come
acceleratori funzionanti in tutta la finestra
http://trac.wxwidgets.org/ticket/13667
Dato che la feature request non verra' implementata, forse distruggere completamente i menu Database e Editor e ricrearli quando necessario, invece di semplicemente disabilitare le voci, darebbe il risultato voluto
In alternative potrei riprovare a
settare delle combinazioni di tasti che non creino problemi, e in piu'
lasciare quelle comode come Enter o Canc
Un'altra alternativa potrei provare a fare in modo che sì la funzione associata
ad una combinazione di tasti sia una sola, ma questa possa capire se è
selezionato il tree o un editor ed eseguire la giusta azione
Un'altra alternativa sarebbe rifare tutta l'interfaccia in GTK+ 3 e quindi
usare GtkAccelLabel

Clean history: alternative query

a causa del fatto che quando pulisco la history devo cancellare le
relative occorrenze, devo prima trovare tutti gli id della history da
cancellare
se non dovessi fare cio', con la seguente query pulirei la history piu'
velocemente:
history_delete_select = ('DELETE FROM History '
'WHERE H_status IN (1, 3, 5) '
'AND H_group NOT IN '
'(SELECT DISTINCT H_group FROM History '
'WHERE H_status IN (1, 3, 5) '
'ORDER BY H_group DESC LIMIT ?)')

Original main icon

Usare un'icona principale originale
Al momento sto usando apps/text-editor del tema GTK
vedi wxgui.rootw, wxgui.about, wxtrayicon
setup.py sarebbe gia' predisposto per usare files/organism.svg
Nel codice poi bisognerebbe usare wx.ArtProvider.GetIcon('organism'...)
Per farla da me potrei prendere qualche parte dal tema Meliae SVG:
actions/48/media-optical-data-new
apps/48/accessories-text-editor
apps/48/evolution-tasks
apps/48/preferences-certificates
apps/48/stock_todo
Altrimenti chiedere collaborazione a qualche artista interessato
http://openclipart.org/
http://clipartist.net/
http://i.istockimg.com/file_thumbview_approve/13532155/2/stock-illustration-13532155-bacteria-flu-virus-bug-cartoon-illustration.jpg
http://www.colouringbook.org/art/svg/coloring-book/funny-red-bacteria-october-2011-openclipart-org-commons-wikimedia-org-colouring-book-coloring-book-colouringbook-org-svg-scalable-vector-graphics/
http://clipartist.net/svg/bad-bacteria-scalable-vector-graphics-svg-october-2011-openclipart-org-commons-wikimedia-org/

Database properties

Proprietà di un database
dal menu File o cliccando col tasto dx sul database
oppure in un pannello nascondibile come lo scheduler di un'item
chiedere se memorizzare la history (n giorni, o gli ultimi n comandi)

Scheduler: cascading rules

Scheduler: Avvisare che le regole sono calcolate a cascata
nell'ordine di visualizzazione, partendo dall'alto

Menu configuration

Document how to customize the index of plugin menu entries

Try to make the addons smart enough to place their menu entries in a good place

See also #151

wxWidgets: notebook tabs dragging bug

C'e' un bug nel sistema per muovere le tab:

  • spostare una tab
  • provare a selezionare la tab con cui si e' scambiata di posto: e' impossibile, bisogna o ricliccare la tab spostata (che effettivamente ha gia' il focus), oppure selezionare prima una eventuale terza tab

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.