Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: гуи библиотека  (Прочитано 11731 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 08-09-2007 14:33 » 

нужна кросплатформенная библиотека ( гигвин без Х, лин с Х ) для создания гуи интерфейса ( маштабирование и вывод  изображения в ограниченную область, дир бокс, кнопки, акселераторы, меню, скролбар, статус бар) под LGPL или аналогичной лицензией
хорошо документированая с демонстрашкой ( каркасом графического приложения)

и какой нить язык програмирования к ней с электронным мануалом, референсом, и туториалом и GPL компилятором

зы хочу для общего развития попробовать написать простенький image_viewer

что посоветуйте?

есть возможность работы с графикой у схемы окалма или хаскела?
Записан

1n c0de we trust
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 10-09-2007 06:34 » 

смотрим в сторону TCL/Tk
http://scriptics.com/
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #2 : 10-09-2007 06:40 » 

GTK+
WXWidgets
GTKMM
QT
и еще много чего.
я бы выбрал первые две
Записан

Странно всё это....
Mayor
Специалист

ru
Offline Offline

« Ответ #3 : 10-09-2007 14:50 » 

ну первая дак первая  ....

посмотрю на гтк  ... самим то на какой больше всего понравилось работать?


так теперь осталось выбрать язык ... С наверное слишком банально ...

что вы думайте о хаскеле?

Записан

1n c0de we trust
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 10-09-2007 16:49 » 

Цитата
гигвин без Х, лин с Х
А при этом все рекомендации зависят от Х-ов!

Без Х-ов в случае кроссплатформености нельзя, т.к. в них входяит видеодрайверы. Видимо речь о более высоком уровне, где проще обеспечить кроссплатформеность.

Mayor1,
- если ты выберешь Qt, то напомню, что для win _бесплатно_ предлагается только устаревшие версии библиотек.
- GTK в данно плане гуманнее, но часто работая с такими приложениями как Mozilla и GIMP, использующими GTK, я сомневаюсь в стабильности этой библиотеки. Правда, нестабильность может быть в самих продуктах...
- Может я ошибаюсь, но мне кажется, что у Tk слабая поддержка. К примеру, модусь для perl имеет дату последнего релиза 2000-07-21...

Про остальные предложения ничего сказать не могу.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 10-09-2007 18:03 » 

у Tk поддержка  достаточно не плоха, по крайней мере для заявленной задачи.
кроме того существуют большое количество наработок
естественно все это нужно пробовать.
Для перла они используют виджеты и подключают TK к своим скриптам
чем мне нравится TK - это скрипт + понимание работы виджета, когда все свойства ручками прописываешь, а не "оптичиваешь"
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Mayor
Специалист

ru
Offline Offline

« Ответ #6 : 11-09-2007 18:52 » 

Цитата
гигвин без Х, лин с Х
А при этом все рекомендации зависят от Х-ов!
Без Х-ов в случае кроссплатформености нельзя, т.к. в них входяит видеодрайверы. Видимо речь о более высоком уровне, где проще обеспечить кроссплатформеность.
GTK+ can also run under Microsoft Windows, used by some popular cross-platform applications like Pidgin, as well as The GIMP itself.
http://gladewin32.sourceforge.net/modules/news/

так похоже кроме тк, практики ни с чем больше нет ... хм ну еще не позно их сравнить, пока что все равно нереально в хаскеле застрял Жаль

Записан

1n c0de we trust
Mayor
Специалист

ru
Offline Offline

« Ответ #7 : 22-09-2007 13:14 » new

начал практиковаться с gtk

и наконец-то каркас image_viewer готов:

Код:
tname=gdirlist
$(tname).exe : $(tname).c
gcc -Wall -g $(tname).c -o $(tname).exe  `/bin/pkg-config --cflags --libs gtk+-2.0`
.PHONY : clean
clean :
rm $(tname).exe


Код:
// перед компиляцией убедитесь, что pkg-config --libs --cflags gtk+-2.0 ссылается на правильный каталог gtk+-2.0
// компиляция под гигвином не требует никаких изменений в коде и майкфайле
#include <gtk/gtk.h>
int ev_num=0;

static gboolean delete_event( GtkWidget *widget,
                              GdkEvent  *event,
                              gpointer   data )
{
    g_print ("delete event occurred\n");
    return FALSE;
}

static void destroy( GtkWidget *widget,
                     gpointer   data )
{
    gtk_main_quit ();
}

    GDir *dir;
    GtkWidget *box;
    GtkWidget *table;
    GtkWidget *entry ;
void dirlist (GDir *pd,int ysize) {
int i;
    const gchar *file;
    GtkWidget *label;
gtk_widget_destroy(box);
    box = gtk_vbox_new (0,1);
    for ( i =0; i<ysize ; i++)
    {
file = g_dir_read_name (pd);
if ( ! file ) break;
        label = gtk_label_new(file);
gtk_box_pack_start_defaults ( (GtkBox*) box,label);
        gtk_widget_show (label);
    }
    gtk_table_attach_defaults ( (GtkTable *) table,box,1,2,0,2);
    gtk_widget_show(box);
}
gboolean    gev                  (GtkWidget *widget,
                                            GdkEvent *event,
                                            gpointer user_data){
if (event->type == GDK_KEY_PRESS)
{
const gchar *tentry;
guint i;
tentry=gtk_entry_get_text((GtkEntry*)entry);
i=((GdkEventKey*) event)->keyval;
if ( i == 65293 ) {
g_print(tentry);
g_print(" enter pressed \n");
    dir = g_dir_open ( tentry,0,0);
    dirlist(dir,10);
    g_dir_close(dir);
}
else
{
        g_print("gdk_event %d type: %d\n",ev_num,i);
}


}
ev_num++;
return FALSE;
}






int main( int   argc,
          char *argv[] )
{
//int ysize=10;
    GtkWidget *window;

    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    g_signal_connect (G_OBJECT (window), "delete_event",
      G_CALLBACK (delete_event), NULL);
    g_signal_connect (G_OBJECT (window), "destroy",
      G_CALLBACK (destroy), NULL);
    g_signal_connect (G_OBJECT (window), "event",
      G_CALLBACK (gev), NULL);
    table = gtk_table_new (2,2,1);
    gtk_container_add ( (GtkContainer*) window, table);

    entry = gtk_entry_new();
    gtk_table_attach_defaults ( (GtkTable *) table,entry,0,1,0,1);
    gtk_widget_show (entry);

    GtkWidget *image;
    image = gtk_image_new_from_file("r.png");
    gtk_table_attach_defaults ( (GtkTable*) table,image,0,1,1,2);
    g_print("image size :  %x\n",gtk_image_get_pixel_size((GtkImage*)image));
   



    gtk_widget_show (image);
    gtk_widget_show (table);
    gtk_widget_show (window);
    gtk_main ();
    return 0;
}

соответсвенно возникло много нерешенных вопросов:

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

- чем можно заменить таблицу, чтобы растояние между элементами не менялось при изменении размеров окна?

- как проще сделать листинг списка неопределенного количества  файлов : путем пересоздания бокса каждый раз при скроллинге или есть возможность вывести на экран только часть элементов бокса соотвественно без его пересоздания?

как перемещаться между элементами бокса ( расположены справа, содержат имена файлов ) через нажатия клавишь pgup\down с обработкой с привязкой сигнала о перемещении к заданной функции?

чем лучше подсвечивать имя файла который в данный момент на изображении?

как узнать размеры изображения ? как маштабировать изображение?

какие библиотеки еще имеет смысл использовать для решения данных вопросов кроме gtk?

присматриваюсь к pcre, image magic ....
Записан

1n c0de we trust
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines