Re[11]: красивый пользовательский интерфейс C++
От: astral_marine  
Дата: 25.01.08 11:33
Оценка:
Д>никаких аргументов не было прдьявлено, кроме не понравившихся цветов.

Это было замечание об Look & Feel и я не приводил никаких аргументов поскольку они сугубо субъективны и могли бы спровоцировать спор о вкусах.
Но если вы настаиваиете, то пожалуйста:
1. В Beryl более продвинутая анимация
2. В Microsoft Office 2007 и Aero элементы управления переливаются и более активны на какие-либо действия пользователя.

_>>Возможностью менять фоновой рисунок сейчас уже мало кого можно удивить.

Д>Никто и не собирается этим удивлять. Вам кислотный фон не понравился, я и говорю, что это меняется на раз-два и обьяснил, почему там контрастные цвета, на мой взгляд. Кроме того, может быть изменена и компоновка контролов.

... и поменять на другой кислотный цвет. Мне лично не нравится когда я в ОС устанавливаю один цвет, а отдельные "продвинутые" приложения используют другой. Как раз это я имел ввиду.
Re[11]: красивый пользовательский интерфейс C++
От: ShaggyOwl Россия http://www.rsdn.org
Дата: 25.01.08 11:38
Оценка:
Здравствуйте, игппук, Вы писали:

И>мои проблемы я написал здесь
Автор: игппук
Дата: 11.06.07

Так вроде там все или почти все решили.

И>все косяки решены не были, решались с трудом, поэтому в конце концов мне пришлось отказаться от использования HTMLayout. но я не отрицаю факт, что я чтото мог делать неправильно, просто тот же wxWidjets мне показалось использовать намного проще.


На старт необходимо потратить какое-то время. Текущий недостаток документации тоже не есть гуд.
Надумаешь еще раз попробовать HTMLayout — буду рад помочь
Хорошо там, где мы есть! :)
Re[3]: красивый пользовательский интерфейс C++
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 29.01.08 05:51
Оценка:
Здравствуйте, Conr, Вы писали:

C>Вот с этим не соглашусь. ОТВРАТИТЕЛЬНЕЙШАЯ РЕАЛИЗАЦИЯ! Я такого от Бъярка не ожидал.


Подробностями не поделишься? А то я только мельком смотрел.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий
Re: красивый пользовательский интерфейс C++
От: Interligator  
Дата: 29.01.08 08:47
Оценка:
Здравствуйте, onyx2, Вы писали:

O>Подскажите какую-нибудь библиотеку классов или компонентов для создания красивого пользовательского интерфейса.

O>Условие: язык программирования C++.
O>Мне вот, например, нравятся в этом отношении продукты от Microsoft 2003 года — MS Word 2003, MS Visual Studio 2003 и т.п. Может кто подскажет на чем это написано? Или кто поделиться библиотечкой классов

Visual C++ 2008 Feature Pack Beta
http://www.microsoft.com/downloads/details.aspx?FamilyId=D466226B-8DAB-445F-A7B4-448B326C48E7

http://joreg.livejournal.com/23958.html
Re[6]: красивый пользовательский интерфейс C++
От: Аноним  
Дата: 29.01.08 08:54
Оценка:
Здравствуйте, Димчанский, Вы писали:

Д>Я не знаю, на чём написан Skype, но он в самом деле использует Qt.


я не знаю где и как он использует QT, но написан он либо на делфи либо на билдере. Достаточно глянуть один раз на содержимое ресурсов Skype.exe
Re[7]: красивый пользовательский интерфейс C++
От: Sergey Россия  
Дата: 29.01.08 09:56
Оценка:
> Д>Я не знаю, на чём написан Skype, но он в самом деле использует Qt.
>
> я не знаю где и как он использует QT, но написан он либо на делфи либо на билдере.

На Kylix, хотите сказать? Поскольку под линуксом скайп тоже есть.

> Достаточно глянуть один раз на содержимое ресурсов Skype.exe


