Sun, 22 Sep 2024 16:39:10 +0200
add libadwaita toolkit option
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2023 Olaf Wintermann. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #pragma once #include "../ui/tree.h" #include "toolkit.h" #include "dnd.h" #include "../ui/container.h" typedef struct UiTableColumn { winrt::Microsoft::UI::Xaml::Controls::Border header; } UiTableColumn; typedef struct UiTable { winrt::Microsoft::UI::Xaml::Controls::ScrollViewer scrollw; winrt::Microsoft::UI::Xaml::Controls::Grid grid; winrt::Microsoft::UI::Xaml::Media::SolidColorBrush defaultBrush; winrt::Microsoft::UI::Xaml::Media::SolidColorBrush highlightBrush; winrt::Microsoft::UI::Xaml::Media::SolidColorBrush selectedBrush; winrt::Microsoft::UI::Xaml::Media::SolidColorBrush selectedBorderBrush; winrt::Microsoft::UI::Xaml::Controls::Border resizedCol{ nullptr }; bool resize = false; UiObject* obj; ui_callback onactivate; void* onactivatedata; ui_callback onselection; void* onselectiondata; ui_callback ondragstart; void* ondragstartdata; ui_callback ondragcomplete; void* ondragcompletedata; ui_callback ondrop; void* ondropdata; UiModel* model = nullptr; std::vector<UiTableColumn> header; ui_getvaluefunc getvalue = nullptr; int maxrows = 0; int lastSelection = 0; ULONG64 lastPointerPress = 0; std::vector<int> selection; UiTable(UiObject *obj, winrt::Microsoft::UI::Xaml::Controls::ScrollViewer scrollW, winrt::Microsoft::UI::Xaml::Controls::Grid grid); ~UiTable(); void add_header(UiModel* model); void update(UiList* list, int i); void clear(); void row_background(int row, winrt::Microsoft::UI::Xaml::Media::Brush brush, winrt::Microsoft::UI::Xaml::Media::Brush borderBrush); void change_rows_bg(std::vector<int> rows, winrt::Microsoft::UI::Xaml::Media::Brush brush, winrt::Microsoft::UI::Xaml::Media::Brush borderBrush); bool is_row_selected(int row); void remove_from_selection(int row); UiListSelection uiselection(); void call_handler(ui_callback cb, void *cbdata); } UiTable; extern "C" void ui_table_update(UiList * list, int i); extern "C" UiListSelection ui_table_selection(UiList * list);