summaryrefslogtreecommitdiff
path: root/save.pl
diff options
context:
space:
mode:
Diffstat (limited to 'save.pl')
-rw-r--r--save.pl30
1 files changed, 20 insertions, 10 deletions
diff --git a/save.pl b/save.pl
index 00cc42a..a793e06 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(