40static void file_released_callback(
void *w_,
void *button,
void* user_data);
41static void combo_response(
void *w_,
void* user_data);
42static void set_selected_file(
FileDialog *file_dialog);
44static void draw_window(
void *w_,
void* user_data) {
48 int width = metrics.
width;
49 int height = metrics.
height;
52 cairo_rectangle(w->
crb,0,0,width,height);
58 cairo_set_font_size (w->
crb, 12.0);
59 cairo_move_to (w->
crb, 20, 35);
60 cairo_show_text(w->
crb, _(
"Directory"));
61 cairo_move_to (w->
crb, 20, 85);
62 cairo_show_text(w->
crb, _(
"Directories"));
64 cairo_show_text(w->
crb, _(
"Select: "));
66 cairo_show_text(w->
crb, _(
"Show hidden Directories"));
72static void button_quit_callback(
void *w_,
void* user_data) {
77 file_dialog->parent->func.dialog_callback(file_dialog->parent,NULL);
78 file_dialog->send_clear_func =
false;
83static void forward_key_press(
void *w_,
void *key_,
void *user_data) {
86 if (file_dialog->text_entry)
87 file_dialog->text_entry->func.key_press_callback(file_dialog->text_entry, key_, user_data);
90static void forward_listview_key_press(
void *w_,
void *key_,
void *user_data) {
94 if (file_dialog->text_entry)
95 file_dialog->text_entry->func.key_press_callback(file_dialog->text_entry, key_, user_data);
98static inline int set_files(
FileDialog *file_dialog) {
109static void set_dirs(
FileDialog *file_dialog) {
116static void file_released_b_callback(
void *w_,
void *button,
void* user_data) {
119 set_selected_file(file_dialog);
126static void dummy(
void *w_,
void* user_data) {
130static void reload_from_dir(
FileDialog *file_dialog) {
132 assert(file_dialog->
fp->
path != NULL);
137 int set_f = set_files(file_dialog);
138 set_dirs(file_dialog);
145static void set_selected_file(
FileDialog *file_dialog) {
151 reload_from_dir(file_dialog);
164static void file_released_callback(
void *w_,
void *button,
void* user_data) {
167 set_selected_file(file_dialog);
174static void set_selected_dir(
FileDialog *file_dialog) {
186static void combo_response(
void *w_,
void* user_data) {
193 free(file_dialog->
fp->
path);
194 file_dialog->
fp->
path = NULL;
196 assert(file_dialog->
fp->
path != NULL);
197 reload_from_dir(file_dialog);
202static void button_ok_callback(
void *w_,
void* user_data) {
207 set_selected_dir(file_dialog);
214 _(
"Please select a file"),NULL);
221static void reload_all(
FileDialog *file_dialog) {
227 free(file_dialog->
fp->
path);
228 file_dialog->
fp->
path = NULL;
230 assert(file_dialog->
fp->
path != NULL);
235 int set_f = set_files(file_dialog);
236 set_dirs(file_dialog);
242static void button_hidden_callback(
void *w_,
void* user_data) {
247 reload_all(file_dialog);
259static void save_on_enter(
void *w_) {
272 struct stat st = {0};
275 reload_from_dir(file_dialog);
280 if (attr&FILE_ATTRIBUTE_DIRECTORY) {
281 reload_from_dir(file_dialog);
291static void draw_entry(
void *w_,
void* user_data) {
296 int width = metrics.
width;
297 int height = metrics.
height;
301 cairo_rectangle(w->
cr,0,0,width,height);
302 cairo_fill_preserve (w->
cr);
304 cairo_set_line_width(w->
cr, 2.0);
307 cairo_set_font_size (w->
cr, 9.0);
309 cairo_move_to (w->
cr, 2, 9);
310 cairo_show_text(w->
cr,
" ");
313static void entry_add_text(
void *w_,
void *label_) {
316 char *label = (
char*)label_;
321 cairo_text_extents_t extents;
323 cairo_set_font_size (w->
cr, 11.0);
332 cairo_set_font_size (w->
cr, 12.0);
335 cairo_move_to (w->
cr, 2, 12.0+extents.height);
340static void entry_clip(
Widget_t *w) {
342 cairo_text_extents_t extents;
344 cairo_set_font_size (w->
cr, 11.0);
364 cairo_set_font_size (w->
cr, 12.0);
367 cairo_move_to (w->
cr, 2, 12.0+extents.height);
372static void entry_get_text(
void *w_,
void *key_,
void *user_data) {
386 save_on_enter(file_dialog->
w_okay);
390 entry_add_text(w, buf);
395static void add_dir_callback(
void *w_,
void* user_data) {
410static void fd_mem_free(
void *w_,
void* user_data) {
416 free(file_dialog->
fp);
424 fp_init(file_dialog->
fp, (path) ? path :
"/");
430 XSizeHints* win_size_hints;
431 win_size_hints = XAllocSizeHints();
432 win_size_hints->flags = PMinSize|PBaseSize|PMaxSize|PWinGravity;
433 win_size_hints->min_width = 660;
434 win_size_hints->min_height = 420;
435 win_size_hints->base_width = 660;
436 win_size_hints->base_height = 420;
437 win_size_hints->max_width = 660;
438 win_size_hints->max_height = 840;
439 win_size_hints->win_gravity = CenterGravity;
440 XSetWMNormalHints(file_dialog->
w->
app->
dpy, file_dialog->
w->
widget, win_size_hints);
441 XFree(win_size_hints);
476 int set_f = set_files(file_dialog);
477 set_dirs(file_dialog);
503 return file_dialog->
w;
512static void ddialog_response(
void *w_,
void* user_data) {
515 if(user_data !=NULL) {
516 char *tmp = strdup(*(
const char**)user_data);
517 free(filebutton->last_path);
518 filebutton->last_path = NULL;
519 filebutton->last_path = strdup(dirname(tmp));
520 filebutton->path = filebutton->last_path;
524 filebutton->is_active =
false;
528static void dbutton_callback(
void *w_,
void* user_data) {
533 filebutton->is_active =
true;
535 if(filebutton->is_active)
540static void dbutton_mem_free(
void *w_,
void* user_data) {
543 free(filebutton->last_path);
544 filebutton->last_path = NULL;
550 const char *path,
const char *filter) {
552 filebutton->
path = path;
553 filebutton->
filter = filter;
555 filebutton->
w = NULL;
ComboBox_t - struct to hold information for the combobox.
unsigned int file_counter
evfunc button_release_callback
evfunc key_press_callback
xevfunc value_changed_callback
xevfunc mem_free_callback
Metrics_t - struct to receive window size, position & visibility Pass this struct to os_get_window_...
void adj_set_value(Adjustment_t *adj, float value)
adj_set_value - set the current value to the Adjustment_t
float adj_get_value(Adjustment_t *adj)
adj_get_value - get the current value of the Adjustment_t
int asprintf(char *strp[], const char *fmt,...)
void use_text_color_scheme(Widget_t *w, Color_state st)
use_text_color_scheme - use text Colors to paint on Widget_t
void use_fg_color_scheme(Widget_t *w, Color_state st)
use_fg_color_scheme - use forground Colors to paint on Widget_t
void set_pattern(Widget_t *w, Colors *from, Colors *to, Color_mod mod)
set_pattern - set pattern for the selected Colors
void use_base_color_scheme(Widget_t *w, Color_state st)
use_base_color_scheme - use base Colors to paint on Widget_t
void combobox_set_active_entry(Widget_t *w, int active)
combobox_set_active_entry - set the active combobox entry
void combobox_delete_entrys(Widget_t *combobox)
combobox_delete_entrys - free the list hold the combobox entrys
void combobox_add_entry(Widget_t *wid, const char *label)
combobox_add_entry - add a entry to the combobox
Widget_t * add_combobox(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_combobox - add a combobox
Widget_t * open_directory_dialog(Widget_t *w, const char *path)
Widget_t * add_directory_button(Widget_t *parent, int x, int y, int width, int height, const char *path, const char *filter)
void fp_init(FilePicker *filepicker, const char *path)
fp_init - set default values used by the filepicker
int fp_get_files(FilePicker *filepicker, char *path, int get_dirs, int get_files)
fp_get_files - fill file_names and dir_names with the results from readdir path
void fp_free(FilePicker *filepicker)
fp_free - release all memory used by the filepicker
void listview_remove_list(Widget_t *listview)
listview_remove_list - remove the list from a listview Widget_t
Widget_t * add_listview(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_label - add a listview to a Widget_t
void listview_set_active_entry(Widget_t *w, int active)
listview_set_active_entry - set the active listview entry
void listview_set_list(Widget_t *listview, char **list, int list_size)
listview_set_list - set a list to a listview Widget_t
Widget_t * open_message_dialog(Widget_t *w, int style, const char *title, const char *message, const char *choices)
open_message_dialog - open a non blocking dialog window, lines in message chould be separated by the ...
void widget_get_png(Widget_t *w, const unsigned char *name)
widget_get_png - read png into Widget_t xlib surface
void widget_set_icon_from_png(Widget_t *w, const unsigned char *name)
widget_set_icon_from_png - set icon image from png binary to Widget_t those icon will be used in the ...