1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-06-30 06:29:32 +00:00
Commit Graph

25 Commits

Author SHA1 Message Date
Andy McFadden
99b484df4c Implement long-comment editing
We can now Edit Long Comment and Edit Header Comment.

Changing the number of lines in a long comment exposed a bug in the
display list update.  Fixed.

Running the WinForms version trashed the column widths, which exposed
the fact that the default column widths were set too narrow.  Fixed.

On an unrelated note, hitting undo/redo quickly will sometimes leave
you scrolled to the bottom of the code list.  Some sort of command-
handling race in the WPF framework?  (Not fixed.)
2019-07-07 16:18:46 -07:00
Andy McFadden
1685e37c02 Implement "go to" feature 2019-07-07 14:30:38 -07:00
Andy McFadden
779566c236 Implement Find / Find Next
Also, tweaked Edit Label a bit.  I figured out how to make the
TextBox SelectAll+Focus work when the text is bound to a property.
2019-07-07 13:34:47 -07:00
Andy McFadden
741f7ef46a Implement Edit Label
The dialog is pretty straightforward.  This is the first editor that
can cause a partial update -- if you edit a label, only the lines
that refer to that label are regenerated -- so I added the code for
partial display list updates as well.

Also, while working on this I noticed that long comments were getting
ellipsized at a bad place.  The column width for the semi-hidden
column used for notes and long comments wasn't getting set.  After
fiddling with it a bit I determined that it really needed to be set to
the sum of the widths of the rightmost four columns, and updated
whenever column sizes change.  This was easier to do than I expected.
I may actually be getting the hang of WPF.
2019-07-06 17:24:42 -07:00
Andy McFadden
33c4b86b44 Implement "about" dialog 2019-07-06 15:51:57 -07:00
Andy McFadden
83fe70535b Port source generation test harness
I haven't figured out how to make the AppendText(text, color) extension
work right with the WPF version of RichTextBox, but I was able to work
around the issue, and it's not really worth sinking time into.
2019-07-06 14:20:51 -07:00
Andy McFadden
3cc4307484 Implement second project properties tab ("Project Symbols")
Implemented the symbol list, and the Edit Symbol dialog.
2019-07-05 14:53:45 -07:00
Andy McFadden
758d95e331 Rough project properties layout 2019-07-01 14:07:30 -07:00
Andy McFadden
c13daa7085 Implemented the first ("Code View") tab of settings
Notable items include the column show/hide buttons, which were
straightforward except for the "determine the default width" part,
and the font picker, which is no longer a standard dialog.  The
latter was complicated by the absence of a good way to detect
whether a font is mono-spaced or not without calling back into code
meant for WinForms font manipulation (with a dash of PInvoke).
Yay WPF.

Also, enabled character ellipsis for code list items.
2019-06-26 17:11:58 -07:00
Andy McFadden
0a96e014e2 Layout for app settings
Multi-tab dialog with tons of controls.

Also, fixed WorkProgress owner, and removed debug delay from source
gen dialog.
2019-06-24 17:32:53 -07:00
Andy McFadden
8d8112f5c9 Finish generate/assemble dialog
Added the progress dialog as a relatively generic thing (it was
implemented as a pair of dialogs in the WinForms version, for no
very good reason).  Generation and assembler execution works.
2019-06-24 14:41:08 -07:00
Andy McFadden
985eba804b First pass at Generate & Assemble dialog
Got the basic parts laid out and working, but it depends on the
progress dialogs to do actual work.
2019-06-23 17:24:51 -07:00
Andy McFadden
b91124999a Implement "new project"
WPF TreeViews are much different from WinForms.  Unexpectedly, they're
actually simpler and easier to work with.
2019-06-22 17:38:07 -07:00
Andy McFadden
007bf4e934 Rename ProjWin directory to WpfGui
"ProjWin" didn't really mean anything.  "WpfGui" emphasizes that
the contents are a WPF implementation of the GUI elements.

