2015-03-02 5 views
1

Я планирую сделать программу для редактирования данных в стиле таблицы.Есть ли виджет таблицы Gtk

Есть ли специальный виджет для создания таблицы с Gtk (любой версией), например wxSheet в wxWidget?

Если нет, вы знаете, если он предназначен для реализации Gtk developpers?

Некоторые подробности о функциональности я хотел бы реализовать:

  • Редактирование текста или числа в ячейках
  • Копирование/вставка выбора ячеек в/из другой таблицы, как Libre офис, ...
  • Добавление/удаление строк и столбцов
  • модифицирующие цвет клеток независимо друг от друга
  • Каждый столбец будет иметь тот же формат

Следующая функциональность не предназначены для использования на всех:

  • Слияние/Spanning клетки вместе
  • Ввод изображений или «не обычные» вещи в клетках.

Чтобы быть точным, я хотел бы что-то подобное:

enter image description here

+0

Что именно вы хотите сделать? Какие стили редактирования вы разрешите? Будет ли это строгий формат столбца строки без каких-либо ячеек, охватывающих несколько строк/столбцов? Будет ли каждый столбец иметь тот же формат и форматирование? И какой контроль вы показали нам здесь? Потому что я могу сказать вам, что это не стандартный компонент Windows ... – andlabs

+0

Я изменяю свое сообщение, чтобы быть более точным. – JeanJouX

+0

Хорошо, тогда вам нужна реальная таблица. Вы можете попробовать использовать элемент управления электронной таблицей в [GtkExtra] (http://gtkextra.sourceforge.net/cms/); кроме этого я не знаю, извините. Я также не знаю, предоставит ли в GtkExtra функциональность буфера обмена, о которой вы просите; если нет, вам придется это выяснить самостоятельно (опять же, я не знаю, извините). (Я вижу, вы спрашиваете о gtk2hs, если привязки еще не существуют, вам нужно выяснить, как связать GtkExtra с Haskell самостоятельно, я тоже этого не знаю, извините.) Удачи! – andlabs

ответ

0

Нам нужно было сделать что-то подобное (на самом деле с гораздо более полно сформированных функций электронных таблиц, и некоторые другие сложности). Мы исследовали различные стратегии и нашли, среди прочего, следующие:

1) Пакет с открытым исходным кодом, такой как OpenOffice и GNumerics (построенный с помощью Gtk3), реализует эти функции. Они либо не используют Gtk явно, либо кажутся так с «сырым Gtk», а не предоставляют явный «виджет листа». Мы отказались от этой стратегии слишком дорого, а в случае с GNumerics наш стиль кодирования слишком сложный/сложный для наших скудных мозгов.

2) andlabs находится на правильном пути, основываясь на том, что мы закончили строительство. Мы в значительной степени полагаемся на GtkExtra. Это, безусловно, может обеспечить (из коробки) большинство функций, которые вам нужны. Несколько из возможных комментариев, которые могут дать вам идею, включают в себя:

a) В GtkExtra есть виджет под названием GtkSheet, который является базовой сеткой/таблицей, но поставляется также с "testgtksheet.c/.exe", который это большая часть того, что вы хотите «из коробки».

b) Вам нужно будет написать собственный код для Cut/Copy/Paste (CCP) из «Диапазонов», поскольку «из коробки» Код GtkExtra может только CCP содержать содержимое строки в одной ячейке в приложениях (то есть через GtkClipboard), как показано на рисунках ниже, показывающих диапазон CCP из Excel в наше приложение («более короткое всплывающее окно» - это «из коробки» CCP, а другое - наше обычное вер.).

Кроме того, мы пока не можем понять, как CCP «содержимое полной ячейки» (т.е. формулы, цвета и т. Д.) В приложениях (например, между GtkExtra и Excel или OpenOffice и т. Д., См. также SO проводки Gtk clipboard spreadsheet value vs formula (Windows)). Однако строки/значения довольно прямолинейны.