И что там такого характерно борландовского лежит?
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[8]: красивый пользовательский интерфейс C++
От: Аноним  
Дата: 29.01.08 10:57
Оценка: +1
Здравствуйте, Sergey, Вы писали:

S>И что там такого характерно борландовского лежит?


ресурсы форм явно бормановских рук дела

inherited skCallQualityForm: TskCallQualityForm
  Left = 512
  Top = 291
  BorderIcons = [biSystemMenu, biMinimize]
  BorderStyle = bsSingle
  Caption = 'skCallQualityForm'
  ClientHeight = 359
  ClientWidth = 502
  PixelsPerInch = 96
  TextHeight = 13
  inherited Background1: TDialogBackground
    Width = 502
    Height = 359
  end
  object btnDoSmth: TTntButton
    Left = 339
    Top = 325
    Width = 75
    Height = 25
    Anchors = [akRight, akBottom]
    Caption = 'Next'
    Constraints.MinWidth = 75
    TabOrder = 1
  end
Re[4]: красивый пользовательский интерфейс C++
От: Conr Россия  
Дата: 29.01.08 12:03
Оценка: 24 (1)
Здравствуйте, SchweinDeBurg, Вы писали:

C>>Вот с этим не соглашусь. ОТВРАТИТЕЛЬНЕЙШАЯ РЕАЛИЗАЦИЯ! Я такого от Бъярка не ожидал.


SDB>Подробностями не поделишься? А то я только мельком смотрел.

Да какие там подробности — код просто не работает Когда полез в исходники разбираться какого фига у меня все зависло, то сразу же наткунлся на то, что из текущей темы ничего не берется, куча жестко зашитых констант. Глобальная переменная _photos, которая используется для уведомлений в большинстве контролов, вместо того, чтобы посылать честные сообщения контейнеру... дальше уже смотреть не стал. Использовать это невозможно — слишком много придется переписывать, лучше уж тогда заново самому писать, выйдет и проще, и быстрее. Хорошо, что мне это не требуется
Re[9]: красивый пользовательский интерфейс C++
От: c-smile Канада http://terrainformatica.com
Дата: 29.01.08 21:27
Оценка:
Здравствуйте, игппук, Вы писали:

И>Здравствуйте, Left2, Вы писали:


L>>Согласен. Попробовал — очень понравился, интерфейс очень быстро клепается. Гибкость более чем достаточная — можно и свои контролы делать, и реюзать их потом влёт. Самое главное — дизайнеры сейчас хорошо умеют рисовать HTML-и, и их довольно несложно потом впихнуть в приложение прямо "как есть". Из дополнительных плюсов — поддержка Windows Mobile 2003 и выше.


И>мое имхо, один из самых больших недостатков этой библиотеки — сложность в программировании динамических контролов.


Что такое "динамические контролы"?
Если например нечто типа этого:

то куда уж проще (behavior_expandable_list.cpp):


struct expandable_list: public behavior
{
    // ctor
    expandable_list(const char* name="expandable-list"): behavior(HANDLE_MOUSE | HANDLE_KEY | HANDLE_FOCUS, name ) {}
    
    virtual void attached  (HELEMENT he ) 
    { 
      dom::element ctl = he;
      bool got_one = false;
      for( int i = ctl.children_count() - 1; i >= 0 ; --i)
      {
        dom::element t = ctl.child((unsigned int)i);
        if( t.get_attribute("default") && !got_one)
        {
          t.set_state(STATE_CURRENT | STATE_EXPANDED); // set state flags
          got_one = true;
        }
        else
          t.set_state(STATE_COLLAPSED); // set state flags
      }
    } 
   
    // set current item
    virtual void set_current_item( const dom::element& ctl, dom::element& item )
    {
      // get previously selected item:
      dom::element prev_current = ctl.find_first(":current");
      dom::element prev = ctl.find_first(":expanded");
      
      if(prev_current != item)
        prev_current.set_state(0, STATE_CURRENT);

      if( prev.is_valid() )
      {
        if( prev == item ) return; // already here, nothing to do.
        prev.set_state(0,STATE_CURRENT | STATE_EXPANDED); // drop state flags
      }
      item.set_state(STATE_CURRENT | STATE_EXPANDED); // set state flags
    }

