Автор | Сообщение |
gfilatov
|
| модератор
|
Пост N: 699
Зарегистрирован: 25.05.05
|
|
Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть IV) (продолжение)
Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[см. все]
|
|
gfilatov2002
|
| moderator
|
Пост N: 333
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.02.12 13:39. Заголовок: Andrey пишет: Если ..
Andrey пишет: цитата: | Если собирать проект для МиниГуи под MinGW - собирается ОДИН ехе-ник |
| Именно так - никаких дополнительных DLL не нужно
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 2057
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.02.12 16:29. Заголовок: gfilatov2002 СПАСИБО..
gfilatov2002 СПАСИБО ! Есть ли инструкция сборки программ под MinGW (как его ставить, если уже установлен BCC) ? Кто может просветить как собирать проект под BCC и MinGW (в одном *.hbp) ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 334
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.02.12 16:50. Заголовок: Andrey пишет: Есть ..
Andrey пишет: цитата: | Есть ли инструкция сборки программ под MinGW |
| Используйте структуру каталогов, как она задана в сборке по адресу http://hmgextended.com/files/CONTRIB/hmg207-mingw.zip и собирайте свою программу с помощью батника build.bat из примеров, включенных в эту поставку. Вот и все инструкции
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 2059
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.02.12 18:22. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Спасибо ! А как указать для МойПроект.hbp сборку под MinGW ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 336
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.02.12 11:12. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как указать для МойПроект.hbp сборку под MinGW ? |
| Просто в начале батника для сборки проекта указываете цитата: | @echo off SET HMGPATH=<имя диска>:\hmg SET PATH=%HMGPATH%\harbour\bin;%HMGPATH%\mingw\bin;%PATH% ... |
| где <имя диска> - это имя корневого диска, на котором развернута сборка P.S. Готовый скрипт см. в файле minigui\buildapp.bat сборки для компилятора MinGW.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 2060
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.02.12 20:31. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Используйте структуру каталогов, как она задана в сборке по адресу |
| Не совсем понятно... У меня установлено на диск Z: Z:\BCC55 Z:\MINIGUI если добавить Z:\HMG Z:\MINIGUI то папки MINIGUI - пересекутся !!! Я могу конечно переименовать папку, но хотелось бы что в дальнейшем была возможность собирать программу с помощью любого компилятора. Можно ли как то упорядочить этот процесс ? Кто и как разместил/собирает проект несколькими компиляторами ? И где скачать(и какую версию) MinGW для MiniGui ? А то у меня не собирается.... Скрытый текст Z:\HMG\minigui>buildapp.bat Z:\hmg\mingw\bin\nm.exe: 'C:/WINDOWS/TEMP/hbmk_ex6y1x.dir/.c': No such file Z:/hmg/harbour/lib/libhbvm.a(hvmall.o)(.text+0x1ab):hvmall.c: undefined reference to `__mingw_vfprintf' collect2: ld returned 1 exit status hbmk2: Error: Running linker. 1 gcc.exe C:/WINDOWS/TEMP/hbmk_ex6y1x.dir/hbmk_d4jlpp.o Z:/HMG/minigui/_temp.o -mwindows -Wl,--start-grou p -lminigui -ltsbrowse -ladordd -lcalldll -lhbprinter -lminiprint -lhbct -lhbmisc -lhbtip -lhbziparc -lhbm zip -lminizip -lhbwin -lxhb -lmsvfw32 -lvfw32 -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtc gi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddf pt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainwin -lkernel32 -luser32 -lgdi32 -l advapi32 -lws2_32 -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmap i32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -o.exe -LZ:/hmg/harbour/lib -LZ:/hmg/ harbour/bin -LZ:/hmg/minigui/lib
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 337
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.02.12 13:18. Заголовок: Andrey пишет: Не со..
Andrey пишет: Если не хотите переименовывать папку minigui каждый раз при смене компилятора, то тогда нужно размещать эти папки на разных дисках. Andrey пишет: цитата: | Можно ли как то упорядочить этот процесс ? |
| Возможно, надо выбрать для себя приоритетный компилятор, как это сделано в текущей сборке для BCC Andrey пишет: цитата: | И где скачать(и какую версию) MinGW для MiniGui ? |
| Можно использовать версию 4.6.1 из поставки ночного релиза Харбора, который располагается по адресу http://sourceforge.net/projects/harbour-project/files/binaries-windows/nightly/
|
|
|
krutoff
|
| |
Пост N: 152
Зарегистрирован: 17.10.05
|
|
Отправлено: 24.02.12 14:40. Заголовок: sashaBG пишет: Подт..
sashaBG пишет: цитата: | Подтверждаю зависание в TSBROWSE ! |
| А у меня после ввода новых записей при заполнении окна TSBROWSE - ввода последней записи внизу окна - происходит очищение всего окна и даже тек. запись не показывает - остается только текущая ячейка. Откатился на пред. версию 2.06 - все опять отрабатывает. У меня в конце объявления TSBROWSE стоит: oBrw:nHeightCell += 6 oBrw:nHeightHead += 10 oBrw:nHeightFoot += 4 oBrw:nWheelLines := 1
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 338
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.02.12 15:12. Заголовок: krutoff пишет: у ме..
krutoff пишет: цитата: | у меня после ввода новых записей при заполнении окна TSBROWSE - ввода последней записи внизу окна - происходит очищение всего окна |
| Да, подтверждаю, есть такая бяка. Уже поправил код библиотеки tsbrowse для новой сборки - добавил проверку (см. ниже): цитата: | ... If ! ::lHitBottom .and. ! ::lAppendMode .and. ::nRowCount() == ::nRowPos() ::Refresh( .F. ) // 2.0.7 EndIf ::nAt := ::nLogicPos() //V90 ... |
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 345
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.03.12 16:46. Заголовок: АНОНС * АНОНС * АНОН..
АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Завершена подготовка к опубликованию новой версии 2.0.8, которая выйдет послезавтра. Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - добавлен новый экспериментальный элемент управления CHECKLABEL (автор - Януш Пора); - добавлена константа WIN32_LEAN_AND_MEAN при компиляции Си-кода библиотеки, как это сделано в xHarbour; - обновлена сборка Харбора версии 3.1.0dev, библиотеки HbPrint и TsBrowse; - пересобрана HMGS-IDE с текущей версией библиотеки; - добавлены новые и обновлены старые примеры Спасибо за внимание!
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 2106
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.03.12 13:22. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | добавлены новые и обновлены старые примеры |
| Подскажите пожалуйста, а есть ли возможность показа PNG-картинки без библиотеки Freeimage.dll ??? И пример, где можно посмотреть ?
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 346
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.03.12 14:23. Заголовок: Andrey пишет: есть ..
Andrey пишет: цитата: | есть ли возможность показа PNG-картинки без библиотеки Freeimage.dll |
| Если Вам не нравится отдельная библиотека Freeimage.dll, то ее можно статически встроить в приложение, откомпилированное с помощью MinGW. Правда екзешник получится более 6 МБайт. Пример, как это сделать, мне прислал Владимир Чумаченко <ChVolodymyr@yandex.ru>. Картинки выводятся на экран как с диска, так и из ресурсов приложения Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * * Static FreeImage usage * (c) 2012 Vladimir Chumachenko <ChVolodymyr@yandex.ru> * * Revised by Grigory Filatov <gfilatov@inbox.ru> */ #include "FreeImage.ch" #include "MiniGUI.ch" // Области вывода изображений имеют фиксированные размеры // Координаты области изображения из файла #define FI_TOP 30 #define FI_LEFT 30 #define FI_BOTTOM 455 #define FI_RIGHT 380 #define FI_WIDTH ( FI_RIGHT - FI_LEFT ) #define FI_HEIGHT ( FI_BOTTOM - FI_TOP ) // Координаты области изображения из ресурса #define RES_TOP FI_TOP #define RES_LEFT ( FI_RIGHT + 50 ) #define RES_BOTTOM FI_BOTTOM #define RES_RIGHT 780 #define RES_WIDTH ( RES_RIGHT - RES_LEFT ) #define RES_HEIGHT ( RES_BOTTOM - RES_TOP ) // Имена ресурсов (соответсвуют определениям Demo.rc), хотя можно определить // свои и связывать их в процедуре загрузки. #define PNG_BIRD 'BIRD' #define PNG_SEA 'SEA' #define JPG_TOWN 'TOWN' #define JPG_WATERFALL 'WATERFALL' // Имя файла, имя ресурса Static cFileImg Static cResImg /****** * * Вывод графики из файла и ресурса * */ Procedure Main FI_Initialise() Set font to 'Tahoma', 9 Define window wMain ; At 0, 0 ; Width 810 ; Height 525 ; Title 'FreeImage Demo' ; NoMaximize ; NoSize ; Icon 'MAINICON' ; Main ; On Release FI_DeInitialise() ; On Paint { || ShowFile(), ShowRes() } Define main menu Define Popup '&File' MenuItem '&Open' Action OpenImgFile() Separator MenuItem 'E&xit Alt+X' Action ReleaseAllWindows() End Popup // !!! Все пункты меню связаны с именем соответствующего ресурса Define Popup '&Resourse' MenuItem 'Bird (png)' Action OpenImgRes( PNG_BIRD , 'PNG' ) MenuItem 'Sea (png)' Action OpenImgRes( PNG_SEA , 'PNG' ) MenuItem 'Town (jpg)' Action OpenImgRes( JPG_TOWN , 'JPG' ) MenuItem 'Waterfall (jpg)' Action OpenImgRes( JPG_WATERFALL, 'JPG' ) End Popup End menu @ ( FI_TOP - 25 ), ( FI_LEFT - 25 ) Frame frmFile ; Caption 'File' ; Width ( FI_WIDTH + 45 ) ; Height ( FI_HEIGHT + 45 ) @ ( RES_TOP - 25 ), ( RES_LEFT - 25 ) Frame frmResource ; Caption 'Resource' ; Width ( RES_WIDTH + 45 ) ; Height ( RES_HEIGHT + 45 ) End window On Key Alt+X of wMain Action ReleaseAllWindows() Center window wMain Activate window wMain Return ****** End of Main ****** /****** * * OpenImgFile() * * Выбор файла для загрузки * */ Static Procedure OpenImgFile Local cFile := GetFile( { { 'Image files (*.bmp;*.jpg;*.jpeg;*.gif;*.png;*.psd;*.tif;*.ico)', ; '*.bmp;*.jpg;*.jpeg;*.gif;*.png;*.psd;*.tif;*.ico' ; } ; }, 'Select image', GetCurrentFolder(), .F., .T. ) If !Empty( cFile ) cFileImg := cFile wMain.frmFile.Caption := cFileNoPath( cFile ) ShowFile() Endif Return ****** End of OpenImgFile ****** /****** * * ShowFile() * * Вывод изображения из файла * */ Static Procedure ShowFile Static nHandleFileImg Local nTop := FI_TOP , ; nLeft := FI_LEFT , ; nBottom := FI_BOTTOM, ; nRight := FI_RIGHT , ; cImage , ; pps , ; hDC , ; nWidth , ; nHeight , ; cID , ; aData , ; nKoeff , ; nHandleClone If !( nHandleFileImg == nil ) FI_Unload( nHandleFileImg ) nHandleFileImg := nil Endif If IsNil( cFileImg ) Return Else nHandleFileImg := FI_Load( FI_GetFileType( cFileImg ), cFileImg, 0 ) // Загрузка рисунка Endif InvalidateRect( Application.Handle, 1, FI_LEFT, FI_TOP, FI_RIGHT, FI_BOTTOM ) nWidth := FI_GetWidth( nHandleFileImg ) nHeight := FI_GetHeight( nHandleFileImg ) If ( ( nHeight > FI_HEIGHT ) .or. ( nWidth > FI_WIDTH ) ) If ( ( nHeight - FI_HEIGHT ) > ( nWidth - FI_WIDTH ) ) nKoeff := ( FI_HEIGHT / nHeight ) Else nKoeff := ( FI_WIDTH / nWidth ) Endif nHeight := Round( ( nHeight * nKoeff ), 0 ) nWidth := Round( ( nWidth * nKoeff ), 0 ) nHandleClone := FI_Clone( nHandleFileImg ) FI_Unload( nHandleFileImg ) nHandleFileImg := FI_Rescale( nHandleClone, nWidth, nHeight, FILTER_BICUBIC ) FI_Unload( nHandleClone ) Endif If ( nWidth < FI_WIDTH ) nLeft += Int( ( FI_WIDTH - nWidth ) / 2 ) nRight := ( nLeft + nWidth ) Endif If ( nHeight < FI_HEIGHT ) nTop += Int( ( FI_HEIGHT - nHeight ) / 2 ) nBottom := ( nTop + nHeight ) Endif pps := DefinePaintStru() hDC := BeginPaint( Application.Handle, pps ) FI_WinDraw( nHandleFileImg, hDC, nTop, nLeft, nBottom, nRight ) EndPaint( Application.Handle, pps ) Return ****** End of ShowFile ****** /****** * * OpenImgRes( cRes, cType ) * * Загрузка рисунка из ресурса * */ Static Procedure OpenImgRes( cRes, cType ) Local cData := Win_LoadResource( cRes, cType ) If !Empty( cData ) cResImg := cData wMain.frmResource.Caption := ( cRes + ' (' + cType + ')' ) ShowRes() Else MsgExclamation( cRes + ' not found.', 'Error' ) Endif Return ****** End of OpenImgRes ****** /****** * * ShowRes() * * Вывод рисунка из переменной (ресурса, загруженного в память) * */ Static Procedure ShowRes Static nHandleResImg Local nTop := RES_TOP , ; nLeft := RES_LEFT , ; nBottom := RES_BOTTOM, ; nRight := RES_RIGHT , ; cImage , ; pps , ; hDC , ; nWidth , ; nHeight , ; cID , ; aData , ; nKoeff , ; nHandleClone If !( nHandleResImg == nil ) FI_Unload( nHandleResImg ) nHandleResImg := nil Endif If Empty( cResImg ) Return Else nHandleResImg := FI_LoadFromMem( FI_GetFileTypeFromMem( cResImg, Len( cResImg ) ), cResImg, 0 ) Endif InvalidateRect( Application.Handle, 1, RES_LEFT, RES_TOP, RES_RIGHT, RES_BOTTOM ) nWidth := FI_GetWidth( nHandleResImg ) nHeight := FI_GetHeight( nHandleResImg ) If ( ( nHeight > RES_HEIGHT ) .or. ( nWidth > RES_WIDTH ) ) If ( ( nHeight - RES_HEIGHT ) > ( nWidth - RES_WIDTH ) ) nKoeff := ( RES_HEIGHT / nHeight ) Else nKoeff := ( RES_WIDTH / nWidth ) Endif nHeight := Round( ( nHeight * nKoeff ), 0 ) nWidth := Round( ( nWidth * nKoeff ), 0 ) nHandleClone := FI_Clone( nHandleResImg ) FI_Unload( nHandleResImg ) nHandleResImg := FI_Rescale( nHandleClone, nWidth, nHeight, FILTER_BICUBIC ) FI_Unload( nHandleClone ) Endif If ( nWidth < FI_WIDTH ) nLeft += Int( ( FI_WIDTH - nWidth ) / 2 ) nRight := ( nLeft + nWidth ) Endif If ( nHeight < FI_HEIGHT ) nTop += Int( ( FI_HEIGHT - nHeight ) / 2 ) nBottom := ( nTop + nHeight ) Endif pps := DefinePaintStru() hDC := BeginPaint( Application.Handle, pps ) FI_WinDraw( nHandleResImg, hDC, nTop, nLeft, nBottom, nRight ) EndPaint( Application.Handle, pps ) Return ****** End of ShowRes ****** #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #include "hbapiitm.h" // Определение структуры для рисования HB_FUNC_STATIC( DEFINEPAINTSTRU ) { PAINTSTRUCT *pps = (PAINTSTRUCT*) hb_xgrab( sizeof( PAINTSTRUCT ) ); hb_retnl( (LONG) pps ); } #pragma ENDDUMP
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 2107
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.03.12 17:34. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | е можно статически встроить в приложение, откомпилированное с помощью MinGW |
| Я так и не смог собрать примеры на МиниГуи с помощью MinGW ....
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 347
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.03.12 11:29. Заголовок: Новый релиз библиоте..
|
|
|
Dr. Oldwarez
|
| постоянный участник
|
Пост N: 190
Зарегистрирован: 27.07.08
|
|
Отправлено: 14.03.12 12:20. Заголовок: Залипание последней ..
Залипание последней строки и периодическое исчезновение FOOTERа так никуда и не делось
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.03.12 12:21. Заголовок: Для gfilatov2002: П..
Для gfilatov2002: При инициализации дочернего окна MDI в c_windowMDI.c неточность: Скрытый текст HB_FUNC( INITMDICHILDWINDOW ) { HWND hwndChild; MDICREATESTRUCT mcs; char rgch[ 150 ]; static int cUntitled; int Style = 0; if( hb_parl(9) ) rgch[ 0 ] = 0; else { if( hb_parc(2) == NULL ) wsprintf( rgch, "Untitled%d", cUntitled++ ); else { strncpy( rgch, hb_parc(2), 149 ); rgch[ 149 ] = 0; } } if( !hb_parl(7) ) Style = Style | WS_MINIMIZEBOX; // ??? Эти константы не работаеют нужны WS_MINIMIZE if( !hb_parl(8) ) Style = Style | WS_MAXIMIZEBOX; // ??? Эти константы не работаеют WS_MAXIMIZE if( hb_parl(10) ) Style = Style | WS_VSCROLL; if( hb_parl(11) ) Style = Style | WS_HSCROLL; // Create the MDI child window mcs.szClass = "MdiChildWndClass"; // window class name mcs.szTitle = rgch; // window title mcs.hOwner = GetModuleHandle( NULL ); // owner mcs.x = hb_parni( 3 ); // x position mcs.y = hb_parni( 4 ); // y position mcs.cx = hb_parni( 5 ); // width mcs.cy = hb_parni( 6 ); // height mcs.style = Style; // window style mcs.lParam = 0; // lparam hwndChild = ( HWND ) SendMessage( ( HWND ) hb_parnl(1), WM_MDICREATE, 0, ( LPARAM ) ( LPMDICREATESTRUCT ) &mcs ); if( hwndChild != NULL ) ShowWindow( hwndChild, SW_SHOW ); hb_retnl( ( LONG ) hwndChild ); }
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 348
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.03.12 14:34. Заголовок: Dr. Oldwarez пишет: ..
Dr. Oldwarez пишет: цитата: | Залипание последней строки и периодическое исчезновение FOOTERа так никуда и не делось |
| Вы правы, но появился пример, как обойти этот баг (см. в папке samples\Advanced\Tsb_LASTROW)
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 349
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.03.12 14:37. Заголовок: SergKis пишет: При ..
SergKis пишет: цитата: | При инициализации дочернего окна MDI в c_windowMDI.c неточность |
| Спасибо! Вы правы, но это должно быть исправлено по-другому (я уже сделал поправку для следующей сборки)
|
|
|
Dr. Oldwarez
|
| постоянный участник
|
Пост N: 191
Зарегистрирован: 27.07.08
|
|
Отправлено: 14.03.12 16:29. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Вы правы, но появился пример, как обойти этот баг (см. в папке samples\Advanced\Tsb_LASTROW) |
| ДА! procedure CorrectionFirstLast(oBrw) *--------------------------------------------------------------------------------* IF oBrw:nRowCount() == oBrw:nRowPos() oBrw:Refresh( .F. ) ENDIF IF oBrw:nLogicPos() > 0 .and. oBrw:nRowPos() == 1 oBrw:Refresh( .F. ) ENDIF RETURN И ведь работает! Огромное Вам спасибо!
|
|
|
sashaBG
|
| постоянный участник
|
Пост N: 103
Зарегистрирован: 15.09.05
|
|
Отправлено: 15.03.12 16:44. Заголовок: Как предотвратиь срабатывание ONLOST или VALID...
Как предотвратиь срабатывание ONLOST или VALID при BTNTEXTBOX или GETBOX когда нажимая на бутон вызывем например свой 'поисковик' . Я раньше создавал флаг lDisableOnLost и поднимал его по нажатии кнопки. а сейчас не могу добится етого. Поетому так и остался на версии 2.0.5 ТЕСТ соберите с 2.0.5 потом с 2.0.8 и посмотрите на разницу при нажатии кнопок
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[см. все]
|
|