Вот завершенный код для собственного выбора файлов GTK, дополненный решением из jackw11111:
static void cb_SaveFileAs(GtkWidget *caller) // callback function
{
GtkWindow *parent_window = GTK_WINDOW(caller); // assuming that the caller is GtkWindow
GtkFileChooserNative *native;
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;
gint res;
native = gtk_file_chooser_native_new("Save File",
parent_window,
action,
"_Save",
"_Cancel");
// Filters
filter = gtk_file_filter_new(); // filter 1
gtk_file_filter_set_name(filter, "Project file");
gtk_file_filter_add_pattern(filter, ".proj");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(native), filter);
filter = gtk_file_filter_new(); // filter 2
gtk_file_filter_set_name(filter, "All files");
gtk_file_filter_add_pattern(filter, "*");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(native), filter);
// default file name
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(native), "my_file_name");
res = gtk_native_dialog_run(GTK_NATIVE_DIALOG(native));
if (res == GTK_RESPONSE_ACCEPT)
{
char *filename;
GtkFileChooser *chooser = GTK_FILE_CHOOSER(native);
filename = gtk_file_chooser_get_filename(chooser);
// save the file
save_to_file(filename);
g_free(filename);
}
g_object_unref(native);
}
Flash и Flex используют один и тот же базовый движок рендеринга, только с разными интерфейсами. Flash лучше подходит для создания фильмов и анимации. Flex лучше для разработки приложений.
Flex - это библиотека кода, написанная на ActionScript3, поэтому она добавляет множество возможностей и материалов, похожих на стандартные библиотеки, во Flash. Недостатком является то, что это огромный код, который включается в ваше приложение. Если в вашем приложении вообще используется какой-либо Flex, размер загружаемого SWF-файла возрастает на 100 К.
Если в вашем приложении есть какие-либо виджеты пользовательского интерфейса, вам почти придется использовать Flex, так как сам Flash имеет только самые основные вещи, такие как текстовые поля. Flex имеет полный XML-интерфейс с макетами, связыванием данных, настройкой XML и т. Д.
Делая это во флэш-памяти, вы в конечном итоге должны писать с нуля такие вещи, как списки ...
Я считаю, что Flex - это больше решение для приложений RIA, где вам нужно разрабатывать решения на основе приложений. С помощью Flex вы получаете много полезного, но это также имеет цену с точки зрения размера файла, степени детализации и т. Д.
Если, с другой стороны, вы работаете над полностью индивидуальным решением, таким как игра тогда, возможно, Flash это путь, потому что вы можете начать все заново с чистого холста. Многие все еще используют Flash, потому что им не нужны все навороты на основе приложений платформы Flex.
Flash и Flex - это две разные вещи: одна - это инструмент проектирования с поддержкой сценария действия, другая - среда, которая также имеет сценарий действия, но в основном построена на MXML, который является XML на основе определения пользовательского интерфейса "Язык".
Flash - это среда IDE, используемая (как правило) для создания анимации и объектов, которые хорошо работают на временной шкале.
Flex лучше работает для создания интернет-приложений, взаимодействие которых более похоже на рабочий стол.
Зачем использовать Flash? Ну, конечно, если вам нужно сделать что-то более конкретное, привязанное к временной шкале!
[...] зачем мне использовать Flash без flex?
Flex - это новый продукт, тогда как Flash существовал со времен Macromedia. Дизайнеры, аниматоры и большинство тех, кто не воспитан на базовых принципах обучения программированию, вероятно, найдут Flash легче освоить, чем большинство других подобных решений.
Цель другая. Flex больше предназначен для программиста, а Flash более дружелюбен для художника / веб-дизайнера.
Мне нравится свобода Flash, и очень просто встраивать ресурсы во Flash, что немного сложнее сделать в Flex.
Одна вещь, которая мне нравится в гибкости, - это возможность нанесите жидкость с минимальными усилиями. Во Flash это заняло бы вечность.
Все, что вы можете сделать во флексе, вы можете сделать во Flash, просто может занять намного больше времени. Однако вы не можете сделать все в Flex, что вы можете сделать во Flash.
Flex позаботится обо всем программировании пользовательского интерфейса за вас и позволяет вам сосредоточиться на бизнес-логике, с помощью Flash вы потратите большую часть времени на программирование пользовательского интерфейса. .
Потому что архитекторы планировали использовать find (id) именно таким образом, как указано в RDoc:
Find by id - Это может быть либо конкретный id (1), либо список идентификаторов. (1, 5, 6) или массив идентификаторов ([5, 6, 10]). Если не может быть найдено ни одной записи для всех перечисленных идентификаторов, то будет сгенерирован RecordNotFound.
Если вы не хотите вызывать исключение, используйте find_by_id, который вернет nil, если не может найти объект с указанный идентификатор. Тогда ваш пример будет User.find_by_id (1)
.
Разрабатывая в среде Flash или в чистом ActionScript, вы ничего из этого не получите. Любой, кто разрабатывает чистые приложения AS3, должен либо очень кодировать , чтобы отделить бизнес-логику от рендеринга, либо столкнется с серьезным снижением производительности.
Вы можете легко разрабатывать приложения Flex под Linux, но с Flash вы просто не можете.
С точки зрения программиста, большая разница между Flash и Flex не столько в том, какую IDE / приложение вы используете для программирования, но программируете ли вы только на ActionScript (AS), вам может потребоваться вернуться во Flash, чтобы выполнить реальную работу по программированию и упаковке компонента
Flash (или Flex IDE в режиме проекта ActionScript):
Плюсы:
Минусы:
Вкратце: выберите правильный инструмент для правильной задачи.
Flex означает, что вы будете читать лот документацииFlash (или Flex IDE в Режим проекта ActionScript):
Плюсы:
Минусы:
Вкратце: выберите правильный инструмент для правильной задачи.
Flex означает, что вы будете читать лот документацииFlash (или Flex IDE в Режим проекта ActionScript):
Плюсы:
Минусы:
Вкратце: выберите правильный инструмент для правильной задачи.
Минусы:
Вкратце: выберите правильный инструмент для правильной задачи.
Минусы:
Вкратце: выберите правильный инструмент для правильной задачи.