    virtual BOOL on_mouse(HELEMENT he, HELEMENT target, UINT event_type, POINT pt, UINT mouseButtons, UINT keyboardStates )
    {
      if( event_type != MOUSE_DOWN && event_type != MOUSE_DCLICK )
        return false;

      if(mouseButtons != MAIN_MOUSE_BUTTON) 
        return false;

      // el is presumably <li>;
      dom::element ctl = he;
      dom::element item = target_item(ctl, target);

      if(item.is_valid()) // click on the item caption
        set_current_item(ctl, item);

      return true; // as it is always ours then stop event bubbling
    }

    virtual BOOL on_event (HELEMENT he, HELEMENT target, BEHAVIOR_EVENTS type, UINT_PTR reason ) 
    { 
      if( type == ACTIVATE_CHILD )
      {
        dom::element item = target_item(dom::element(he), target);
        if(item.is_valid()) // click on the item caption
        {
          set_current_item(he, item);
          return TRUE; 
        }
      }
      return FALSE;
    }

    virtual BOOL on_key(HELEMENT he, HELEMENT target, UINT event_type, UINT code, UINT keyboardStates ) 
    { 
      if( event_type == KEY_DOWN )
      {
        dom::element ctl = he;
        switch( code )
        {
          case VK_DOWN: 
            {
               dom::element c = ctl.find_first(":current");
               int idx = c.is_valid()? (c.index() + 1):0;
               if( idx < (int)ctl.children_count() )
               {
                   dom::element nc = ctl.child(idx);
                   set_current_item(ctl, nc); 
               }
            }
            return TRUE;
          case VK_UP:             
            {
               dom::element c = ctl.find_first(":current");
               int idx = c.is_valid()? (c.index() - 1):(ctl.children_count() - 1);
               if( idx >= 0 )
               {
                   dom::element nc = ctl.child(idx);
                   set_current_item(ctl, nc); 
               }
            }
            return TRUE;
        }
        
      }
      return FALSE; 
    }
  
    dom::element target_item(const dom::element& ctl, dom::element target)
    {
      if( target == ctl )
        return dom::element();

      if( !target.is_valid() )
        return target;

      dom::element target_parent = target.parent();
      if( !target_parent.is_valid() )
        return target;
      
      if( target.test("li > .caption") )
        return target_parent; // only if click on "caption" element of <li>. Returns that <li> element.

      return target_item( ctl, target.parent() );
    }

};


Я думаю что найти имплементацию Outlook Bar которая была бы проще чем это сложно будет.
Re[10]: красивый пользовательский интерфейс C++
От: игппук Беларусь  
Дата: 29.01.08 22:53
Оценка: +1
действительно, что может быть проще

я имел ввиду генерирование контролов в рантайме, а также в рантайме их удаление, а также вставка этих контролов в любое место, и с любой вложенностью.
в wxWidject проще, чем тот код, что вы мне привели.
проклятый антисутенерский закон
Re[11]: красивый пользовательский интерфейс C++
От: c-smile Канада http://terrainformatica.com
Дата: 30.01.08 03:19
Оценка:
Здравствуйте, игппук, Вы писали:

И>действительно, что может быть проще


И>я имел ввиду генерирование контролов в рантайме, а также в рантайме их удаление, а также вставка этих контролов в любое место, и с любой вложенностью.

И>в wxWidject проще, чем тот код, что вы мне привели.

Что такое "генерирование контролов в рантайме"?

Нечто типа этого:
dom::element el = ...;
el.set_html("<input type=text value='hello world' /> <select><option>one</option></select>");

?

Куда уж проще?
Для конкретности спора, приведи код в wxWidject создающий в котейнере два аналогичных controls. Сильно короче получится?

А что такое "с любой вложенностью"? Нечто типа этого:

