Skip to content

Commit 524d271

Browse files
committed
Feature: Display GPT token count in file preview panel.
1 parent 899f5a0 commit 524d271

File tree

2 files changed

+56
-34
lines changed

2 files changed

+56
-34
lines changed

CodeIngest.Desktop/MainViewModel.cs

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,15 @@ public int? PreviewFileCount
151151
public long? PreviewFileSize
152152
{
153153
get => m_previewFileSize;
154-
set => SetField(ref m_previewFileSize, value);
154+
set
155+
{
156+
if (SetField(ref m_previewFileSize, value))
157+
OnPropertyChanged(nameof(PreviewTokenCount));
158+
}
155159
}
156160

161+
public int PreviewTokenCount => (int)((PreviewFileSize ?? 0) / 3.8);
162+
157163
public bool IsGeneratingPreview
158164
{
159165
get => m_isGeneratingPreview;
@@ -243,47 +249,51 @@ private IngestOptions GetIngestOptions()
243249
private void OnFolderSelectionChanged(object sender, EventArgs e) =>
244250
InvalidatePreviewStats();
245251

246-
private void InvalidatePreviewStats() =>
252+
private void InvalidatePreviewStats()
253+
{
254+
IsGeneratingPreview = true;
255+
PreviewFileCount = null;
256+
PreviewFileSize = null;
247257
m_folderSelectionConsolidator.Invoke();
258+
}
248259

249260
private void RefreshPredictedSize()
250261
{
251-
m_backgroundRefreshProgress?.Cancel();
252-
253-
var selectedFolders = Root.GetSelectedItems().ToArray();
254-
if (selectedFolders.Length == 0)
262+
try
255263
{
256-
PreviewFileCount = 0;
257-
PreviewFileSize = 0;
258-
return; // Nothing to do.
259-
}
264+
m_backgroundRefreshProgress?.Cancel();
260265

261-
var options = GetIngestOptions();
262-
if (options.FilePatterns.Count == 0)
263-
{
264-
PreviewFileCount = 0;
265-
PreviewFileSize = 0;
266-
return; // Nothing search.
267-
}
266+
var selectedFolders = Root.GetSelectedItems().ToArray();
267+
if (selectedFolders.Length == 0)
268+
{
269+
PreviewFileCount = 0;
270+
PreviewFileSize = 0;
271+
return; // Nothing to do.
272+
}
268273

269-
var ingester = new Ingester(options);
270-
m_backgroundRefreshProgress = new ProgressToken(true);
274+
var options = GetIngestOptions();
275+
if (options.FilePatterns.Count == 0)
276+
{
277+
PreviewFileCount = 0;
278+
PreviewFileSize = 0;
279+
return; // Nothing search.
280+
}
271281

272-
Task.Run(() =>
273-
{
274-
IsGeneratingPreview = true;
275-
try
282+
var ingester = new Ingester(options);
283+
m_backgroundRefreshProgress = new ProgressToken(isCancelSupported: true);
284+
285+
Task.Run(() =>
276286
{
277287
var result = ingester.Run(selectedFolders, progress: m_backgroundRefreshProgress);
278288
if (!result.HasValue || m_backgroundRefreshProgress.CancelRequested)
279289
return;
280290
PreviewFileCount = result.Value.FileCount;
281291
PreviewFileSize = result.Value.OutputBytes;
282-
}
283-
finally
284-
{
285-
IsGeneratingPreview = false;
286-
}
287-
});
292+
});
293+
}
294+
finally
295+
{
296+
IsGeneratingPreview = false;
297+
}
288298
}
289299
}

CodeIngest.Desktop/Views/MainWindow.axaml

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,22 +49,33 @@
4949
</Style>
5050
</Border.Styles>
5151

52-
<Grid RowDefinitions="Auto,Auto" ColumnDefinitions="Auto,*,Auto"
52+
<Grid RowDefinitions="Auto,Auto" ColumnDefinitions="Auto,Auto,24,Auto,Auto,*,Auto"
5353
Margin="4">
5454
<TextBlock Grid.Column="0" Grid.Row="0" Text="Source files:"/>
5555
<TextBlock Grid.Column="1" Grid.Row="0" Text="N/A"
56-
IsVisible="{Binding PreviewFileCount, Converter={x:Static ObjectConverters.IsNull}}"/>
57-
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding PreviewFileCount, StringFormat=N0}"
58-
IsVisible="{Binding PreviewFileCount, Converter={x:Static ObjectConverters.IsNotNull}}"/>
56+
IsVisible="{Binding PreviewFileCount, Converter={x:Static ObjectConverters.IsNull}}"
57+
MinWidth="80" />
58+
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding PreviewFileCount, StringFormat=N0}"
59+
IsVisible="{Binding PreviewFileCount, Converter={x:Static ObjectConverters.IsNotNull}}"
60+
MinWidth="80" />
5961

6062
<TextBlock Grid.Column="0" Grid.Row="1" Text="Output size:"/>
6163
<TextBlock Grid.Column="1" Grid.Row="1" Text="N/A"
6264
IsVisible="{Binding PreviewFileSize, Converter={x:Static ObjectConverters.IsNull}}"/>
6365
<TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding PreviewFileSize, Converter={StaticResource BytesToUiStringConverter}}"
6466
IsVisible="{Binding PreviewFileSize, Converter={x:Static ObjectConverters.IsNotNull}}"/>
6567

68+
<TextBlock Grid.Column="3" Grid.Row="0" Text="GPT Context Usage:"/>
69+
<TextBlock Grid.Column="4" Grid.Row="0" Text="N/A"
70+
IsVisible="{Binding PreviewFileSize, Converter={x:Static ObjectConverters.IsNull}}" />
71+
<StackPanel Grid.Column="4" Grid.Row="0" Orientation="Horizontal"
72+
IsVisible="{Binding PreviewFileSize, Converter={x:Static ObjectConverters.IsNotNull}}">
73+
<TextBlock Text="{Binding PreviewTokenCount, StringFormat=N0}"/>
74+
<TextBlock Text="tokens"/>
75+
</StackPanel>
76+
6677
<!-- ReSharper disable once Xaml.StyleClassNotFound -->
67-
<ProgressBar Grid.Column="2" Grid.Row="0" Grid.RowSpan="2"
78+
<ProgressBar Grid.Column="6" Grid.Row="0" Grid.RowSpan="2"
6879
Classes="circular" IsIndeterminate="True"
6980
VerticalAlignment="Center"
7081
Width="36" Height="36" Margin="8,0"
@@ -73,6 +84,7 @@
7384
</Border>
7485
</Grid>
7586

87+
<!-- Language/selection options -->
7688
<Grid Grid.Column="1" Margin="0,8,8,8"
7789
RowDefinitions="Auto,Auto,*">
7890
<Button Command="{Binding SelectRoot}">

0 commit comments

Comments
 (0)