UPDATE: В дальнейшем мы доказали, один подход к CCP'ing «полный Cell/Range» объектов (то есть формулы, свойства и т.д.), как описано здесь (Gtk clipboard spreadsheet value vs formula (Windows))

Конечно, такое КПК «в рамках приложение "в нашем случае довольно просто, поскольку все приложение основано на массивах, а не на объектах (база массивов гораздо более подходит для наших сложных вычислительных проблем), и для буфера обмена не требуется« внутренне », но мы позволяем пользователь выбирает, следует ли сопоставлять в/из буфера обмена или использовать другие средства.

Вы не утверждали свою ОС, и есть какая-то разница с GtkClipboard на Windows, Linux и т.д. против

с) Там может быть много настроек «по умолчанию» в GtkExtra «из коробки» элементов, вам может понравиться или нет. В нашем случае нам пришлось переписать значительный код, чтобы такие вещи, как Cell/Range и т. Д. Выбор/Навигация выполнялись в соответствии с нашими потребностями и «стандартными протоколами электронных таблиц».

d) Мы также повторно написали много кода для «модулей», таких как «pop menu» и т. Д., Так как, опять же, наши потребности вышли за рамки элементов «по умолчанию»/«из коробки» GtkExtra, хотя ваши требования могут не нужно слишком много таких.

e) Если ваша таблица также должна обрабатывать формулы, вам нужно будет получить или написать парсер/калькулятор. В зависимости от ваших потребностей это может варьироваться от довольно легко до чрезвычайно привлекательного. В нашем случае мы делаем огромный вычислительный анализ со сложной математикой, поэтому нам пришлось идти по «дорогостоящему» маршруту, хотя ваши требования могут не понадобиться.

f) Аналогичные комментарии применяются, если вы хотите добавить функции/«модули», такие как построение рисунков и т. Д., Хотя GtkExtra действительно предлагает различные дополнительные виджеты для обеспечения «приличных бит» для некоторых из них, хотя ваши требования могут не понадобиться.

Однако для интерфейса (любой) построения графика/графики в традиционной форме таблицы или, если это вам нужно, только CCP с несколькими областями, тогда вам нужно будет сделать некоторое нетривиальное кодирование.

g) Неясно от вашего OP, если вам также нужно читать/записывать листы в/из файлов (например, в дополнение к CCP), и если да, то какие форматы файлов. Опять же, в зависимости от ваших потребностей, это может быть относительно легко довольно сложно. GtkExtra не обеспечивает большую поддержку общей электронной таблицы IO с точки зрения многих форматов электронных таблиц (xls, xlsx, ods, csv, sylk и т. Д.), Хотя они предоставляют довольно приличные виджеты, чтобы вы начали с «Виджеты файлов», шрифт/сетка "и т. д. (см. изображения ниже, наше приложение называется« ARTEx »).

enter image description here

enter image description here

enter image description here

enter image description here

ч) Хотя есть различные места в Интернете, которые говорят о GtkExtra с GTK3, мы обнаружили, что это было лучше (по крайней мере, для наших нужд) придерживаться Gtk2 (что является «официальной» основой для GtkExtra), а затем вам также нужно будет проявить определенную осторожность при использовании различных других пакетов (например, , если вы используете Glade, вам нужно получить довольно старую версию Glade, которая поддерживает Gtk2 и т. д.).

i) Мы обнаружили некоторые подпрограммы и обстоятельства, которые привели к сбою Gtk/GtkExtra, и пришлось перезаписать некоторые из источников Gtk/GtkExtra.

Кстати, изображения предназначены для приложения, написанного на языке Fortran (которое представляет собой лучший инструмент для сложных/больших вычислительных задач) и используют привязку/интерфейс ISO к битам Gtk на основе C, работающим в Windows (встроенный в MingW и создание Gtk и т. д.), поэтому вы можете немного поработать с Gtk/GtkExtra.

Смежные вопросы