Develstudio как сделать смену картинок из папки
Перейти к содержимому

Develstudio как сделать смену картинок из папки

  • автор:

Как создать программу Лаунчер по замене и обновлению файлов?

PHP (/pi:.eɪtʃ.pi:/ англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста»; первоначально Personal Home Page Tools — «Инструменты для создания персональных веб-страниц») — скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений.

Где вы тут GUI нашли?! Забудьте про PHP Devel Studio! Это бяка!

Ответ написан более трёх лет назад
Евгений Веклич @dgonsega Автор вопроса

😀 Я не спорю что PHP Devel Studio бяка. Просто смог реализовать проект там. А на каком языке еще написать подобный лаунчер с 0 не знаю.

Ну хотя бы Delphi — вы пишите, что изучали его.
Евгений Веклич @dgonsega Автор вопроса
Антон: изучал =) (Технарь образование) Онлайн программирование не обучал не кто
Ваш ответ на вопрос

Войдите, чтобы написать ответ

javascript

  • JavaScript
  • +1 ещё

Как текущий баланс пользователя вытащить через API в ISPmanager / BILLmanager?

  • 1 подписчик
  • час назад
  • 40 просмотров

PHP devel studio Слайд изображений

Здравствуйте! Кто разбирается в PHP помогите пожалуйста сделать так чтобы при нажатии кнопки менялась картинка, и при повторном нажатии этой же кнопки менялась на следующею картинку, потом ещё на одну при нажатии, и при окончании начинала слайд по новому с первой картинки.

Лучший ответ
PHP DevelStudio — Вопросы и ответы
Источник: http://develstudio.ru/faq/
Остальные ответы
я могу сказать, но только на c#/c++

зачем вам это через пых реализовывать? гораздо проще через джес. да и эффектов можно кучу прикрутить с jquery . Нет, если через пых прям жизненная необходимость — то можно конечно подумать)))

ДмитрийГуру (4508) 6 лет назад

Речь идет не просто о PHP, а о «PHP devel studio». Это платформа для создания php приложений. Более 10 лет назад она использовалась всякими школьными дебилоидами, чтобы создавать всякие фейковые формы авторизаций для «взлома» пароля. Вангую автор ничего не шарит в программирование, нашел где-то говеный устаревший тюториал и с надежной пытается повторить нечто подобное.

DevelNext – Графические объекты, позиционирование

Про динамическое создание объектов упоминается в документации на хабе, но я хочу упомянуть про некоторые нюансы, с которыми можно столкнуться при разработке в DN. .
Документация – динамическое создание элементов.

Все графические объекты начинаются с UX: UXButton, UXLabel и т.д. Список объектов можно увидеть в подсказках.

Для добавления дочерних объектов у всех родительских элементов есть метод add (все layout панели) или ->items->add(таблица UXTableView, список UXListView).

Изображения

Для изображений существуют классы UXImage и UXImageView.
UXImage – отвечает за загрузку, хранение в памяти, сохранение графического изображения. Загружать можно по ссылке, из файла, из ресурсов, всё есть в документации.
UXImageView – отвечает за отображение содержимого UXImage.