No substantive changes.
2019-06-21 15:17:04 -07:00
Andy McFadden
fdf53bdb34 Add status flag editing
Getting the layout just right got a little wordy in XAML.  There's
probably a way to make a Grid do what I want.  This'll do for now.

Also, fixed the labels on the buttons in DiscardChanges, which were
reversed.
2019-06-21 15:06:04 -07:00
Andy McFadden
61ecb28d60 Add Edit Address
Pretty simple dialog, but it took a while to figure out the best
way to deal with input validation.  Works from the various menus as
well as double-clicking on .ORG and address column entries.

Also, moved some stuff around to places that made more sense.
2019-06-16 16:40:08 -07:00
Andy McFadden
41b6a97408 Populate toolbar icons
Extract some XAML icons from the VS2017 Image Library.  There's no
particular reason to prefer XAML over PNG, but somehow it feels
more forward-compatible.  (OTOH, defining images as ControlTemplate
instances is just weird.  Yay WPF.)
2019-06-11 14:38:08 -07:00
Andy McFadden
558f1e4350 Wire up selection tracking
Renamed VirtualListViewSelection to DisplayListSelection, because
it's now tied to the DisplayList implementation.  Hooked it up to
handle SelectionChanged events.

Also, tweaked the code list item style to remove the one-pixel gap
between items.  Somehow I manage to click on the dead zone with
surprising regularity.
2019-06-07 17:25:04 -07:00
Andy McFadden
499d3478ba Add multi-key combo handling for hints
Doesn't work 100% correctly -- in some cases, using two different
combos in quick succession will fail -- but it's close.

Added stub methods for the four hint operations.
2019-06-04 16:10:55 -07:00
Andy McFadden
17af7efbbb Show formatted data in the code list
The disassembled lines are now shown in the custom-styled list view.
The DisplayList isn't being kept up to date on edits, but since we
can't edit anything yet that's not too limiting.

Pulled more code over, including the mostly-GUI-agnostic bits of the
source generation and assembler execution code.
2019-05-27 18:52:25 -07:00
Andy McFadden
c4a056bd0a Merge ListView style from DisasmUiTest project
Long comments and notes now occupy the correct columns.
2019-05-23 13:38:41 -07:00
Andy McFadden
f3f4c44633 Refactor DisplayList to support data virtualization
In WinForms, if you want a virtual ListView, you set the "virtual"
property and define a couple of callbacks.  In WPF, there are
separate notions of "UI virtualization" and "data virtualization".
The former is done automatically (usually) by the ListView.  The
latter requires creating an implementation of IList, and relies on
behavior that I'm having trouble finding in official documentation.
Yay WPF.

This splits the source-generation stuff out into DisplayListGen,
leaving DisplayList as a list of stuff to display that can be bound
to WPF as a ListView ItemsSource.  The DisplayList instance will have
a hook back into DisplayListGen to perform the on-demand string
rendering.  (For now it's just generating test patterns.)
2019-05-11 10:16:54 -07:00
Andy McFadden
ce27ae720e Port project loader code
Created a file to hold the non-WPF parts of ProjectView.cs.
Pulled some code related to project loading into it.  Created a few
related dialogs.
2019-05-05 16:50:28 -07:00
Andy McFadden
575f834b1d Copy some non-UI code over
Mostly a straight copy & paste of the files.  The only significant
change was to move the localizable strings from Properties/Resources
(RESX) to Res/Strings.xaml (Resource Dictionary).  I expect a
number of strings will no longer be needed, since WPF lets you put
more of the UI/UX logic into the design side.

I also renamed the namespace to SourceGenWPF, and put the app icon
into the Res directory so it can be a resource rather than a loose
file.  I'm merging the "Setup" directory contents into the main app
since there wasn't a whole lot going on there.

The WPF Color class lacks conversions to/from a 32-bit integer, so
I added those.

None of the stuff is wired up yet.
2019-05-02 15:45:40 -07:00
Andy McFadden
8ceae370cc Add WPF app skeleton
Just some XAML for the main work area.
2019-04-29 16:34:09 -07:00