История изменений
Исправление kvpfs_2, (текущая версия) :
Покажи потом что ты там наговнякаешь на своём fltk, спорю что на Qt это можно сделать проще и в 2 раза короче.
Накостылил. Юзать таблицу просто (простое заполнение, можно и с циклами, естественно):
int main()
{
Itable<3> t("My table",
{
Column_header{"First column", 100, false},
{"Second column", 150, true}, // title, width, editable
{"Third column", 200, false}},
{
{"hello", "world", "1"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"}
},
// callback called at cell modification
{[](data_t<3> &d, int row, int col, const char *new_val) {
d[row][col] = new_val;
d.pop_back(); // delete last item
}},
{
{"first_action", 0, {}},
{"menu_root/second_action", 0, {}},
{"third_action", 0,
// callback at action button click
[](data_t<3> &, std::vector<int>) {
std::cout << "Hello world!!!" << std::endl; }},
});
t.show();
Fl::run();
}
Задаю пункты меню с колбэками при нажатии на них (в колбэк передается массив с данными таблицы и массив с индексами выбранных строк, в колбэке можно редактировать данные как хочется). Красные колонки доступны для редактирования, по завершению редактированию дергается колбэк, в него передается массив строк таблицы и новое значение, применять его или нет - дело хозяйское. Ну и всякое типо прокрутки, смена ширины колонок. В общем вышло точно то, что и хотел. Получилось 300 строк кода. Теперь заюзаю данную таблицу по максимуму в проекте с разными настройками и колбэками без дополнительного формошлепства. Еще доступны сочетания клавиш на действия вешать (там где ноль передается).
Исправление kvpfs_2, :
Покажи потом что ты там наговнякаешь на своём fltk, спорю что на Qt это можно сделать проще и в 2 раза короче.
Накостылил. Юзать таблицу просто (простое заполнение, можно и с циклами, естественно):
int main()
{
Itable<3> t("My table",
{
Column_header{"First column", 100, false},
{"Second column", 150, true}, // title, width, editable
{"Third column", 200, false}},
{
{"hello", "world", "1"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"}
},
// callback called at cell modification
{[](data_t<3> &d, int row, int col, const char *new_val) {
d[row][col] = new_val;
d.pop_back(); // delete last item
}},
{
{"first_action", 0, {}},
{"menu_root/second_action", 0, {}},
{"third_action", 0,
// callback at action button click
[](data_t<3> &, std::vector<int>) {
std::cout << "Hello world!!!" << std::endl; }},
});
t.show();
Fl::run();
}
Задаю пункты меню с колбэками при нажатии на них (в колбэк передается массив с данными таблицы и массив с индексами выбранных строк, в колбэки можно редактировать данные как хочется). Красные колонки доступны для редактирования, по завершению редактированию дергается колбэк, в него передается массив строк таблицы и новое значение, применять его или нет - дело хозяйское. Ну и всякое типо прокрутки, смена ширины колонок. В общем вышло точно то, что и хотел. Получилось 300 строк кода. Теперь заюзаю данную таблицу по максимуму в проекте с разными настройками и колбэками без дополнительного формошлепства. Еще доступны сочетания клавиш на действия вешать (там где ноль передается).
Исходная версия kvpfs_2, :
Покажи потом что ты там наговнякаешь на своём fltk, спорю что на Qt это можно сделать проще и в 2 раза короче.
Накостылил. Юзать таблицу просто (простое заполнение, можно и с циклами, естественно):
int main()
{
Itable<3> t("My table",
{
Column_header{"First column", 100, false},
{"Second column", 150, true}, // title, width, editable
{"Third column", 200, false}},
{
{"hello", "world", "1"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"},
{"2", "3", "4"}
},
// callback called at cell modification
{[](data_t<3> &d, int row, int col, const char *new_val) {
d[row][col] = new_val;
d.pop_back(); // delete last item
}},
{
{"first_action", 0, {}},
{"menu_root/second_action", 0, {}},
{"third_action", 0,
// callback at action button click
[](data_t<3> &, std::vector<int>) {
std::cout << "Hello world!!!" << std::endl; }},
});
t.show();
Fl::run();
}
Задаю пункты меню с колбэками при нажатии на них (в колбэк передается массив с данными таблицы и массив с индексами выбранных строк, в колбэки можно редактировать данные как хочется). Красные колонки доступны для редактирования, по завершению редактированию дергается колбэк, в него передается массив строк таблицы и новое значение, применять его или нет - дело хозяйское. Ну и всякое типо прокрутки, смена ширины колонок. В общем вышло точно то, что и хотел. Получилось 300 строк кода. Теперь заюзаю данную таблицу по максимуму в проекте с разными настройками и колбэками без дополнительного формошлепства.