Событие — появление формы
// Загрузим изображение по ссылке
$img = UXImage:: ofUrl ( ‘https://pp.userapi.com/c623900/v623900473/64549/SZqwB6QZ6ZA.jpg’ ) ;
// или из файла
$img = new UXImage ( ‘path/to/image.jpg’ ) ;
// или из ресурсов
$img = new UXImage ( ‘res://.data/img/image.jpg’ ) ;
$imageView = new UXImageView ( $img ) ; // Добавляем в контейнер для отображения картинки
$this — > add ( $imageView ) ; // Добавляем на форму

Текст

Текст можно отобразить в объектах UXLabel и UXLabelEx, разница лишь в том, что последний умеет подстраиваться под размер текста, есть свойство autosize.
Текст с автоматическим переносом можно создать так:

$label = new UXLabel ( str_repeat ( ‘очень ‘ , 30 ) . ‘длинный текст’ ) ;
$label — > wrapText = true ; // Включаем перенос
$label — > leftAnchor =
$label — > rightAnchor = 1.0 ; // Закрепляем слева и справа
$this — > add ( $label ) ; // Добавляем на форму

До изменения размеров

После изменения размеров

Шрифт

Шрифт у объектов нельзя изменять, можно лишь присвоить свойству ->font новый объект с новым шрифтом.

$label = new UXLabel ( ‘text123’ ) ;
$label — > font — > size = 16 ; // Так нельзя, ошибка.
$label — > font — > withBold ( ) ; // Так тоже не получится
// Только так:

$label — > font = $label — > font — > withBold ( ) — > withSize ( 16 ) ; // Будет создан новый объект UXFont

Как подключить свой шрифт описано в отдельной статье.

Списки

За объект список отвечает класс UXListView. Содержимое списка хранится в свойстве ->items , из названия методов, думаю, можно понять, какой за что отвечает.
Можно добавлять как обычные текстовые элементы, так и объекты с изображением, панелями и т.д.

$this — > listView — > items — > add ( ‘текст1’ ) ;
$this — > listView — > items — > add ( new UXHBox ( ) ) ;
// или несколько объектов сразу
$this — > listView — > items — > addAll ( [
new UXLabelEx ( ‘текст’ ) ,
new UXImageView ( new UXImage ( ‘path/to/image’ ) )
var_dump ( $this — > listView — > items — > count ( ) ) ; // выведет количество элементов
foreach ( $this — > listView — > items as $item ) < // элементы списка можно обработать в цикле

Таблицы

Методы у таблицы (UXTableView) схожи с методами списков (UXListView). Так же есть свойство ->items, где хранится содержимое таблицы; есть свойство ->columns (с такими же методами add, remove, etc…), где хранятся столбцы таблицы.
Отличие от списка лишь в том, что при добавлении данных нужно передать ассоциативный массив с id столбцов.
Например, есть таблица со столбцами id, name, value:

Чтоб добавить данные напишем такой код:

// Добавляем текстовые данные
// Обратите внимание, что массив виде id_cтолбца => значение
$this — > table — > items — > add ( [ ‘id’ = > 1 , ‘name’ = > ‘Name 1’ , ‘value’ = > ‘Value 1’ ] ) ;
// Также можно добавлять различные объекты
$image = new UXImageView ( new UXImage ( ‘res://.data/img/russian.png’ ) ) ;
$image — > size = [ 25 , 25 ] ;
// цветной текст
$label = new UXLabelEx ( ‘Hello’ ) ;
$label — > backgroundColor = UXColor:: of ( ‘#55CCCC’ ) ;
$this — > table — > items — > add ( [ ‘id’ = > 2 , ‘name’ = > $label , ‘value’ = > $image ] ) ;

Для добавления столбца необходимо создать объект UXTableColumn

$column = new UXTableColumn ;
$column — > text = ‘Новый столбец’ ;
$column — > id = ‘new_column’ ;
$this — > table — > columns — > add ( $column ) ;

У столбцов есть возможность сортировки содержимого, но сортировка работает совсем не так как нужно, поэтому я написал класс для сортировки таблиц – GitHub, проект

Новая сортировка таблиц

Панель табов

Класс для панели табов – UXTabView
Новые табы (UXTab) можно добавить аналогично столбцам в таблице, но есть особенность – нужно на таб добавить какую-нибудь layout-панель, чтоб добавить на таб содержимое.

$tab = new UXTab ; // Создаём таб
$tab — > text = ‘New Tab’ ; // Текст таба

$tab — > content = new UXPane ; // Панель для содержимого, необязательно UXPane, можно например UXAnchorPane

$tab — > content — > add ( new UXLabel ( ‘Это новый таб’ ) ) ; // Добавляем текст на таб
$this — > tabPane — > tabs — > add ( $tab ) ; // Добавляем таб
// Меняем фокус на последний, нами созданный таб
$this — > tabPane — > selectedIndex = $this — > tabPane — > tabs — > count — 1 ;

Добавить содержимое на конкретный таб можно так:

// Добавим текст на там с индексом 0
$this — > tabPane — > tabs — > offsetGet ( 0 ) — > content — > add ( new UXLabel ( ‘test123’ ) ) ;
// или в цикле переберём все табы
foreach ( $this — > tabPane — > tabs as $k = > $tab ) < /** @var UXTab $tab **/ // Комментарий чтоб редактор отображал подсказки $tab - > content — > add ( new UXLabel ( ‘Это таб №’ . $k ) ) ;

Объекты, отвечающие за разметку (Layout)

UXPane – просто панель, позиционирование объектов задаётся в их параметрах x и y.

UXScrollPane – панель с поддержкой скролла, если размер содержимого больше размера панели. Особенность в том, что напрямую добавить объект $scrollPane->add() не получится. Нужно сначала создать внутри объекта контейнер или панель, от которой будет зависеть наличие скролла, а на эту панель помещать объекты

UXScrollPane
$scrollPane = new UXScrollPane ;
$scrollPane — > content = new UXPanel ; // Сначала создаём панель для объектов
$scrollPane — > content — > add ( new UXLabel ( ‘text’ ) ) ; // На панель помещаем объекты
$scrollPane — > content — > add ( new UXTextArea ) ;

UXAnchorPane – если объект расположен в этой панели, есть возможность указать якорь (к какому краю будет привязан объект), это свойства topAnchor, leftAnchor, rightAnchor, bottomAnchor. Например, $object->rightAnchor = 3.5 будет означать, что объект расположен на 3,5 пикселя от правого края панели.

UXVBox и UXHBox – располагают объекты вертикально или горизонтально соответственно

$box = new UXVBox ( [ $object1 , $object2 , . . . ] ) ;
$box — > add ( $object ) ;

UXFlowPane – Может располагать объекты по-горизонтали или по-вертикали, содержимое перемещается на новую строку, если не влазят в заданную ширину.

FlowPane: Объекты влазят по ширине

После ресайза окна объекты не влазят и автоматически переносятся на новую строку

UXTilePane – аналогично UXFlowPane, только объекты располагаются в сетке с одинаковой шириной ячеек.

Позиционирование объектов

Для позиционирования объектов нам помогут объекты из пункта выше layout. Сами по себе объекты кнопка (UXButton), текст (UXLabel) и т.д. не могут быть позиционированы без использования layout объектов (только абсолютно – с указанием x и y), для этого их нужно разместить в UXAnchorPane или UXHBox и т.п., в зависимости от того, что нам нужно.

Внутри UXHBox и UXVBox layout объекты тоже могут позиционироваться (растягиваться) по-разному:
для UXHBox есть метод UXHBox::setHgrow($object, $rule);
для UXVBoxUXVBox::setVgrow($object, $rule);
$object – графический объект
$rule – правило, по которому будет растягиваться объект внутри layout – NEVER, ALWAYS, SOMETIMES

Dropbox Chat

Как это обычно бывает в воскресное утро, а тем более когда на улице опять неважная погода, начинаешь искать себе интересное занятие. И как-то бросилось мне в глаза, что Dropbox опять синхронизирует какие-то файлы, и очень быстро. На столько быстро, что можно сделать не что иное, как… чат!
Довольно странная идея, но раз захотелось — нужно сделать.

Что из этого вышло

Так, как пишу я под веб, то в качестве IDE была выбрана PHP DevelStudio, что делает поделку чуть более странной, но другого выхода написать всё за час с немногим у меня не было, а за большее время весь мгновенный энтузиазм испарился бы.

И так, для простоты решено было хранить сообщения в простом текстовом файле. Сначала была мысль о какой-то структуре, но во имя простоты чтения файла без приложения и от этого отказался, и все сообщения хранятся «кучей» в хронологическом порядке.

При первом запуске спрашивается логин, и путь к файлу, в котором будет вестись чат:

Затем после ввода данных появляется аскетичное окошко чата:

Появляются уведомления о входе и выходе из чата, а также, собственно, сообщения. Как видно по скриншоту, задержка составляет несколько секунд, но это же не ICQ, тут главное результат, и он был достигнут.

В принципе, использовать приложение можно и просто открыв файл из общего расположения локальной сети.

Приложение проверялось на Windows XP, 7 и Ubuntu 11.10 под Wine.

Резюме

Теперь к функционалу любимого многими Dropbox можно смело добавить ещё одну функцию, а стартовых 2 Гб пространства хватит на долгие годы переписки.

Спасибо за внимание, интересных вам идей!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *