mirror of https://gitlab.com/nakst/essence
replace EsListViewSetColumns
This commit is contained in:
parent
128022faa4
commit
a4374b3aa5
|
@ -41,14 +41,9 @@ const char *errorTypeStrings[] = {
|
||||||
|
|
||||||
#include "string.cpp"
|
#include "string.cpp"
|
||||||
|
|
||||||
EsListViewColumn folderOutputColumns[] = {
|
|
||||||
#define COLUMN_NAME (0)
|
#define COLUMN_NAME (0)
|
||||||
{ INTERFACE_STRING(FileManagerColumnName), ES_LIST_VIEW_COLUMN_HAS_MENU },
|
|
||||||
#define COLUMN_TYPE (1)
|
#define COLUMN_TYPE (1)
|
||||||
{ INTERFACE_STRING(FileManagerColumnType), ES_LIST_VIEW_COLUMN_HAS_MENU },
|
|
||||||
#define COLUMN_SIZE (2)
|
#define COLUMN_SIZE (2)
|
||||||
{ INTERFACE_STRING(FileManagerColumnSize), ES_LIST_VIEW_COLUMN_HAS_MENU | ES_TEXT_H_RIGHT },
|
|
||||||
};
|
|
||||||
|
|
||||||
#define LOAD_FOLDER_BACK (1)
|
#define LOAD_FOLDER_BACK (1)
|
||||||
#define LOAD_FOLDER_FORWARD (2)
|
#define LOAD_FOLDER_FORWARD (2)
|
||||||
|
|
|
@ -167,24 +167,16 @@ bool InstanceLoadFolder(Instance *instance, String path /* takes ownership */, i
|
||||||
}
|
}
|
||||||
|
|
||||||
void InstanceRefreshViewType(Instance *instance) {
|
void InstanceRefreshViewType(Instance *instance) {
|
||||||
|
EsCommandSetCheck(&instance->commandViewDetails, instance->viewSettings.viewType == VIEW_DETAILS ? ES_CHECK_CHECKED : ES_CHECK_UNCHECKED, false);
|
||||||
|
EsCommandSetCheck(&instance->commandViewTiles, instance->viewSettings.viewType == VIEW_TILES ? ES_CHECK_CHECKED : ES_CHECK_UNCHECKED, false);
|
||||||
|
EsCommandSetCheck(&instance->commandViewThumbnails, instance->viewSettings.viewType == VIEW_THUMBNAILS ? ES_CHECK_CHECKED : ES_CHECK_UNCHECKED, false);
|
||||||
|
|
||||||
if (instance->viewSettings.viewType == VIEW_DETAILS) {
|
if (instance->viewSettings.viewType == VIEW_DETAILS) {
|
||||||
EsCommandSetCheck(&instance->commandViewDetails, ES_CHECK_CHECKED, false);
|
|
||||||
EsCommandSetCheck(&instance->commandViewTiles, ES_CHECK_UNCHECKED, false);
|
|
||||||
EsCommandSetCheck(&instance->commandViewThumbnails, ES_CHECK_UNCHECKED, false);
|
|
||||||
|
|
||||||
EsListViewChangeStyles(instance->list, &styleFolderView, ES_STYLE_LIST_ITEM, nullptr, nullptr, ES_LIST_VIEW_COLUMNS, ES_LIST_VIEW_TILED);
|
EsListViewChangeStyles(instance->list, &styleFolderView, ES_STYLE_LIST_ITEM, nullptr, nullptr, ES_LIST_VIEW_COLUMNS, ES_LIST_VIEW_TILED);
|
||||||
EsListViewSetColumns(instance->list, folderOutputColumns, sizeof(folderOutputColumns) / sizeof(folderOutputColumns[0]));
|
EsListViewAddAllColumns(instance->list);
|
||||||
} else if (instance->viewSettings.viewType == VIEW_TILES) {
|
} else if (instance->viewSettings.viewType == VIEW_TILES) {
|
||||||
EsCommandSetCheck(&instance->commandViewTiles, ES_CHECK_CHECKED, false);
|
|
||||||
EsCommandSetCheck(&instance->commandViewDetails, ES_CHECK_UNCHECKED, false);
|
|
||||||
EsCommandSetCheck(&instance->commandViewThumbnails, ES_CHECK_UNCHECKED, false);
|
|
||||||
|
|
||||||
EsListViewChangeStyles(instance->list, &styleFolderViewTiled, ES_STYLE_LIST_ITEM_TILE, nullptr, nullptr, ES_LIST_VIEW_TILED, ES_LIST_VIEW_COLUMNS);
|
EsListViewChangeStyles(instance->list, &styleFolderViewTiled, ES_STYLE_LIST_ITEM_TILE, nullptr, nullptr, ES_LIST_VIEW_TILED, ES_LIST_VIEW_COLUMNS);
|
||||||
} else if (instance->viewSettings.viewType == VIEW_THUMBNAILS) {
|
} else if (instance->viewSettings.viewType == VIEW_THUMBNAILS) {
|
||||||
EsCommandSetCheck(&instance->commandViewThumbnails, ES_CHECK_CHECKED, false);
|
|
||||||
EsCommandSetCheck(&instance->commandViewTiles, ES_CHECK_UNCHECKED, false);
|
|
||||||
EsCommandSetCheck(&instance->commandViewDetails, ES_CHECK_UNCHECKED, false);
|
|
||||||
|
|
||||||
EsListViewChangeStyles(instance->list, &styleFolderViewTiled, &styleFolderItemThumbnail, nullptr, nullptr, ES_LIST_VIEW_TILED, ES_LIST_VIEW_COLUMNS);
|
EsListViewChangeStyles(instance->list, &styleFolderViewTiled, &styleFolderItemThumbnail, nullptr, nullptr, ES_LIST_VIEW_TILED, ES_LIST_VIEW_COLUMNS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -738,7 +730,7 @@ int ListCallback(EsElement *element, EsMessage *message) {
|
||||||
EsCommandSetCallback(EsCommandByID(instance, ES_COMMAND_PASTE), nullptr);
|
EsCommandSetCallback(EsCommandByID(instance, ES_COMMAND_PASTE), nullptr);
|
||||||
return 0;
|
return 0;
|
||||||
} else if (message->type == ES_MSG_LIST_VIEW_GET_CONTENT) {
|
} else if (message->type == ES_MSG_LIST_VIEW_GET_CONTENT) {
|
||||||
int column = message->getContent.column, index = message->getContent.index;
|
int column = message->getContent.columnID, index = message->getContent.index;
|
||||||
EsAssert(index < (int) instance->listContents.Length() && index >= 0);
|
EsAssert(index < (int) instance->listContents.Length() && index >= 0);
|
||||||
ListEntry *listEntry = &instance->listContents[index];
|
ListEntry *listEntry = &instance->listContents[index];
|
||||||
FolderEntry *entry = listEntry->entry;
|
FolderEntry *entry = listEntry->entry;
|
||||||
|
@ -1084,7 +1076,10 @@ void InstanceCreateUI(Instance *instance) {
|
||||||
instance->list = EsListViewCreate(splitter, ES_CELL_FILL | ES_LIST_VIEW_COLUMNS | ES_LIST_VIEW_MULTI_SELECT, &styleFolderView);
|
instance->list = EsListViewCreate(splitter, ES_CELL_FILL | ES_LIST_VIEW_COLUMNS | ES_LIST_VIEW_MULTI_SELECT, &styleFolderView);
|
||||||
instance->list->accessKey = 'L';
|
instance->list->accessKey = 'L';
|
||||||
instance->list->messageUser = ListCallback;
|
instance->list->messageUser = ListCallback;
|
||||||
EsListViewSetColumns(instance->list, folderOutputColumns, sizeof(folderOutputColumns) / sizeof(folderOutputColumns[0]));
|
EsListViewRegisterColumn(instance->list, COLUMN_NAME, INTERFACE_STRING(FileManagerColumnName), ES_LIST_VIEW_COLUMN_HAS_MENU);
|
||||||
|
EsListViewRegisterColumn(instance->list, COLUMN_TYPE, INTERFACE_STRING(FileManagerColumnType), ES_LIST_VIEW_COLUMN_HAS_MENU);
|
||||||
|
EsListViewRegisterColumn(instance->list, COLUMN_SIZE, INTERFACE_STRING(FileManagerColumnSize), ES_LIST_VIEW_COLUMN_HAS_MENU | ES_TEXT_H_RIGHT);
|
||||||
|
EsListViewAddAllColumns(instance->list);
|
||||||
EsListViewInsertGroup(instance->list, 0);
|
EsListViewInsertGroup(instance->list, 0);
|
||||||
|
|
||||||
// Toolbar:
|
// Toolbar:
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
#include <essence.h>
|
#include <essence.h>
|
||||||
|
|
||||||
EsListViewColumn columns[] = {
|
|
||||||
// Title Flags Initial width
|
|
||||||
{ "Name", -1, ES_FLAGS_DEFAULT, 150 },
|
|
||||||
{ "Age", -1, ES_TEXT_H_RIGHT, 100 },
|
|
||||||
{ "Favorite color", -1, ES_DRAW_CONTENT_RICH_TEXT, 150 },
|
|
||||||
};
|
|
||||||
|
|
||||||
void AddPerson(EsListView *list, const char *name, int age, const char *favoriteColor) {
|
void AddPerson(EsListView *list, const char *name, int age, const char *favoriteColor) {
|
||||||
char ageString[16];
|
char ageString[16];
|
||||||
EsStringFormat(ageString, sizeof(ageString), "%d%c", age, 0);
|
EsStringFormat(ageString, sizeof(ageString), "%d%c", age, 0);
|
||||||
|
@ -26,7 +19,10 @@ void _start() {
|
||||||
EsInstance *instance = EsInstanceCreate(message, "List", -1);
|
EsInstance *instance = EsInstanceCreate(message, "List", -1);
|
||||||
EsPanel *wrapper = EsPanelCreate(instance->window, ES_CELL_FILL, ES_STYLE_PANEL_WINDOW_DIVIDER);
|
EsPanel *wrapper = EsPanelCreate(instance->window, ES_CELL_FILL, ES_STYLE_PANEL_WINDOW_DIVIDER);
|
||||||
EsListView *list = EsListViewCreate(wrapper, ES_CELL_FILL | ES_LIST_VIEW_COLUMNS | ES_LIST_VIEW_FIXED_ITEMS);
|
EsListView *list = EsListViewCreate(wrapper, ES_CELL_FILL | ES_LIST_VIEW_COLUMNS | ES_LIST_VIEW_FIXED_ITEMS);
|
||||||
EsListViewSetColumns(list, columns, sizeof(columns) / sizeof(columns[0]));
|
EsListViewRegisterColumn(list, 0, "Name", -1, ES_FLAGS_DEFAULT, 150);
|
||||||
|
EsListViewRegisterColumn(list, 1, "Age", -1, ES_TEXT_H_RIGHT, 100);
|
||||||
|
EsListViewRegisterColumn(list, 2, "Favorite color", -1, ES_DRAW_CONTENT_RICH_TEXT, 150);
|
||||||
|
EsListViewAddAllColumns(list);
|
||||||
AddPerson(list, "Alice", 20, "\a#e00]Red");
|
AddPerson(list, "Alice", 20, "\a#e00]Red");
|
||||||
AddPerson(list, "Bob", 30, "\a#080]Green");
|
AddPerson(list, "Bob", 30, "\a#080]Green");
|
||||||
AddPerson(list, "Cameron", 40, "\a#00f]Blue");
|
AddPerson(list, "Cameron", 40, "\a#00f]Blue");
|
||||||
|
|
|
@ -26,23 +26,6 @@ struct Instance : EsInstance {
|
||||||
#define DISPLAY_GENERAL_LOG (3)
|
#define DISPLAY_GENERAL_LOG (3)
|
||||||
#define DISPLAY_MEMORY (12)
|
#define DISPLAY_MEMORY (12)
|
||||||
|
|
||||||
EsListViewColumn listViewProcessesColumns[] = {
|
|
||||||
{ "Name", -1, 0, 150 },
|
|
||||||
{ "PID", -1, ES_TEXT_H_RIGHT, 120 },
|
|
||||||
{ "Memory", -1, ES_TEXT_H_RIGHT, 120 },
|
|
||||||
{ "CPU", -1, ES_TEXT_H_RIGHT, 120 },
|
|
||||||
{ "Handles", -1, ES_TEXT_H_RIGHT, 120 },
|
|
||||||
{ "Threads", -1, ES_TEXT_H_RIGHT, 120 },
|
|
||||||
};
|
|
||||||
|
|
||||||
EsListViewColumn listViewContextSwitchesColumns[] = {
|
|
||||||
{ "Time stamp (ms)", -1, ES_TEXT_H_RIGHT, 150 },
|
|
||||||
{ "CPU", -1, ES_TEXT_H_RIGHT, 150 },
|
|
||||||
{ "Process", -1, 0, 150 },
|
|
||||||
{ "Thread", -1, 0, 150 },
|
|
||||||
{ "Count", -1, 0, 150 },
|
|
||||||
};
|
|
||||||
|
|
||||||
const EsStyle styleMonospacedTextbox = {
|
const EsStyle styleMonospacedTextbox = {
|
||||||
.inherit = ES_STYLE_TEXTBOX_NO_BORDER,
|
.inherit = ES_STYLE_TEXTBOX_NO_BORDER,
|
||||||
|
|
||||||
|
@ -323,7 +306,7 @@ void UpdateDisplay(Instance *instance, int index) {
|
||||||
|
|
||||||
int ListViewProcessesCallback(EsElement *element, EsMessage *message) {
|
int ListViewProcessesCallback(EsElement *element, EsMessage *message) {
|
||||||
if (message->type == ES_MSG_LIST_VIEW_GET_CONTENT) {
|
if (message->type == ES_MSG_LIST_VIEW_GET_CONTENT) {
|
||||||
int column = message->getContent.column, index = message->getContent.index;
|
int column = message->getContent.columnID, index = message->getContent.index;
|
||||||
ProcessItem *item = &processes[index];
|
ProcessItem *item = &processes[index];
|
||||||
if (column == 0) GET_CONTENT("%s", item->data.nameBytes, item->data.name);
|
if (column == 0) GET_CONTENT("%s", item->data.nameBytes, item->data.name);
|
||||||
else if (column == 1) { if (item->data.pid == -1) GET_CONTENT("n/a"); else GET_CONTENT("%d", item->data.pid); }
|
else if (column == 1) { if (item->data.pid == -1) GET_CONTENT("n/a"); else GET_CONTENT("%d", item->data.pid); }
|
||||||
|
@ -357,13 +340,6 @@ void AddTab(EsElement *toolbar, uintptr_t index, const char *label, bool asDefau
|
||||||
if (asDefault) EsButtonSetCheck(button, ES_CHECK_CHECKED);
|
if (asDefault) EsButtonSetCheck(button, ES_CHECK_CHECKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddListView(EsListView **pointer, EsElement *switcher, EsUICallback callback, EsListViewColumn *columns, size_t columnsSize, uint64_t additionalFlags) {
|
|
||||||
*pointer = EsListViewCreate(switcher, ES_CELL_FILL | ES_LIST_VIEW_COLUMNS | additionalFlags);
|
|
||||||
(*pointer)->messageUser = callback;
|
|
||||||
EsListViewSetColumns(*pointer, columns, columnsSize / sizeof(EsListViewColumn));
|
|
||||||
EsListViewInsertGroup(*pointer, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TerminateProcess(Instance *instance, EsElement *, EsCommand *) {
|
void TerminateProcess(Instance *instance, EsElement *, EsCommand *) {
|
||||||
if (selectedPID == 0 /* Kernel */) {
|
if (selectedPID == 0 /* Kernel */) {
|
||||||
// Terminating the kernel process is a meaningless action; the closest equivalent is shutting down.
|
// Terminating the kernel process is a meaningless action; the closest equivalent is shutting down.
|
||||||
|
@ -394,8 +370,16 @@ void ProcessApplicationMessage(EsMessage *message) {
|
||||||
|
|
||||||
instance->textboxGeneralLog = EsTextboxCreate(switcher, ES_TEXTBOX_MULTILINE | ES_CELL_FILL | ES_ELEMENT_DISABLED, &styleMonospacedTextbox);
|
instance->textboxGeneralLog = EsTextboxCreate(switcher, ES_TEXTBOX_MULTILINE | ES_CELL_FILL | ES_ELEMENT_DISABLED, &styleMonospacedTextbox);
|
||||||
|
|
||||||
AddListView(&instance->listViewProcesses, switcher, ListViewProcessesCallback,
|
instance->listViewProcesses = EsListViewCreate(switcher, ES_CELL_FILL | ES_LIST_VIEW_COLUMNS | ES_LIST_VIEW_SINGLE_SELECT);
|
||||||
listViewProcessesColumns, sizeof(listViewProcessesColumns), ES_LIST_VIEW_SINGLE_SELECT);
|
instance->listViewProcesses->messageUser = ListViewProcessesCallback;
|
||||||
|
EsListViewRegisterColumn(instance->listViewProcesses, 0, "Name", -1, 0, 150);
|
||||||
|
EsListViewRegisterColumn(instance->listViewProcesses, 1, "PID", -1, ES_TEXT_H_RIGHT, 120);
|
||||||
|
EsListViewRegisterColumn(instance->listViewProcesses, 2, "Memory", -1, ES_TEXT_H_RIGHT, 120);
|
||||||
|
EsListViewRegisterColumn(instance->listViewProcesses, 3, "CPU", -1, ES_TEXT_H_RIGHT, 120);
|
||||||
|
EsListViewRegisterColumn(instance->listViewProcesses, 4, "Handles", -1, ES_TEXT_H_RIGHT, 120);
|
||||||
|
EsListViewRegisterColumn(instance->listViewProcesses, 5, "Threads", -1, ES_TEXT_H_RIGHT, 120);
|
||||||
|
EsListViewAddAllColumns(instance->listViewProcesses);
|
||||||
|
EsListViewInsertGroup(instance->listViewProcesses, 0);
|
||||||
|
|
||||||
instance->panelMemoryStatistics = EsPanelCreate(switcher,
|
instance->panelMemoryStatistics = EsPanelCreate(switcher,
|
||||||
ES_CELL_FILL | ES_PANEL_TABLE | ES_PANEL_HORIZONTAL | ES_PANEL_V_SCROLL_AUTO, &stylePanelMemoryStatistics);
|
ES_CELL_FILL | ES_PANEL_TABLE | ES_PANEL_HORIZONTAL | ES_PANEL_V_SCROLL_AUTO, &stylePanelMemoryStatistics);
|
||||||
|
|
|
@ -7559,12 +7559,6 @@ struct InspectorWindow : EsInstance {
|
||||||
EsTextbox *textboxCategoryFilter;
|
EsTextbox *textboxCategoryFilter;
|
||||||
};
|
};
|
||||||
|
|
||||||
EsListViewColumn inspectorElementListColumns[] = {
|
|
||||||
{ "Name", -1, 0, 300 },
|
|
||||||
{ "Bounds", -1, 0, 200 },
|
|
||||||
{ "Information", -1, 0, 200 },
|
|
||||||
};
|
|
||||||
|
|
||||||
int InspectorElementItemCallback(EsElement *element, EsMessage *message) {
|
int InspectorElementItemCallback(EsElement *element, EsMessage *message) {
|
||||||
InspectorWindow *inspector = (InspectorWindow *) element->instance;
|
InspectorWindow *inspector = (InspectorWindow *) element->instance;
|
||||||
|
|
||||||
|
@ -7670,7 +7664,7 @@ int InspectorElementListCallback(EsElement *element, EsMessage *message) {
|
||||||
InspectorWindow *inspector = (InspectorWindow *) element->instance;
|
InspectorWindow *inspector = (InspectorWindow *) element->instance;
|
||||||
|
|
||||||
if (message->type == ES_MSG_LIST_VIEW_GET_CONTENT) {
|
if (message->type == ES_MSG_LIST_VIEW_GET_CONTENT) {
|
||||||
int column = message->getContent.column, index = message->getContent.index;
|
int column = message->getContent.columnID, index = message->getContent.index;
|
||||||
EsAssert(index >= 0 && index < (int) inspector->elements.Length());
|
EsAssert(index >= 0 && index < (int) inspector->elements.Length());
|
||||||
InspectorElementEntry *entry = &inspector->elements[index];
|
InspectorElementEntry *entry = &inspector->elements[index];
|
||||||
|
|
||||||
|
@ -8047,7 +8041,10 @@ void InspectorSetup(EsWindow *window) {
|
||||||
|
|
||||||
inspector->elementList = EsListViewCreate(panel1, ES_CELL_FILL | ES_LIST_VIEW_COLUMNS | ES_LIST_VIEW_SINGLE_SELECT);
|
inspector->elementList = EsListViewCreate(panel1, ES_CELL_FILL | ES_LIST_VIEW_COLUMNS | ES_LIST_VIEW_SINGLE_SELECT);
|
||||||
inspector->elementList->messageUser = InspectorElementListCallback;
|
inspector->elementList->messageUser = InspectorElementListCallback;
|
||||||
EsListViewSetColumns(inspector->elementList, inspectorElementListColumns, sizeof(inspectorElementListColumns) / sizeof(EsListViewColumn));
|
EsListViewRegisterColumn(inspector->elementList, 0, "Name", -1, 0, 300);
|
||||||
|
EsListViewRegisterColumn(inspector->elementList, 1, "Bounds", -1, 0, 200);
|
||||||
|
EsListViewRegisterColumn(inspector->elementList, 2, "Information", -1, 0, 200);
|
||||||
|
EsListViewAddAllColumns(inspector->elementList);
|
||||||
EsListViewInsertGroup(inspector->elementList, 0);
|
EsListViewInsertGroup(inspector->elementList, 0);
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,11 +39,20 @@ struct ListViewFixedString {
|
||||||
|
|
||||||
struct ListViewFixedItem {
|
struct ListViewFixedItem {
|
||||||
ListViewFixedString firstColumn;
|
ListViewFixedString firstColumn;
|
||||||
|
// TODO Store the strings in an array per-ListViewColumn.
|
||||||
Array<ListViewFixedString> otherColumns;
|
Array<ListViewFixedString> otherColumns;
|
||||||
EsGeneric data;
|
EsGeneric data;
|
||||||
uint32_t iconID;
|
uint32_t iconID;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ListViewColumn {
|
||||||
|
char *title;
|
||||||
|
size_t titleBytes;
|
||||||
|
uint32_t id;
|
||||||
|
uint32_t flags;
|
||||||
|
double width;
|
||||||
|
};
|
||||||
|
|
||||||
int ListViewProcessItemMessage(EsElement *element, EsMessage *message);
|
int ListViewProcessItemMessage(EsElement *element, EsMessage *message);
|
||||||
|
|
||||||
struct EsListView : EsElement {
|
struct EsListView : EsElement {
|
||||||
|
@ -88,8 +97,8 @@ struct EsListView : EsElement {
|
||||||
size_t emptyMessageBytes;
|
size_t emptyMessageBytes;
|
||||||
|
|
||||||
EsElement *columnHeader;
|
EsElement *columnHeader;
|
||||||
EsListViewColumn *columns;
|
Array<ListViewColumn> registeredColumns;
|
||||||
size_t columnCount;
|
Array<uint32_t> activeColumns; // Indices into registeredColumns.
|
||||||
int columnResizingOriginalWidth;
|
int columnResizingOriginalWidth;
|
||||||
int64_t totalColumnWidth;
|
int64_t totalColumnWidth;
|
||||||
|
|
||||||
|
@ -685,7 +694,7 @@ struct EsListView : EsElement {
|
||||||
position += visibleItem->element->width;
|
position += visibleItem->element->width;
|
||||||
} else if ((flags & ES_LIST_VIEW_COLUMNS) && ((~flags & ES_LIST_VIEW_CHOICE_SELECT) || (this->scroll.enabled[0]))) {
|
} else if ((flags & ES_LIST_VIEW_COLUMNS) && ((~flags & ES_LIST_VIEW_CHOICE_SELECT) || (this->scroll.enabled[0]))) {
|
||||||
int indent = visibleItem->indent * style->gapWrap;
|
int indent = visibleItem->indent * style->gapWrap;
|
||||||
int firstColumn = columns[0].width * theming.scale + secondaryCellStyle->gapMajor;
|
int firstColumn = activeColumns.Length() ? (registeredColumns[activeColumns[0]].width * theming.scale + secondaryCellStyle->gapMajor) : 0;
|
||||||
visibleItem->startAtSecondColumn = indent > firstColumn;
|
visibleItem->startAtSecondColumn = indent > firstColumn;
|
||||||
if (indent > firstColumn) indent = firstColumn;
|
if (indent > firstColumn) indent = firstColumn;
|
||||||
visibleItem->element->InternalMove(totalColumnWidth - indent, visibleItem->size,
|
visibleItem->element->InternalMove(totalColumnWidth - indent, visibleItem->size,
|
||||||
|
@ -1174,12 +1183,12 @@ struct EsListView : EsElement {
|
||||||
if (flags & ES_LIST_VIEW_COLUMNS) {
|
if (flags & ES_LIST_VIEW_COLUMNS) {
|
||||||
EsRectangle bounds = EsRectangleAddBorder(element->GetBounds(), element->style->insets);
|
EsRectangle bounds = EsRectangleAddBorder(element->GetBounds(), element->style->insets);
|
||||||
|
|
||||||
for (uintptr_t i = item->startAtSecondColumn ? 1 : 0; i < columnCount; i++) {
|
for (uintptr_t i = item->startAtSecondColumn ? 1 : 0; i < activeColumns.Length(); i++) {
|
||||||
m.getContent.column = i;
|
m.getContent.columnID = registeredColumns[activeColumns[i]].id;
|
||||||
m.getContent.icon = 0;
|
m.getContent.icon = 0;
|
||||||
buffer.position = 0;
|
buffer.position = 0;
|
||||||
|
|
||||||
bounds.r = bounds.l + columns[i].width * theming.scale
|
bounds.r = bounds.l + registeredColumns[activeColumns[i]].width * theming.scale
|
||||||
- element->style->insets.r - element->style->insets.l;
|
- element->style->insets.r - element->style->insets.l;
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
|
@ -1195,10 +1204,10 @@ struct EsListView : EsElement {
|
||||||
UIStyle *style = useSelectedCellStyle ? selectedCellStyle : i ? secondaryCellStyle : primaryCellStyle;
|
UIStyle *style = useSelectedCellStyle ? selectedCellStyle : i ? secondaryCellStyle : primaryCellStyle;
|
||||||
style->PaintText(message->painter, element, bounds,
|
style->PaintText(message->painter, element, bounds,
|
||||||
(char *) _buffer, buffer.position, m.getContent.icon,
|
(char *) _buffer, buffer.position, m.getContent.icon,
|
||||||
columns[i].flags, i ? nullptr : &selection);
|
registeredColumns[activeColumns[i]].flags, i ? nullptr : &selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
bounds.l += columns[i].width * theming.scale + secondaryCellStyle->gapMajor;
|
bounds.l += registeredColumns[activeColumns[i]].width * theming.scale + secondaryCellStyle->gapMajor;
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
bounds.l -= item->indent * style->gapWrap;
|
bounds.l -= item->indent * style->gapWrap;
|
||||||
|
@ -1580,7 +1589,7 @@ struct EsListView : EsElement {
|
||||||
if (flags & ES_LIST_VIEW_COLUMNS) {
|
if (flags & ES_LIST_VIEW_COLUMNS) {
|
||||||
int offset = primaryCellStyle->metrics->iconSize + primaryCellStyle->gapMinor
|
int offset = primaryCellStyle->metrics->iconSize + primaryCellStyle->gapMinor
|
||||||
+ style->insets.l - inlineTextbox->style->insets.l;
|
+ style->insets.l - inlineTextbox->style->insets.l;
|
||||||
inlineTextbox->InternalMove(columns[0].width * theming.scale - offset, item->element->height,
|
inlineTextbox->InternalMove(registeredColumns[activeColumns[0]].width * theming.scale - offset, item->element->height,
|
||||||
item->element->offsetX + offset, item->element->offsetY);
|
item->element->offsetX + offset, item->element->offsetY);
|
||||||
} else if (flags & ES_LIST_VIEW_TILED) {
|
} else if (flags & ES_LIST_VIEW_TILED) {
|
||||||
if (style->metrics->layoutVertical) {
|
if (style->metrics->layoutVertical) {
|
||||||
|
@ -1669,6 +1678,10 @@ struct EsListView : EsElement {
|
||||||
visibleItems[i].element->Destroy();
|
visibleItems[i].element->Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (uintptr_t i = 0; i < registeredColumns.Length(); i++) {
|
||||||
|
EsHeapFree(registeredColumns[i].title);
|
||||||
|
}
|
||||||
|
|
||||||
for (uintptr_t i = 0; i < fixedItems.Length(); i++) {
|
for (uintptr_t i = 0; i < fixedItems.Length(); i++) {
|
||||||
for (uintptr_t j = 0; j < fixedItems[i].otherColumns.Length(); j++) {
|
for (uintptr_t j = 0; j < fixedItems[i].otherColumns.Length(); j++) {
|
||||||
EsHeapFree(fixedItems[i].otherColumns[j].string);
|
EsHeapFree(fixedItems[i].otherColumns[j].string);
|
||||||
|
@ -1685,6 +1698,8 @@ struct EsListView : EsElement {
|
||||||
fixedItems.Free();
|
fixedItems.Free();
|
||||||
visibleItems.Free();
|
visibleItems.Free();
|
||||||
groups.Free();
|
groups.Free();
|
||||||
|
activeColumns.Free();
|
||||||
|
registeredColumns.Free();
|
||||||
} else if (message->type == ES_MSG_KEY_UP) {
|
} else if (message->type == ES_MSG_KEY_UP) {
|
||||||
if (message->keyboard.scancode == ES_SCANCODE_LEFT_CTRL || message->keyboard.scancode == ES_SCANCODE_RIGHT_CTRL) {
|
if (message->keyboard.scancode == ES_SCANCODE_LEFT_CTRL || message->keyboard.scancode == ES_SCANCODE_RIGHT_CTRL) {
|
||||||
SelectPreview();
|
SelectPreview();
|
||||||
|
@ -1874,10 +1889,10 @@ struct EsListView : EsElement {
|
||||||
EsAssert(index < fixedItems.Length());
|
EsAssert(index < fixedItems.Length());
|
||||||
ListViewFixedString emptyString = {};
|
ListViewFixedString emptyString = {};
|
||||||
ListViewFixedItem *item = &fixedItems[index];
|
ListViewFixedItem *item = &fixedItems[index];
|
||||||
ListViewFixedString *string = message->getContent.column == 0 ? &item->firstColumn
|
ListViewFixedString *string = message->getContent.columnID == 0 ? &item->firstColumn
|
||||||
: message->getContent.column <= item->otherColumns.Length() ? &item->otherColumns[message->getContent.column - 1] : &emptyString;
|
: message->getContent.columnID <= item->otherColumns.Length() ? &item->otherColumns[message->getContent.columnID - 1] : &emptyString;
|
||||||
EsBufferFormat(message->getContent.buffer, "%s", string->bytes, string->string);
|
EsBufferFormat(message->getContent.buffer, "%s", string->bytes, string->string);
|
||||||
if (message->getContent.column == 0) message->getContent.icon = item->iconID;
|
if (!activeColumns.Length() || message->getContent.columnID == registeredColumns[activeColumns[0]].id) message->getContent.icon = item->iconID;
|
||||||
} else if (message->type == ES_MSG_LIST_VIEW_IS_SELECTED && (flags & ES_LIST_VIEW_FIXED_ITEMS)) {
|
} else if (message->type == ES_MSG_LIST_VIEW_IS_SELECTED && (flags & ES_LIST_VIEW_FIXED_ITEMS)) {
|
||||||
message->selectItem.isSelected = message->selectItem.index == fixedItemSelection;
|
message->selectItem.isSelected = message->selectItem.index == fixedItemSelection;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1900,11 +1915,30 @@ int ListViewProcessItemMessage(EsElement *_element, EsMessage *message) {
|
||||||
void ListViewCalculateTotalColumnWidth(EsListView *view) {
|
void ListViewCalculateTotalColumnWidth(EsListView *view) {
|
||||||
view->totalColumnWidth = -view->secondaryCellStyle->gapMajor;
|
view->totalColumnWidth = -view->secondaryCellStyle->gapMajor;
|
||||||
|
|
||||||
for (uintptr_t i = 0; i < view->columnCount; i++) {
|
for (uintptr_t i = 0; i < view->activeColumns.Length(); i++) {
|
||||||
view->totalColumnWidth += view->columns[i].width * theming.scale + view->secondaryCellStyle->gapMajor;
|
view->totalColumnWidth += view->registeredColumns[view->activeColumns[i]].width * theming.scale + view->secondaryCellStyle->gapMajor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ListViewColumnHeaderMessage(EsElement *element, EsMessage *message) {
|
||||||
|
EsListView *view = (EsListView *) element->userData.p;
|
||||||
|
|
||||||
|
if (message->type == ES_MSG_LAYOUT) {
|
||||||
|
int x = view->style->insets.l - view->scroll.position[0];
|
||||||
|
|
||||||
|
for (uintptr_t i = 0; i < element->children.Length(); i += 2) {
|
||||||
|
EsElement *item = element->children[i], *splitter = element->children[i + 1];
|
||||||
|
ListViewColumn *column = &view->registeredColumns[item->userData.u];
|
||||||
|
int splitterLeft = splitter->style->preferredWidth - view->secondaryCellStyle->gapMajor;
|
||||||
|
item->InternalMove(column->width * theming.scale - splitterLeft, element->height, x, 0);
|
||||||
|
splitter->InternalMove(splitter->style->preferredWidth, element->height, x + column->width * theming.scale - splitterLeft, 0);
|
||||||
|
x += column->width * theming.scale + view->secondaryCellStyle->gapMajor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void EsListViewChangeStyles(EsListView *view, const EsStyle *style, const EsStyle *itemStyle,
|
void EsListViewChangeStyles(EsListView *view, const EsStyle *style, const EsStyle *itemStyle,
|
||||||
const EsStyle *headerItemStyle, const EsStyle *footerItemStyle, uint32_t addFlags, uint32_t removeFlags) {
|
const EsStyle *headerItemStyle, const EsStyle *footerItemStyle, uint32_t addFlags, uint32_t removeFlags) {
|
||||||
// TODO Animating changes.
|
// TODO Animating changes.
|
||||||
|
@ -1938,29 +1972,11 @@ void EsListViewChangeStyles(EsListView *view, const EsStyle *style, const EsStyl
|
||||||
view->columnHeader = EsCustomElementCreate(view, ES_CELL_FILL, ES_STYLE_LIST_COLUMN_HEADER);
|
view->columnHeader = EsCustomElementCreate(view, ES_CELL_FILL, ES_STYLE_LIST_COLUMN_HEADER);
|
||||||
view->columnHeader->cName = "column header";
|
view->columnHeader->cName = "column header";
|
||||||
view->columnHeader->userData = view;
|
view->columnHeader->userData = view;
|
||||||
|
view->columnHeader->messageUser = ListViewColumnHeaderMessage;
|
||||||
view->columnHeader->messageUser = [] (EsElement *element, EsMessage *message) {
|
|
||||||
EsListView *view = (EsListView *) element->userData.p;
|
|
||||||
|
|
||||||
if (message->type == ES_MSG_LAYOUT) {
|
|
||||||
int x = view->style->insets.l - view->scroll.position[0];
|
|
||||||
|
|
||||||
for (uintptr_t i = 0; i < element->children.Length(); i += 2) {
|
|
||||||
EsElement *item = element->children[i], *splitter = element->children[i + 1];
|
|
||||||
EsListViewColumn *column = view->columns + item->userData.u;
|
|
||||||
int splitterLeft = splitter->style->preferredWidth - view->secondaryCellStyle->gapMajor;
|
|
||||||
item->InternalMove(column->width * theming.scale - splitterLeft, element->height, x, 0);
|
|
||||||
splitter->InternalMove(splitter->style->preferredWidth, element->height, x + column->width * theming.scale - splitterLeft, 0);
|
|
||||||
x += column->width * theming.scale + view->secondaryCellStyle->gapMajor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
view->scroll.fixedViewport[1] = view->columnHeader->style->preferredHeight;
|
view->scroll.fixedViewport[1] = view->columnHeader->style->preferredHeight;
|
||||||
} else if ((~view->flags & ES_LIST_VIEW_COLUMNS) && view->columnHeader) {
|
} else if ((~view->flags & ES_LIST_VIEW_COLUMNS) && view->columnHeader) {
|
||||||
EsElementDestroy(view->columnHeader);
|
EsElementDestroy(view->columnHeader);
|
||||||
|
view->activeColumns.Free();
|
||||||
view->columnHeader = nullptr;
|
view->columnHeader = nullptr;
|
||||||
view->scroll.fixedViewport[1] = 0;
|
view->scroll.fixedViewport[1] = 0;
|
||||||
}
|
}
|
||||||
|
@ -2245,7 +2261,7 @@ void EsListViewRemoveAll(EsListView *view, EsListViewIndex group) {
|
||||||
|
|
||||||
int ListViewColumnHeaderItemMessage(EsElement *element, EsMessage *message) {
|
int ListViewColumnHeaderItemMessage(EsElement *element, EsMessage *message) {
|
||||||
EsListView *view = (EsListView *) element->parent->parent;
|
EsListView *view = (EsListView *) element->parent->parent;
|
||||||
EsListViewColumn *column = view->columns + element->userData.u;
|
ListViewColumn *column = &view->registeredColumns[element->userData.u];
|
||||||
|
|
||||||
if (message->type == ES_MSG_PAINT) {
|
if (message->type == ES_MSG_PAINT) {
|
||||||
EsMessage m = { ES_MSG_LIST_VIEW_GET_COLUMN_SORT };
|
EsMessage m = { ES_MSG_LIST_VIEW_GET_COLUMN_SORT };
|
||||||
|
@ -2267,59 +2283,67 @@ int ListViewColumnHeaderItemMessage(EsElement *element, EsMessage *message) {
|
||||||
return ES_HANDLED;
|
return ES_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EsListViewSetColumns(EsListView *view, EsListViewColumn *columns, size_t columnCount) {
|
int ListViewColumnSplitterMessage(EsElement *element, EsMessage *message) {
|
||||||
EsMessageMutexCheck();
|
EsListView *view = (EsListView *) element->parent->parent;
|
||||||
|
ListViewColumn *column = &view->registeredColumns[element->userData.u];
|
||||||
|
|
||||||
EsAssert(view->flags & ES_LIST_VIEW_COLUMNS); // List view does not have columns flag set.
|
if (message->type == ES_MSG_MOUSE_LEFT_DOWN) {
|
||||||
|
view->columnResizingOriginalWidth = column->width * theming.scale;
|
||||||
|
} else if (message->type == ES_MSG_MOUSE_LEFT_DRAG) {
|
||||||
|
int width = message->mouseDragged.newPositionX - message->mouseDragged.originalPositionX + view->columnResizingOriginalWidth;
|
||||||
|
int minimumWidth = element->style->metrics->minimumWidth;
|
||||||
|
if (width < minimumWidth) width = minimumWidth;
|
||||||
|
column->width = width / theming.scale;
|
||||||
|
ListViewCalculateTotalColumnWidth(view);
|
||||||
|
EsElementRelayout(element->parent);
|
||||||
|
EsElementRelayout(view);
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ES_HANDLED;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EsListViewAddAllColumns(EsListView *view) {
|
||||||
EsElementDestroyContents(view->columnHeader);
|
EsElementDestroyContents(view->columnHeader);
|
||||||
|
view->activeColumns.Free();
|
||||||
|
|
||||||
view->columns = columns;
|
for (uintptr_t i = 0; i < view->registeredColumns.Length(); i++) {
|
||||||
view->columnCount = columnCount;
|
view->activeColumns.Add(i);
|
||||||
|
|
||||||
for (uintptr_t i = 0; i < columnCount; i++) {
|
|
||||||
EsElement *columnHeaderItem = EsCustomElementCreate(view->columnHeader, ES_CELL_FILL,
|
|
||||||
(columns[i].flags & ES_LIST_VIEW_COLUMN_HAS_MENU) ? ES_STYLE_LIST_COLUMN_HEADER_ITEM_HAS_MENU : ES_STYLE_LIST_COLUMN_HEADER_ITEM);
|
|
||||||
|
|
||||||
|
EsStyle *style = (view->registeredColumns[i].flags & ES_LIST_VIEW_COLUMN_HAS_MENU) ? ES_STYLE_LIST_COLUMN_HEADER_ITEM_HAS_MENU : ES_STYLE_LIST_COLUMN_HEADER_ITEM;
|
||||||
|
EsElement *columnHeaderItem = EsCustomElementCreate(view->columnHeader, ES_CELL_FILL, style);
|
||||||
columnHeaderItem->messageUser = ListViewColumnHeaderItemMessage;
|
columnHeaderItem->messageUser = ListViewColumnHeaderItemMessage;
|
||||||
columnHeaderItem->cName = "column header item";
|
columnHeaderItem->cName = "column header item";
|
||||||
columnHeaderItem->userData = i;
|
columnHeaderItem->userData = i;
|
||||||
|
|
||||||
if (!columns[i].width) {
|
|
||||||
columns[i].width = (i ? view->secondaryCellStyle : view->primaryCellStyle)->preferredWidth / theming.scale;
|
|
||||||
}
|
|
||||||
|
|
||||||
EsElement *splitter = EsCustomElementCreate(view->columnHeader, ES_CELL_FILL, ES_STYLE_LIST_COLUMN_HEADER_SPLITTER);
|
EsElement *splitter = EsCustomElementCreate(view->columnHeader, ES_CELL_FILL, ES_STYLE_LIST_COLUMN_HEADER_SPLITTER);
|
||||||
|
splitter->messageUser = ListViewColumnSplitterMessage;
|
||||||
splitter->messageUser = [] (EsElement *element, EsMessage *message) {
|
|
||||||
EsListViewColumn *column = (EsListViewColumn *) element->userData.p;
|
|
||||||
EsListView *view = (EsListView *) element->parent->parent;
|
|
||||||
|
|
||||||
if (message->type == ES_MSG_MOUSE_LEFT_DOWN) {
|
|
||||||
view->columnResizingOriginalWidth = column->width * theming.scale;
|
|
||||||
} else if (message->type == ES_MSG_MOUSE_LEFT_DRAG) {
|
|
||||||
int width = message->mouseDragged.newPositionX - message->mouseDragged.originalPositionX + view->columnResizingOriginalWidth;
|
|
||||||
int minimumWidth = element->style->metrics->minimumWidth;
|
|
||||||
if (width < minimumWidth) width = minimumWidth;
|
|
||||||
column->width = width / theming.scale;
|
|
||||||
ListViewCalculateTotalColumnWidth(view);
|
|
||||||
EsElementRelayout(element->parent);
|
|
||||||
EsElementRelayout(view);
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ES_HANDLED;
|
|
||||||
},
|
|
||||||
|
|
||||||
splitter->cName = "column header splitter";
|
splitter->cName = "column header splitter";
|
||||||
splitter->userData = columns + i;
|
splitter->userData = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
ListViewCalculateTotalColumnWidth(view);
|
ListViewCalculateTotalColumnWidth(view);
|
||||||
view->scroll.Refresh();
|
view->scroll.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EsListViewRegisterColumn(EsListView *view, uint32_t id, const char *title, ptrdiff_t titleBytes, uint32_t flags, double initialWidth) {
|
||||||
|
EsMessageMutexCheck();
|
||||||
|
EsAssert(view->flags & ES_LIST_VIEW_COLUMNS); // List view does not have columns flag set.
|
||||||
|
|
||||||
|
if (!initialWidth) {
|
||||||
|
initialWidth = (view->registeredColumns.Length() ? view->secondaryCellStyle : view->primaryCellStyle)->preferredWidth / theming.scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
ListViewColumn column = {};
|
||||||
|
column.id = id;
|
||||||
|
column.flags = flags;
|
||||||
|
column.width = initialWidth;
|
||||||
|
if (titleBytes == -1) titleBytes = EsCStringLength(title);
|
||||||
|
HeapDuplicate((void **) &column.title, &column.titleBytes, title, titleBytes);
|
||||||
|
view->registeredColumns.Add(column);
|
||||||
|
}
|
||||||
|
|
||||||
void EsListViewContentChanged(EsListView *view) {
|
void EsListViewContentChanged(EsListView *view) {
|
||||||
EsMessageMutexCheck();
|
EsMessageMutexCheck();
|
||||||
|
|
||||||
|
|
|
@ -1417,12 +1417,6 @@ struct EsCommand {
|
||||||
STRING title;
|
STRING title;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct EsListViewColumn {
|
|
||||||
STRING title;
|
|
||||||
uint32_t flags;
|
|
||||||
double width;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct EsApplicationStartupRequest {
|
struct EsApplicationStartupRequest {
|
||||||
int64_t id;
|
int64_t id;
|
||||||
STRING filePath;
|
STRING filePath;
|
||||||
|
@ -1642,8 +1636,8 @@ struct EsMessageGetContent {
|
||||||
EsListViewIndex group;
|
EsListViewIndex group;
|
||||||
uint32_t icon;
|
uint32_t icon;
|
||||||
uint32_t drawContentFlags;
|
uint32_t drawContentFlags;
|
||||||
|
uint32_t columnID;
|
||||||
EsBuffer *buffer;
|
EsBuffer *buffer;
|
||||||
uint8_t column;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct EsMessageGetIndent {
|
struct EsMessageGetIndent {
|
||||||
|
@ -2570,7 +2564,8 @@ function EsListView *EsListViewCreate(EsElement *parent, uint64_t flags = ES_FLA
|
||||||
function EsListViewIndex EsListViewGetIndexFromItem(EsElement *element, EsListViewIndex *group = ES_NULL);
|
function EsListViewIndex EsListViewGetIndexFromItem(EsElement *element, EsListViewIndex *group = ES_NULL);
|
||||||
function void EsListViewEnumerateVisibleItems(EsListView *view, EsListViewEnumerateVisibleItemsCallback callback);
|
function void EsListViewEnumerateVisibleItems(EsListView *view, EsListViewEnumerateVisibleItemsCallback callback);
|
||||||
|
|
||||||
function void EsListViewSetColumns(EsListView *view, EsListViewColumn *columns, size_t columnCount);
|
function void EsListViewRegisterColumn(EsListView *view, uint32_t id, STRING title = BLANK_STRING, uint32_t flags = ES_FLAGS_DEFAULT, double initialWidth = 0);
|
||||||
|
function void EsListViewAddAllColumns(EsListView *view); // Call after registering the columns to add them to the header. Call again after EsListViewChangeStyles, as needed.
|
||||||
function void EsListViewSetEmptyMessage(EsListView *view, STRING message = BLANK_STRING);
|
function void EsListViewSetEmptyMessage(EsListView *view, STRING message = BLANK_STRING);
|
||||||
function void EsListViewSetMaximumItemsPerBand(EsListView *view, int maximumItemsPerBand);
|
function void EsListViewSetMaximumItemsPerBand(EsListView *view, int maximumItemsPerBand);
|
||||||
function void EsListViewSelectNone(EsListView *view);
|
function void EsListViewSelectNone(EsListView *view);
|
||||||
|
|
|
@ -119,3 +119,4 @@ private define ES_STYLE_SCROLLBAR_THUMB_VERTICAL (ES_STYLE_CAST(1369))
|
||||||
define ES_STYLE_TOOLBAR_SPACER (ES_STYLE_CAST(5))
|
define ES_STYLE_TOOLBAR_SPACER (ES_STYLE_CAST(5))
|
||||||
define ES_STYLE_TOOLBAR_BUTTON_GROUP_SEPARATOR (ES_STYLE_CAST(7))
|
define ES_STYLE_TOOLBAR_BUTTON_GROUP_SEPARATOR (ES_STYLE_CAST(7))
|
||||||
define ES_STYLE_TOOLBAR_SPACER_SMALL (ES_STYLE_CAST(3))
|
define ES_STYLE_TOOLBAR_SPACER_SMALL (ES_STYLE_CAST(3))
|
||||||
|
define ES_STYLE_LIST_CHOICE_ITEM_2X (ES_STYLE_CAST(9))
|
||||||
|
|
Binary file not shown.
BIN
res/Theme.dat
BIN
res/Theme.dat
Binary file not shown.
|
@ -137,9 +137,11 @@ EsEventReset=135
|
||||||
EsEventSet=136
|
EsEventSet=136
|
||||||
EsInstanceCloseReference=137
|
EsInstanceCloseReference=137
|
||||||
EsInstanceClose=138
|
EsInstanceClose=138
|
||||||
|
EsListViewRegisterColumn=139
|
||||||
EsMutexAcquire=140
|
EsMutexAcquire=140
|
||||||
EsMutexDestroy=141
|
EsMutexDestroy=141
|
||||||
EsMutexRelease=142
|
EsMutexRelease=142
|
||||||
|
EsListViewAddAllColumns=143
|
||||||
EsSchedulerYield=145
|
EsSchedulerYield=145
|
||||||
EsSleep=146
|
EsSleep=146
|
||||||
EsSpinlockAcquire=147
|
EsSpinlockAcquire=147
|
||||||
|
@ -309,7 +311,6 @@ EsFileDelete=311
|
||||||
EsBufferReadInto=312
|
EsBufferReadInto=312
|
||||||
EsListViewRemoveAll=313
|
EsListViewRemoveAll=313
|
||||||
EsSystemShowShutdownDialog=314
|
EsSystemShowShutdownDialog=314
|
||||||
EsListViewSetColumns=315
|
|
||||||
EsListViewSelect=316
|
EsListViewSelect=316
|
||||||
EsUndoClear=317
|
EsUndoClear=317
|
||||||
EsMessageReceive=318
|
EsMessageReceive=318
|
||||||
|
|
Loading…
Reference in New Issue