libxputty 0.1
Loading...
Searching...
No Matches
Functions
xdirectory-dialog.c File Reference

Go to the source code of this file.

Functions

Widget_topen_directory_dialog (Widget_t *w, const char *path)
 
Widget_tadd_directory_button (Widget_t *parent, int x, int y, int width, int height, const char *path, const char *filter)
 

Function Documentation

◆ add_directory_button()

Widget_t * add_directory_button ( Widget_t parent,
int  x,
int  y,
int  width,
int  height,
const char *  path,
const char *  filter 
)

Definition at line 549 of file xdirectory-dialog.c.

550 {
551 FileButton *filebutton = (FileButton*)malloc(sizeof(FileButton));
552 filebutton->path = path;
553 filebutton->filter = filter;
554 filebutton->last_path = NULL;
555 filebutton->w = NULL;
556 filebutton->is_active = false;
557 Widget_t *fbutton = add_image_toggle_button(parent, "", x, y, width, height);
558 fbutton->parent_struct = filebutton;
559 fbutton->flags |= HAS_MEM;
560 widget_get_png(fbutton, LDVAR(directory_open_png));
561 fbutton->scale.gravity = CENTER;
562 fbutton->func.mem_free_callback = dbutton_mem_free;
563 fbutton->func.value_changed_callback = dbutton_callback;
564 fbutton->func.dialog_callback = ddialog_response;
565 return fbutton;
566}
const char * path
Widget_t * w
char * last_path
const char * filter
xevfunc value_changed_callback
Definition xwidget.h:90
xevfunc mem_free_callback
Definition xwidget.h:92
xevfunc dialog_callback
Definition xwidget.h:96
Gravity gravity
Definition xwidget.h:347
Widget_t - struct to hold the basic Widget_t info.
Definition xwidget.h:457
Resize_t scale
Definition xwidget.h:525
long long flags
Definition xwidget.h:461
void * parent_struct
Definition xwidget.h:473
Func_t func
Definition xwidget.h:481
Widget_t * add_image_toggle_button(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_image_toggle_button - add a button to a Widget_t connect to func.value_changed_callback to implem...
Definition xbutton.c:89
void widget_get_png(Widget_t *w, const unsigned char *name)
widget_get_png - read png into Widget_t xlib surface
Definition xpngloader.c:75
@ CENTER
Definition xwidget.h:320
@ HAS_MEM
Definition xwidget.h:406

References add_image_toggle_button(), CENTER, Func_t::dialog_callback, FileButton::filter, Widget_t::flags, Widget_t::func, Resize_t::gravity, HAS_MEM, FileButton::is_active, FileButton::last_path, Func_t::mem_free_callback, Widget_t::parent_struct, FileButton::path, Widget_t::scale, Func_t::value_changed_callback, FileButton::w, and widget_get_png().

◆ open_directory_dialog()

Widget_t * open_directory_dialog ( Widget_t w,
const char *  path 
)

Definition at line 420 of file xdirectory-dialog.c.

420 {
421 FileDialog *file_dialog = (FileDialog*)malloc(sizeof(FileDialog));
422
423 file_dialog->fp = (FilePicker*)malloc(sizeof(FilePicker));
424 fp_init(file_dialog->fp, (path) ? path : "/");
425 file_dialog->parent = w;
426 file_dialog->send_clear_func = true;
427
428 file_dialog->w = create_window(w->app, os_get_root_window(w->app, IS_WINDOW), 0, 0, 660, 420);
429#ifdef __linux__
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);
442#endif
443 file_dialog->text_entry = NULL;
444
445 file_dialog->w->flags |= HAS_MEM;
446 file_dialog->w->parent_struct = file_dialog;
447 widget_set_title(file_dialog->w, _("Directory Selector"));
448 file_dialog->w->func.expose_callback = draw_window;
449 file_dialog->w->func.key_press_callback = forward_key_press;
450 file_dialog->w->func.mem_free_callback = fd_mem_free;
451 widget_set_icon_from_png(file_dialog->w, LDVAR(directory_png));
452
453 file_dialog->ct = add_combobox(file_dialog->w, "", 20, 40, 550, 30);
454 file_dialog->ct->parent_struct = file_dialog;
455 file_dialog->ct->scale.gravity = NORTHEAST;
456 file_dialog->ct->func.key_press_callback = forward_key_press;
457 file_dialog->ct->func.value_changed_callback = combo_response;
458
459 file_dialog->sel_dir = add_button(file_dialog->w, _("Add"), 580, 40, 60, 30);
460 file_dialog->sel_dir->parent_struct = file_dialog;
461 file_dialog->sel_dir->scale.gravity = WESTNORTH;
462 add_tooltip(file_dialog->sel_dir,_("Add new Directory"));
463 file_dialog->sel_dir->func.key_press_callback = forward_key_press;
464 file_dialog->sel_dir->func.value_changed_callback = add_dir_callback;
465
466 file_dialog->ft = add_listview(file_dialog->w, "", 20, 90, 620, 225);
467 file_dialog->ft->parent_struct = file_dialog;
468 file_dialog->ft->scale.gravity = NORTHWEST;
469 //file_dialog->ft->func.value_changed_callback = file_released_callback;
470 file_dialog->ft->func.key_press_callback = forward_key_press;
471 file_dialog->ft->func.button_release_callback = file_released_callback;
472 Widget_t* view_port = file_dialog->ft->childlist->childs[0];
473 view_port->func.key_press_callback = forward_listview_key_press;
474
475 int ds = fp_get_files(file_dialog->fp,file_dialog->fp->path, 1, 0);
476 int set_f = set_files(file_dialog);
477 set_dirs(file_dialog);
478 combobox_set_active_entry(file_dialog->ct, ds);
479 listview_set_active_entry(file_dialog->ft, set_f);
480
481 file_dialog->w_quit = add_button(file_dialog->w, _("Cancel"), 580, 350, 60, 60);
482 file_dialog->w_quit->parent_struct = file_dialog;
483 file_dialog->w_quit->scale.gravity = SOUTHWEST;
484 add_tooltip(file_dialog->w_quit,_("Exit Directory selector"));
485 file_dialog->w_quit->func.key_press_callback = forward_key_press;
486 file_dialog->w_quit->func.value_changed_callback = button_quit_callback;
487
488 file_dialog->w_okay = add_button(file_dialog->w, _("Select"), 510, 350, 60, 60);
489 file_dialog->w_okay->parent_struct = file_dialog;
490 file_dialog->w_okay->scale.gravity = SOUTHWEST;
491 add_tooltip(file_dialog->w_okay,_("Selected Directory"));
492 file_dialog->w_okay->func.key_press_callback = forward_key_press;
493 file_dialog->w_okay->func.value_changed_callback = button_ok_callback;
494
495 file_dialog->w_hidden = add_check_button(file_dialog->w, "", 20, 365, 20, 20);
496 file_dialog->w_hidden->parent_struct = file_dialog;
497 file_dialog->w_hidden->scale.gravity = EASTWEST;
498 add_tooltip(file_dialog->w_hidden,_("Show hidden Directories"));
499 file_dialog->w_hidden->func.key_press_callback = forward_key_press;
500 file_dialog->w_hidden->func.value_changed_callback = button_hidden_callback;
501
502 widget_show_all(file_dialog->w);
503 return file_dialog->w;
504}
Widget_t ** childs
Definition xchildlist.h:51
Widget_t * ft
Widget_t * w_quit
FilePicker * fp
bool send_clear_func
Widget_t * sel_dir
Widget_t * ct
Widget_t * w
Widget_t * w_okay
Widget_t * text_entry
Widget_t * w_hidden
Widget_t * parent
char * path
Definition xfilepicker.h:65
evfunc button_release_callback
Definition xwidget.h:101
xevfunc expose_callback
Definition xwidget.h:85
evfunc key_press_callback
Definition xwidget.h:104
Window widget
Definition xwidget.h:469
Childlist_t * childlist
Definition xwidget.h:499
Xputty * app
Definition xwidget.h:465
Display * dpy
Definition xputty.h:232
Widget_t * add_check_button(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_check_button - add a button to a Widget_t connect to func.value_changed_callback to implement you...
Definition xbutton.c:121
Widget_t * add_button(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_button - add a button to a Widget_t connect to func.value_changed_callback to implement your acti...
Definition xbutton.c:26
void combobox_set_active_entry(Widget_t *w, int active)
combobox_set_active_entry - set the active combobox entry
Definition xcombobox.c:27
Widget_t * add_combobox(Widget_t *parent, const char *label, int x, int y, int width, int height)
add_combobox - add a combobox
Definition xcombobox.c:152
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
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
Definition xlistview.c:72
void listview_set_active_entry(Widget_t *w, int active)
listview_set_active_entry - set the active listview entry
Definition xlistview.c:28
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 ...
Definition xpngloader.c:159
void add_tooltip(Widget_t *w, const char *label)
add_tooltip - add a tooltip to Widget_t
Definition xtooltip.c:41
Window os_get_root_window(Xputty *main, int flag)
os_get_root_window - get a pointer to the root window (desktop)
void widget_set_title(Widget_t *w, const char *title)
widget_set_title - set window title for a Widget_t
Definition xwidget.c:359
Widget_t * create_window(Xputty *app, Window win, int x, int y, int width, int height)
*create_window - create a Window You need to create as least minimun one Window to get started....
Definition xwidget.c:163
@ EASTWEST
Definition xwidget.h:310
@ SOUTHWEST
Definition xwidget.h:304
@ NORTHEAST
Definition xwidget.h:302
@ NORTHWEST
Definition xwidget.h:300
@ WESTNORTH
Definition xwidget.h:316
@ IS_WINDOW
Definition xwidget.h:390
void widget_show_all(Widget_t *w)
widget_show_all - map/show Widget_t with all childs
Definition xwidget.c:386

References add_button(), add_check_button(), add_combobox(), add_listview(), add_tooltip(), Widget_t::app, Func_t::button_release_callback, Widget_t::childlist, Childlist_t::childs, combobox_set_active_entry(), create_window(), FileDialog::ct, Xputty::dpy, EASTWEST, Func_t::expose_callback, Widget_t::flags, FileDialog::fp, fp_get_files(), fp_init(), FileDialog::ft, Widget_t::func, Resize_t::gravity, HAS_MEM, IS_WINDOW, Func_t::key_press_callback, listview_set_active_entry(), Func_t::mem_free_callback, NORTHEAST, NORTHWEST, os_get_root_window(), FileDialog::parent, Widget_t::parent_struct, FilePicker::path, Widget_t::scale, FileDialog::sel_dir, FileDialog::send_clear_func, SOUTHWEST, FileDialog::text_entry, Func_t::value_changed_callback, FileDialog::w, FileDialog::w_hidden, FileDialog::w_okay, FileDialog::w_quit, WESTNORTH, Widget_t::widget, widget_set_icon_from_png(), widget_set_title(), and widget_show_all().