<select>
  <option>one <button>first</button></option>
  <option>two <a href="cmd:second">second</a></option>
</select>

?

если да то где ты видишь проблемы?

Кстати хотел бы я посмотреть решение listbox c button внутри и/или хотя бы с гиперлинками. В wxWidgets я имею ввиду.
(я понимаю что такой listbox редко когда нужен — но тем не менее).

"вставка этих контролов в любое место"

А это про нечто типа
<widget type="textarea" style="position:absolute; left:2px; top:10px" />

?

Ну дык вроде как не проблема.
Но! Массовое использование absolute positioning в UI есть зло великое, при любом изменении языка или шрифта приводящее к очевидным багам.
Re[12]: красивый пользовательский интерфейс C++
От: Joric  
Дата: 30.01.08 05:08
Оценка:
Здравствуйте, c-smile, Вы писали:

Не понимаю, что в топике "красивый пользовательский интерфейс C++" делает wxWidgets?
Мое первое знакомство с wxAUI закончилось вот чем http://www.kirix.com/forums/viewtopic.php?f=15&amp;t=600
Он портабельный, но отнюдь не красивый. Я бы посоветовал юзать BCG-шные контролы (Visual C++ 2008 Feature Pack Beta).
Сейчас выходит все больше прикладных программ в стиле 2007-го офиса (oodefrag, pocket controller), и пользователи будут плеваться на wxWidgets.
Re[13]: красивый пользовательский интерфейс C++
От: c-smile Канада http://terrainformatica.com
Дата: 30.01.08 07:31
Оценка: +3
Здравствуйте, Joric, Вы писали:

J>Здравствуйте, c-smile, Вы писали:


J>Не понимаю, что в топике "красивый пользовательский интерфейс C++" делает wxWidgets?

J>Мое первое знакомство с wxAUI закончилось вот чем http://www.kirix.com/forums/viewtopic.php?f=15&amp;t=600
J>Он портабельный, но отнюдь не красивый. Я бы посоветовал юзать BCG-шные контролы (Visual C++ 2008 Feature Pack Beta).
J>Сейчас выходит все больше прикладных программ в стиле 2007-го офиса (oodefrag, pocket controller), и пользователи будут плеваться на wxWidgets.

Это уже как бы OT но тем не менее... "стиль 2007-го офиса" это то что было сделано для офиса и я подозреваю хорошо сугубо для оного офиса. Почему, я думаю должно быть понятно.

Вот это, я извиняюсь, но смотрится исключительно наколеночно коряво:


Интерфейс офиса, в частности Ribbon, сделан для размещения максимального количества служебных элементов в данном контексте.
Но когда у тебя всего три кнопки зачем оно нужно? ribbon не самое лучшее решение в этом случае.
Re[9]: красивый пользовательский интерфейс C++
От: Вертер  
Дата: 09.02.08 23:25
Оценка:
Здравствуйте, игппук, Вы писали:

И>Здравствуйте, Аноним, Вы писали:


А>>Сколько QT стоит? Платная версия для Комерческого использования?


И>1200-1500 евро.

But in general 1xQt Desktop Edition for a single platform will be 930 Euros.
The price for two platforms is 1380 EUR and for three platforms is 1840 EUR per license.


но это только для программы "Qt Small Business Program (SBP)".

Скоро они сделают платформу для ВинСЕ, но это тоже будет как отдельная платформа...
Re[4]: красивый пользовательский интерфейс C++
От: SaZ  
Дата: 12.02.08 02:41
Оценка:
Здравствуйте, Lepsik, Вы писали:

L>Здравствуйте, shvonder, Вы писали:


L>>>проще всего на Borland Builder

S>>Вы невнимательно прочитали требования автора вопроса:
O>>>>Условие: язык программирования C++.
S>>

L>вам наверное следует знать что Borland Builder C++ отвечает этим требованиям


Особенно борландовские расширения, которые сделали из c+= некое подобие дэлфи. Неужели в с++ есть свойства (у классов)?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.