LINUX.ORG.RU

Заменить файловый диалог


0

1

Не то, чтобы я первый раз вижу сишку, но дальше приветмира на ней точно не писал. Нашел кусок кода, который показывает файловый диалог(судя по каментам и здравому смыслу). Хочу заменить его на KDEшный. Это вообще законно можно провернуть?

Речь идет о luakit и вот этой функции.

Наверное, cast megabaks, он правил файловый диалог для хромиума, если мне не изменяет склероз.

★★

Ответ на: комментарий от OldManClone

Первое требование какое-то пророческое, зараза. Взгрустнулось.

S-Mage ★★
() автор топика
Ответ на: комментарий от OldManClone

А всё могло бы быть иначе

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

Эта культура должна была зародиться сразу, пока школие не набежало, сейчас усе. Вперду, только вперду.

baverman ★★★
()
Последнее исправление: baverman (всего исправлений: 1)
Ответ на: комментарий от baverman

маски - хз множественный выбор через newline. Вообще это была бы мегаполезная фича. Ну и кстати в гноме ж так и сделано (было?).

qnikst ★★★★★
()
Ответ на: комментарий от baverman

Ну зачем сразу вперду. Вместо этих ваших текстов можно было бы использовать всякие там семантические радости, тот же нелюбимый всеми xml, например. Что в нем плохого, кстати?

S-Mage ★★
() автор топика
Ответ на: комментарий от qnikst

множественный выбор через newline

fail. Имя файла может содержать \n. Опять же, что делать с остальными системами? Тащить стандартный (референсный) бинарь открытия файлов в винду?

Автор той заметки никто иной как лесной эльф. Слишком большая цена за возможность кастомизации.

baverman ★★★
()
Ответ на: комментарий от S-Mage

Вместо этих ваших текстов можно было бы использовать всякие там семантические радости, тот же нелюбимый всеми xml

Да, да. Сможешь набрать пяток рабочих/использующихся протоколов, которые разрабатывались всем миром вместо одной компании с последующим насаждением?

baverman ★★★
()
Ответ на: комментарий от baverman

Опять же, что делать с остальными системами?

Игнорировать их.

fragmentor
()
Ответ на: комментарий от baverman

fail. Имя файла может содержать \n.

не мой fail. \n и прочие непечатаемые символы нужно представлять через \0номер.

Опять же, что делать с остальными системами?

в чем проблема?

Тащить стандартный (референсный) бинарь открытия файлов в винду?

в чем проблема? всё равно все qt/gtk и т.п. сделают свой, а в gtk как я уже сказал он и так есть. Тем более пакетов решающих подобные задачи и так дофига: kgtk, kdialog, zenity... Для того кому не важен принцип всё будет работать из коробки как сейчас, ну +1 процесс на открытие.

Автор той заметки никто иной как лесной эльф. Слишком большая цена за возможность кастомизации.

нехилый такой эльф.

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от qnikst

а в gtk как я уже сказал он и так есть.

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

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

baverman ★★★
()
Ответ на: комментарий от baverman

Я вряд ли, но зачем-то же есть всякие там удивительно умные организации, комитеты, freedesktop.org, например.

S-Mage ★★
() автор топика
Ответ на: комментарий от baverman

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

не очевидно, разясни.

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

qnikst ★★★★★
()
Ответ на: комментарий от baverman

Сразу возникает вопрос, как передавать маски файлов, как возвращать множественный выбор

А сейчас есть LD_LIBRARY_PATH. Меняй на тулкит со своим диалогом и всё. Сишное API позволяет передавать почти всё, что угодно.

monk ★★★★★
()
Ответ на: комментарий от baverman

Вот если бы у рыбы была шерсть, в ней были бы блохи если бы в коде было xdg-open file_dialog, было бы легче жить, разве не так?

S-Mage ★★
() автор топика
Ответ на: комментарий от qnikst

не очевидно, разясни.

Мифический диалог позволяет выбрать файл, лежащий на, допустим, ftp. Как приложение должно обрабатывать такой uri? Мы же заботимся о пользователях и все должно быть прозрачно?

baverman ★★★
()
Ответ на: комментарий от qnikst

zenity енмип.

Зенити это зенити. Он с тем же успехом мог бы и кутевый диалог казать.

baverman ★★★
()
Ответ на: комментарий от monk

А сейчас есть LD_LIBRARY_PATH.

Дык, я про тоже. Сишный интерфейс есть, а протокола для связи двух приложений нет.

baverman ★★★
()
Ответ на: комментарий от qnikst

Ну аналогом zenity для кед будет kdialog, кстати. А нельзя извратиться и вызвать как-то типа

system('kdialog --getsavefilename ~/Documents -- #{?}')

? Только что ставить вместо #{?}?

S-Mage ★★
() автор топика
Ответ на: комментарий от S-Mage

Терпеть ненавижу сишные строки, кто-нибудь, будьте лапочками, соберите мне строку с дефолтным каталогом и дефолтным именем, чтобы я мог это отправить и получить путь, в который уже можно сохранять объект.

S-Mage ★★
() автор топика
Ответ на: комментарий от S-Mage

Или вообще «5 минут на скриптах» и переписать функцию сохранения на уровне lua и не насиловать честным людям мозги? Lua-то может положить файл по заданному пути? Пойду погуглю.

S-Mage ★★
() автор топика
Ответ на: комментарий от baverman

Не пони, как в lua ловить выхлоп запущенной программы?

fn = os.execute("kdialog --getsavefilename ~/Documents")
/home/s/Documents/k_factor_method.pdf
> print(fn)
0

Ерунда, однако.

S-Mage ★★
() автор топика
Ответ на: комментарий от baverman

Смотрю. Теперь эта красота даже диалог не хочет открывать, хотя в консольке вроде работает. Делаю так:

file = io.popen("kdialog --getsavefilename ~/Documents")
fn = file:read()
S-Mage ★★
() автор топика
Ответ на: комментарий от S-Mage

На os.execute программа реагирует, кстати. Только толку нам с этого.

S-Mage ★★
() автор топика
Ответ на: комментарий от baverman
Lua 5.2.2  Copyright (C) 1994-2013 Lua.org, PUC-Rio
> f = io.popen('zenity --file-selection')
> print(f:read())
/home/bobrov/Pictures/fun/cats.jpg
> f:close()

kdialog по известным причинам проверить не могу.

baverman ★★★
()
Ответ на: комментарий от baverman

В консоли все работает хорошо. В программе ошибка такая(гуглю, как исправить):

attempt to index global 'io' (a nil value)

S-Mage ★★
() автор топика
Ответ на: комментарий от S-Mage

Не, вопрос был о том для чего ты используешь файловый диалог. Просто я сейчас пытаюсь представить где бы он мне пригодился в браузере. Наверное, при указании каталога куда скачивать файл или при открытии страницы с диска, но у меня таких юзкейсов не возникает.

winlook38 ★★
()
Ответ на: комментарий от baverman

Да, local io = io.

Теперь совсем какой-то треш пошел.

** (luakit:24486): CRITICAL **: void webkit_download_start(WebKitDownload*): assertion `priv->timer == NULL' failed

S-Mage ★★
() автор топика
Ответ на: комментарий от S-Mage

Картинки, впрочем, сохраняет. У сайтов теряет кодировку, зараза такая.

S-Mage ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.