annotate foosdk/sdk/libPPUI/InPlaceEditTable.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #include <memory>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 #include "InPlaceEdit.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 namespace InPlaceEdit {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 class NOVTABLE CTableEditHelperV2 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 virtual RECT TableEdit_GetItemRect(t_size item, t_size subItem) const = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 virtual void TableEdit_GetField(t_size item, t_size subItem, pfc::string_base & out, t_size & lineCount) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 virtual void TableEdit_SetField(t_size item, t_size subItem, const char * value) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 virtual HWND TableEdit_GetParentWnd() const = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 virtual bool TableEdit_Advance(t_size & item, t_size & subItem, t_uint32 whathappened);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 virtual bool TableEdit_CanAdvanceHere(size_t item, size_t subItem, uint32_t whatHappened) const { (void)item; (void)subItem; (void)whatHappened; return true; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 virtual void TableEdit_Finished() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 virtual t_size TableEdit_GetItemCount() const = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 virtual t_size TableEdit_GetColumnCount() const = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 virtual void TableEdit_SetItemFocus(t_size item, t_size subItem) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 virtual bool TableEdit_IsColumnEditable(t_size subItem) const { (void)subItem; return true; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 virtual void TableEdit_GetColumnOrder(t_size * out, t_size count) const { order_helper::g_fill(out, count); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 virtual t_uint32 TableEdit_GetEditFlags(t_size item, t_size subItem) const { (void)item; (void)subItem; return 0; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 virtual bool TableEdit_GetDarkMode() const { return false; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 virtual bool TableEdit_GetAutoComplete(t_size item, t_size subItem, pfc::com_ptr_t<IUnknown>& out) { (void)item; (void)subItem; (void)out; return false; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 struct autoComplete_t {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 pfc::com_ptr_t<IUnknown> data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 enum { // ACO_* equivalents
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 optsNone = 0,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 optsDefault = 1,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 optsAutoSuggest = 1,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 optsAutoAppend = 3,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 DWORD options = optsNone;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 virtual autoComplete_t TableEdit_GetAutoCompleteEx( size_t item, size_t sub );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 struct combo_t {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 unsigned iDefault = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 pfc::string_list_impl strings;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 virtual combo_t TableEdit_GetCombo(size_t item, size_t sub);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 HWND TableEdit_Start(t_size item, t_size subItem);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 void TableEdit_Abort(bool forwardContent);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 bool TableEdit_IsActive() const { return !!m_taskKill; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 protected:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 ~CTableEditHelperV2() { tableEdit_cancel_task(); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 CTableEditHelperV2() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 void tableEdit_on_task_completion(unsigned p_status);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 reply_t tableEdit_create_task();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 bool tableEdit_cancel_task();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 t_size ColumnToPosition(t_size col) const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 t_size PositionToColumn(t_size pos) const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 t_size EditableColumnCount() const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 void GrabColumnOrder(pfc::array_t<t_size> & buffer) const { buffer.set_size(TableEdit_GetColumnCount()); TableEdit_GetColumnOrder(buffer.get_ptr(), buffer.get_size()); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 HWND _ReStart();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 t_size m_editItem = SIZE_MAX, m_editSubItem = SIZE_MAX;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 t_uint32 m_editFlags = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 pfc::rcptr_t<pfc::string8> m_editData;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 std::shared_ptr< combo_t > m_editDataCombo;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 std::shared_ptr<bool> m_taskKill;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 CTableEditHelperV2( const CTableEditHelperV2 & ) = delete;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 void operator=( const CTableEditHelperV2 & ) = delete;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 class NOVTABLE CTableEditHelperV2_ListView : public CTableEditHelperV2 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 RECT TableEdit_GetItemRect(t_size item, t_size subItem) const override;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 void TableEdit_GetField(t_size item, t_size subItem, pfc::string_base & out, t_size & lineCount) override;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 void TableEdit_SetField(t_size item, t_size subItem, const char * value) override;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 t_size TableEdit_GetColumnCount() const override;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 t_size TableEdit_GetItemCount() const override;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 void TableEdit_SetItemFocus(t_size item, t_size subItem) override;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 void TableEdit_GetColumnOrder(t_size * out, t_size count) const override;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 }