Skip to content

Commit 0c42de2

Browse files
committed
Fully integrate history with programmer mode
1 parent 771dd6f commit 0c42de2

14 files changed

+59
-21
lines changed

data/ui/calculus_display.blp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ template $PebblesCalculusDisplay: $PebblesDisplay {
6060
ScrolledWindow viewport {
6161
propagate-natural-height: false;
6262
vexpand: true;
63-
window-placement: bottom_left;
6463
min-content-height: 100;
6564

6665
layout {

data/ui/programmer_display.blp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,6 @@ template $PebblesProgrammerDisplay: $PebblesDisplay {
223223
propagate-natural-height: false;
224224
vexpand: true;
225225
hexpand: true;
226-
window-placement: bottom_left;
227226
min-content-height: 100;
228227

229228
layout {
@@ -240,9 +239,9 @@ template $PebblesProgrammerDisplay: $PebblesDisplay {
240239
$PebblesHistoryDisplay history_display {
241240
context: bind template.context;
242241
viewport: viewport;
243-
visible: false;
244-
// inserted => $insert_from_history();
245-
// recalled => $recall_history();
242+
243+
inserted => $insert_from_history();
244+
recalled => $recall_history();
246245
}
247246

248247
Label main_label {

data/ui/programmer_view.blp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ template $PebblesProgrammerView: $PebblesView {
501501
column: 4;
502502
}
503503

504-
// clicked => $on_click_eval();
504+
clicked => $on_click_eval();
505505
}
506506
}
507507
};
@@ -876,7 +876,7 @@ template $PebblesProgrammerView: $PebblesView {
876876
column: 2;
877877
}
878878

879-
// clicked => $on_click_eval();
879+
clicked => $on_click_eval();
880880
}
881881

882882
$PebblesButton collapse_fx_button {

data/ui/scientific_display.blp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ template $PebblesScientificDisplay: $PebblesDisplay {
6060
ScrolledWindow viewport {
6161
propagate-natural-height: false;
6262
vexpand: true;
63-
window-placement: bottom_left;
6463
min-content-height: 100;
6564

6665
layout {

data/ui/statistics_display.blp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ template $PebblesStatisticsDisplay: $PebblesDisplay {
128128
has-frame: false;
129129
hexpand: true;
130130
vexpand: true;
131-
window-placement: bottom_left;
132131
min-content-height: 100;
133132
width-request: 140;
134133

src/core/programmer_calculator.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def __init__(self, memory: ContextualMemory):
4040
self.stored_tokens: list[_ProgToken] = [
4141
_ProgToken("0", ProgrammersCalculator.TOKEN_TYPE_OPERAND, Pebbles.NumberSystem.DECIMAL)
4242
]
43+
self.input_exp = ''
4344

4445

4546
def get_last_token(self):
@@ -67,6 +68,7 @@ def set_last_token(self, arr:list[bool], wrd_length:Pebbles.GlobalWordLength, nu
6768

6869
def populate_token_array(self, exp: str, number_system:Pebbles.NumberSystem):
6970
_stored_tokens = Tokenizer.get_token_array (exp, number_system)
71+
self.input_exp = exp
7072
self.stored_tokens = [_ProgToken(x['token'], x['type'], x['numberSystem']) for x in _stored_tokens]
7173

7274

@@ -78,6 +80,7 @@ def set_number_system(self,
7880
) -> str:
7981
# Tokenize the current expression regardless of the stored tokens.
8082
token_structure = Tokenizer.get_token_array(exp, number_system)
83+
self.input_exp = exp
8184

8285
# For every token in stored_tokens, if it is an operand and its current number system
8386
# is different from the required number system, perform conversion.
@@ -598,11 +601,10 @@ def evaluate(self, number_system: Pebbles.NumberSystem, wrd_length: Pebbles.Glob
598601

599602
if gen_hist:
600603
token_list = [token.token for token in self.stored_tokens]
601-
expression = " ".join(token_list)
602604
self.memory.push_history(
603605
self.MODE,
604-
expression,
605-
formatted_answer,
606+
self.input_exp,
607+
Utils.remove_leading_zeroes(formatted_answer),
606608
{
607609
'metadata_1': number_system,
608610
'metadata_2': wrd_length

src/shell/MainWindow.vala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -753,6 +753,9 @@ namespace Pebbles {
753753
case Context.CALCULUS:
754754
calculus_view.show_history (_history);
755755
break;
756+
case Context.PROGRAMMER:
757+
programmer_view.show_history (_history);
758+
break;
756759
}
757760
}
758761

src/shell/main_window.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,21 @@ def _history_view_cb(self, _, context:str):
151151
format_func=ScientificCalculator.format,
152152
context=context
153153
), context)
154+
elif context == Pebbles.Context.PROGRAMMER:
155+
self.show_history(self._memory.get_views(
156+
format_func=None,
157+
context=context
158+
), context)
154159

155160

156161
def _history_insert_cb(self, _, item_id:int):
157162
item = self._memory.get_history_by_id(item_id)
158163
context = item.get_context()
159164
result = item.get_result()
160-
if context in [Pebbles.Context.SCIENTIFIC, Pebbles.Context.STATISTICS]:
165+
if context in [Pebbles.Context.SCIENTIFIC, Pebbles.Context.STATISTICS, Pebbles.Context.CALCULUS]:
161166
return ScientificCalculator.format(result)
167+
elif context == Pebbles.Context.PROGRAMMER:
168+
return result
162169
return ''
163170

164171

src/shell/views/ProgrammerView.vala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,10 @@ namespace Pebbles {
128128
display.show_result (result);
129129
}
130130

131+
public void show_history (HistoryModel[] history) {
132+
display.show_history (history);
133+
}
134+
131135
// Updated set_keypad_mode to use hex keypad button references
132136
private void set_keypad_mode (int mode) {
133137
seven_button.set_sensitive (true);
@@ -194,6 +198,11 @@ namespace Pebbles {
194198
display.write (shift_button.active ? btn.name.up () : btn.name);
195199
}
196200

201+
[GtkCallback]
202+
public void on_click_eval () {
203+
display.input ();
204+
}
205+
197206
public void open_bit_grid () {
198207
programmer_stack.set_visible_child (bit_grid);
199208
}

src/shell/widgets/displays/CalculusDisplay.vala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,7 @@ namespace Pebbles {
134134

135135
[GtkCallback]
136136
protected void insert_from_history (string? text) {
137-
focused_entry.set_text (focused_entry.get_text () + text);
138-
focused_entry.set_position ((int) focused_entry.text_length);
137+
write (text);
139138
}
140139

141140
[GtkCallback]

0 commit comments

Comments
 (0)