summaryrefslogtreecommitdiff
path: root/save.pl~
diff options
context:
space:
mode:
Diffstat (limited to 'save.pl~')
-rw-r--r--save.pl~36
1 files changed, 23 insertions, 13 deletions
diff --git a/save.pl~ b/save.pl~
index 7fe2a02..ad99f3c 100644
--- a/save.pl~
+++ b/save.pl~
@@ -2,12 +2,22 @@
:- consult(library(pce)).
:- consult(library(process)).
-:- pce_global(@dialog, new(dialog('Save'))).
+:- pce_begin_class(save_dialog, dialog).
+
+unlink(D) :->
+ shell("git reset"),
+ send_super(D, unlink).
+
+:- pce_end_class(save_dialog).
+
+:- pce_global(@dialog, new(save_dialog('Save'))).
:- pce_global(@files, new(chain)).
:- pce_global(@editor, new(editor)).
+:- pce_global(@browser, new(browser)).
:- pce_global(@save_button,
new(button(save,
- message(@prolog, save)))).
+ message(@prolog, save),
+ RET))).
main :-
pce_main_loop(main).
@@ -28,9 +38,8 @@ added(0) :-
%send(@pce, load_defaults, 'Defaults'),
% File browser.
- status(@files),
- send(new(B, browser), right, @dialog),
- send(B, members(@files)),
+ send(@browser, right, @dialog),
+ refresh,
% Input fields.
send(@dialog, append, text('Commit message (optional):',
@@ -38,13 +47,14 @@ added(0) :-
bold)),
send(@dialog, append, @editor),
send(@dialog, append, @save_button),
- send(@dialog, append, button(cancel,
- and(message(@prolog, reset),
- message(@dialog, destroy)))),
+ send(@dialog, append, button(refresh,
+ and(message(@prolog, refresh)))),
send(@dialog, open).
-reset :-
- shell("git reset").
+refresh :-
+ send(@files, clear),
+ status(@files),
+ send(@browser, members(@files)).
status(C) :-
setup_call_cleanup(
@@ -62,12 +72,12 @@ read_to_chain(S, C) :-
read_to_chain(S, C)
).
-save(Editor, Chain) :-
- get(Editor?text_buffer, contents, S),
+save :-
+ get(@editor?text_buffer, contents, S),
send(S, strip),
get(S, value, Msg),
( Msg == ''
- -> chain_atom(Chain, A),
+ -> chain_atom(@files, A),
commit(A)
; commit(Msg)
).