yad.h 14.8 KB
Newer Older
Victor Ananjesky's avatar
Victor Ananjesky committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/*
 * This file is part of YAD.
 *
 * YAD is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * YAD is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with YAD. If not, see <http://www.gnu.org/licenses/>.
 *
17
 * Copyright (C) 2008-2023, Victor Ananjevsky <victor@sanana.kiev.ua>
Victor Ananjesky's avatar
Victor Ananjesky committed
18 19 20 21 22 23 24 25
 */

#ifndef _YAD_H_
#define _YAD_H_

#include <config.h>

#include <sys/types.h>
26
#include <sys/stat.h>
Victor Ananjesky's avatar
Victor Ananjesky committed
27
#include <sys/ipc.h>
28
#include <fcntl.h>
Victor Ananjesky's avatar
Victor Ananjesky committed
29 30 31 32

#include <gdk/gdkx.h>

#include <gtk/gtk.h>
Victor Ananjevsky's avatar
Victor Ananjevsky committed
33
#include <gtk/gtkx.h>
Victor Ananjesky's avatar
Victor Ananjesky committed
34 35
#include <gdk/gdkkeysyms.h>

Victor Ananjevsky's avatar
Victor Ananjevsky committed
36
#include <glib/gi18n.h>
37
#include <glib/gprintf.h>
38
#include <glib/gstdio.h>
Victor Ananjesky's avatar
Victor Ananjesky committed
39

Victor Ananjevsky's avatar
Victor Ananjevsky committed
40 41 42 43
#ifdef HAVE_HTML
#include <webkit2/webkit2.h>
#endif

Victor Ananjesky's avatar
Victor Ananjesky committed
44
#ifdef HAVE_SPELL
45
#include <gspell/gspell.h>
Victor Ananjesky's avatar
Victor Ananjesky committed
46 47 48
#endif

#ifdef HAVE_SOURCEVIEW
49
#include <gtksourceview/gtksource.h>
Victor Ananjesky's avatar
Victor Ananjesky committed
50 51
#endif

52 53 54 55
#ifdef STANDALONE
#include "defaults.h"
#endif

Victor Ananjesky's avatar
Victor Ananjesky committed
56 57 58 59 60 61 62
G_BEGIN_DECLS

#define YAD_RESPONSE_OK         0
#define YAD_RESPONSE_CANCEL     1
#define YAD_RESPONSE_TIMEOUT   	70
#define YAD_RESPONSE_ESC        -4      /* 252 */

Victor Ananjevsky's avatar
Victor Ananjevsky committed
63
#define YAD_URL_REGEX "(http|https|ftp|file)://[a-zA-Z0-9./_%#&-]+"
Victor Ananjesky's avatar
Victor Ananjesky committed
64

65 66 67 68 69
#define RIGHT_MARGIN     80  /* default right margin position for GtkSourceView */

#define SV_MARK1 "one"
#define SV_MARK2 "two"

Victor Ananjesky's avatar
Victor Ananjesky committed
70 71
typedef enum {
  YAD_MODE_MESSAGE,
72
  YAD_MODE_APP,
Victor Ananjesky's avatar
Victor Ananjesky committed
73 74 75 76 77 78 79 80 81 82 83 84 85
  YAD_MODE_CALENDAR,
  YAD_MODE_COLOR,
  YAD_MODE_DND,
  YAD_MODE_ENTRY,
  YAD_MODE_FILE,
  YAD_MODE_FONT,
  YAD_MODE_FORM,
#ifdef HAVE_HTML
  YAD_MODE_HTML,
#endif
  YAD_MODE_ICONS,
  YAD_MODE_LIST,
  YAD_MODE_NOTEBOOK,
86
#ifdef HAVE_TRAY
Victor Ananjesky's avatar
Victor Ananjesky committed
87
  YAD_MODE_NOTIFICATION,
88
#endif
Victor Ananjesky's avatar
Victor Ananjesky committed
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
  YAD_MODE_PANED,
  YAD_MODE_PICTURE,
  YAD_MODE_PRINT,
  YAD_MODE_PROGRESS,
  YAD_MODE_SCALE,
  YAD_MODE_TEXTINFO,
  YAD_MODE_ABOUT,
  YAD_MODE_VERSION,
  YAD_MODE_LANGS,
  YAD_MODE_THEMES
} YadDialogMode;

typedef enum {
  YAD_COLOR_HEX,
  YAD_COLOR_RGB
} YadColorMode;

typedef enum {
  YAD_FIELD_SIMPLE = 0,
  YAD_FIELD_HIDDEN,
  YAD_FIELD_READ_ONLY,
  YAD_FIELD_COMPLETE,
  YAD_FIELD_NUM,
  YAD_FIELD_CHECK,
Victor Ananjevsky's avatar
Victor Ananjevsky committed
113
  YAD_FIELD_SWITCH,
Victor Ananjesky's avatar
Victor Ananjesky committed
114 115 116 117 118 119 120 121 122
  YAD_FIELD_COMBO,
  YAD_FIELD_COMBO_ENTRY,
  YAD_FIELD_FILE,
  YAD_FIELD_FILE_SAVE,
  YAD_FIELD_MFILE,
  YAD_FIELD_DIR,
  YAD_FIELD_DIR_CREATE,
  YAD_FIELD_MDIR,
  YAD_FIELD_FONT,
123
  YAD_FIELD_APP,
124
  YAD_FIELD_ICON,
Victor Ananjesky's avatar
Victor Ananjesky committed
125 126 127 128 129
  YAD_FIELD_COLOR,
  YAD_FIELD_DATE,
  YAD_FIELD_SCALE,
  YAD_FIELD_BUTTON,
  YAD_FIELD_FULL_BUTTON,
130
  YAD_FIELD_LINK,
Victor Ananjesky's avatar
Victor Ananjesky committed
131
  YAD_FIELD_LABEL,
Victor Ananjevsky's avatar
Victor Ananjevsky committed
132
  YAD_FIELD_TEXT
Victor Ananjesky's avatar
Victor Ananjesky committed
133 134 135 136 137 138 139 140 141 142 143
} YadFieldType;

typedef enum {
  YAD_COLUMN_TEXT = 0,
  YAD_COLUMN_NUM,
  YAD_COLUMN_SIZE,
  YAD_COLUMN_FLOAT,
  YAD_COLUMN_CHECK,
  YAD_COLUMN_RADIO,
  YAD_COLUMN_BAR,
  YAD_COLUMN_IMAGE,
144
  YAD_COLUMN_TIP,
Victor Ananjesky's avatar
Victor Ananjesky committed
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
  YAD_COLUMN_HIDDEN,
  YAD_COLUMN_ATTR_FORE,
  YAD_COLUMN_ATTR_BACK,
  YAD_COLUMN_ATTR_FONT
} YadColumnType;

typedef enum {
  YAD_PICTURE_FIT,
  YAD_PICTURE_ORIG
} YadPictureType;

typedef enum {
  YAD_PRINT_TEXT = 0,
  YAD_PRINT_IMAGE,
  YAD_PRINT_RAW
} YadPrintType;

typedef enum {
  YAD_PROGRESS_NORMAL = 0,
  YAD_PROGRESS_RTL,
  YAD_PROGRESS_PULSE,
  YAD_PROGRESS_PERM
} YadProgressType;

typedef enum {
  YAD_BIG_ICON = 0,
  YAD_SMALL_ICON
} YadIconSize;

typedef enum {
  YAD_COMPLETE_SIMPLE = 0,
  YAD_COMPLETE_ANY,
  YAD_COMPLETE_ALL,
  YAD_COMPLETE_REGEX
} YadCompletionType;

181 182 183 184 185 186 187 188 189 190
typedef enum {
  YAD_BOOL_FMT_UT,
  YAD_BOOL_FMT_UY,
  YAD_BOOL_FMT_UO,
  YAD_BOOL_FMT_LT,
  YAD_BOOL_FMT_LY,
  YAD_BOOL_FMT_LO,
  YAD_BOOL_FMT_1
} YadBoolFormat;

Victor Ananjesky's avatar
Victor Ananjesky committed
191 192 193 194 195 196 197 198
typedef struct {
  gchar *name;
  gchar *cmd;
  gint response;
} YadButton;

typedef struct {
  gchar *name;
199
  gchar *tip;
Victor Ananjesky's avatar
Victor Ananjesky committed
200 201 202 203 204 205 206 207 208
  YadFieldType type;
} YadField;

typedef struct {
  gchar *name;
  YadColumnType type;
  gboolean wrap;
  gboolean ellipsize;
  gboolean editable;
209 210
  gdouble c_align;
  gdouble h_align;
Victor Ananjesky's avatar
Victor Ananjesky committed
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
} YadColumn;

typedef struct {
  gchar *name;
  YadProgressType type;
} YadProgressBar;

typedef struct {
  gchar *name;
  gint value;
} YadScaleMark;

typedef struct {
  gchar *dialog_title;
  gchar *window_icon;
  gint width;
  gint height;
  gboolean use_posx;
  gint posx;
230
  gboolean negx;
Victor Ananjesky's avatar
Victor Ananjesky committed
231 232
  gboolean use_posy;
  gint posy;
233
  gboolean negy;
Victor Ananjesky's avatar
Victor Ananjesky committed
234 235 236 237
  gchar *geometry;
  guint timeout;
  gchar *to_indicator;
  gchar *dialog_text;
238
  guint text_width;
239
  GtkJustification text_align;
Victor Ananjesky's avatar
Victor Ananjesky committed
240
  gchar *dialog_image;
241
  gboolean image_on_top;
Victor Ananjesky's avatar
Victor Ananjesky committed
242 243 244
  gchar *icon_theme;
  gchar *expander;
  gint borders;
245 246
  GtkPolicyType hscroll_policy;
  GtkPolicyType vscroll_policy;
Victor Ananjesky's avatar
Victor Ananjesky committed
247 248 249 250 251 252 253
  GSList *buttons;
  gboolean no_buttons;
  gboolean no_markup;
  gboolean no_escape;
  gboolean escape_ok;
  gboolean always_print;
  gboolean selectable_labels;
254
  gboolean keep_icon_size;
Victor Ananjesky's avatar
Victor Ananjesky committed
255 256
  GtkButtonBoxStyle buttons_layout;
  gint def_resp;
257 258
  gboolean use_interp;
  gchar *interp;
259
  gchar *uri_handler;
260
  gchar *f1_action;
Victor Ananjesky's avatar
Victor Ananjesky committed
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275
  /* window settings */
  gboolean sticky;
  gboolean fixed;
  gboolean ontop;
  gboolean center;
  gboolean mouse;
  gboolean undecorated;
  gboolean skip_taskbar;
  gboolean maximized;
  gboolean fullscreen;
  gboolean splash;
  gboolean focus;
  gboolean close_on_unfocus;
} YadData;

276 277 278 279 280 281 282
typedef struct {
  gboolean show_fallback;
  gboolean show_other;
  gboolean show_all;
  gboolean extended;
} YadAppData;

283 284 285 286 287 288 289 290 291 292 293
typedef struct {
  gchar *name;
  gchar *version;
  gchar *copyright;
  gchar *comments;
  gchar *license;
  gchar *authors;
  gchar *website;
  gchar *website_lbl;
} YadAboutData;

Victor Ananjesky's avatar
Victor Ananjesky committed
294 295 296 297 298 299 300 301 302 303 304 305
typedef struct {
  gint day;
  gint month;
  gint year;
  gchar *details;
  gboolean weeks;
} YadCalendarData;

typedef struct {
  gchar *init_color;
  gboolean gtk_palette;
  gboolean use_palette;
306
  gboolean color_picker;
Victor Ananjesky's avatar
Victor Ananjesky committed
307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349
  gboolean expand_palette;
  gchar *palette;
  gboolean alpha;
  YadColorMode mode;
} YadColorData;

typedef struct {
  gboolean tooltip;
  guint exit_on_drop;
} YadDNDData;

typedef struct {
  gchar *entry_text;
  gchar *entry_label;
  gboolean completion;
  gboolean numeric;
  gchar *licon;
  gchar *licon_action;
  gchar *ricon;
  gchar *ricon_action;
} YadEntryData;

typedef struct {
  gboolean directory;
  gboolean save;
  gboolean confirm_overwrite;
  gchar *confirm_text;
  gchar **file_filt;
  gchar **mime_filt;
  gchar *image_filt;
} YadFileData;

typedef struct {
  gchar *preview;
  gboolean separate_output;
} YadFontData;

typedef struct {
  GSList *fields;
  guint columns;
  gboolean output_by_row;
  guint focus_field;
  gboolean cycle_read;
350
  gboolean align_buttons;
351
  gchar *changed_action;
352
  gboolean homogeneous;
Victor Ananjesky's avatar
Victor Ananjesky committed
353 354 355 356 357 358 359 360 361 362
} YadFormData;

#ifdef HAVE_HTML
typedef struct {
  gchar *uri;
  gboolean browser;
  gboolean print_uri;
  gchar *encoding;
  gchar *user_agent;
  gchar *user_style;
363
  gchar **wk_props;
Victor Ananjesky's avatar
Victor Ananjesky committed
364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380
} YadHtmlData;
#endif

typedef struct {
  gchar *directory;
  gboolean compact;
  gboolean generic;
  gboolean descend;
  gboolean sort_by_name;
  gboolean single_click;
  guint width;
  gchar *term;
  gboolean monitor;
} YadIconsData;

typedef struct {
  GSList *columns;
381
  gboolean tree_mode;
Victor Ananjesky's avatar
Victor Ananjesky committed
382 383
  gboolean checkbox;
  gboolean radiobox;
384
  gboolean no_headers;
Victor Ananjesky's avatar
Victor Ananjesky committed
385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401
  gboolean print_all;
  GtkTreeViewGridLines grid_lines;
  gint print_column;
  gint hide_column;
  gint expand_column;
  gint search_column;
  gint tooltip_column;
  gint sep_column;
  gchar *sep_value;
  guint limit;
  gchar *editable_cols;
  gint wrap_width;
  gchar *wrap_cols;
  PangoEllipsizeMode ellipsize;
  gchar *ellipsize_cols;
  gchar *dclick_action;
  gchar *select_action;
402
  gchar *row_action;
403
  gboolean tree_expanded;
Victor Ananjesky's avatar
Victor Ananjesky committed
404 405 406 407
  gboolean regex_search;
  gboolean clickable;
  gboolean no_selection;
  gboolean add_on_top;
408
  gboolean simple_tips;
409
  gboolean header_tips;
410 411
  gchar *col_align;
  gchar *hdr_align;
Victor Ananjesky's avatar
Victor Ananjesky committed
412 413 414
} YadListData;

typedef struct {
415
  gchar **tabs;
Victor Ananjesky's avatar
Victor Ananjesky committed
416 417 418
  guint borders;
  GtkPositionType pos;
  guint active;
419
  gboolean expand;
420
  gboolean stack;
Victor Ananjesky's avatar
Victor Ananjesky committed
421 422
} YadNotebookData;

423
#ifdef HAVE_TRAY
Victor Ananjesky's avatar
Victor Ananjesky committed
424 425 426 427 428
typedef struct {
  gboolean middle;
  gboolean hidden;
  gchar *menu;
} YadNotificationData;
429
#endif
Victor Ananjesky's avatar
Victor Ananjesky committed
430 431 432 433

typedef struct {
  GtkOrientation orient;
  gint splitter;
434
  gint focused;
Victor Ananjesky's avatar
Victor Ananjesky committed
435 436 437 438
} YadPanedData;

typedef struct {
  YadPictureType size;
439
  gchar *change_cmd;
Victor Ananjesky's avatar
Victor Ananjesky committed
440 441 442 443 444 445 446 447 448
  gint inc;
} YadPictureData;

typedef struct {
  YadPrintType type;
  gboolean headers;
} YadPrintData;

typedef struct {
449 450
  GSList *bars;
  gint watch_bar;
Victor Ananjesky's avatar
Victor Ananjesky committed
451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475
  gchar *progress_text;
  gboolean pulsate;
  gboolean autoclose;
#ifndef G_OS_WIN32
  gboolean autokill;
#endif
  gboolean rtl;
  gchar *log;
  gboolean log_expanded;
  gboolean log_on_top;
  gint log_height;
} YadProgressData;

typedef struct {
  gint value;
  gint min_value;
  gint max_value;
  gint step;
  gint page;
  gboolean print_partial;
  gboolean hide_value;
  gboolean have_value;
  gboolean invert;
  gboolean buttons;
  GSList *marks;
476
  gboolean enforce_step;
Victor Ananjesky's avatar
Victor Ananjesky committed
477 478 479 480 481 482
} YadScaleData;

typedef struct {
  gboolean wrap;
  GtkJustification justify;
  gint margins;
483
  gulong line;
Victor Ananjesky's avatar
Victor Ananjesky committed
484 485 486
  gboolean uri;
  gboolean hide_cursor;
  gchar *uri_color;
487
  gboolean formatted;
488 489
  gchar *fore;
  gchar *back;
490
  gboolean in_place;
491 492
  gboolean confirm_save;
  gchar *confirm_text;
Victor Ananjesky's avatar
Victor Ananjesky committed
493 494 495 496 497 498
} YadTextData;

#ifdef HAVE_SOURCEVIEW
typedef struct {
  gchar *lang;
  gchar *theme;
499 500 501 502 503
  gboolean line_num;
  gboolean line_hl;
  gboolean line_marks;
  gchar *m1_color;
  gchar *m2_color;
504 505 506 507 508 509 510 511
  guint right_margin;
  gboolean brackets;
  gboolean indent;
  gint tab_width;
  gint indent_width;
  GtkSourceSmartHomeEndType smart_he;
  gboolean smart_bs;
  gboolean spaces;
Victor Ananjesky's avatar
Victor Ananjesky committed
512 513 514 515 516
} YadSourceData;
#endif

typedef struct {
  gchar *uri;
517
  gchar *mime;
Victor Ananjesky's avatar
Victor Ananjesky committed
518 519 520 521 522 523 524 525 526 527 528 529 530
  gchar *font;
  gchar *separator;
  gchar *item_separator;
  gboolean editable;
  gboolean multi;
  gboolean vertical;
  gboolean tail;
  gchar *command;
  gchar *date_format;
  guint float_precision;
  gdouble align;
  gboolean listen;
  gboolean preview;
531
  gboolean large_preview;
Victor Ananjesky's avatar
Victor Ananjesky committed
532 533 534
  gboolean show_hidden;
  gboolean quoted_output;
  gboolean num_output;
535
  gboolean hide_text;
536
  gint icon_size;
537
  gboolean enable_search;
538
  gboolean file_op;
539
  gboolean scroll;
Victor Ananjesky's avatar
Victor Ananjesky committed
540 541 542
#if GLIB_CHECK_VERSION(2,30,0)
  GFormatSizeFlags size_fmt;
#endif
543
  YadBoolFormat bool_fmt;
Victor Ananjesky's avatar
Victor Ananjesky committed
544 545 546 547 548 549 550 551 552 553 554 555 556 557 558
  YadCompletionType complete;
  GList *filters;
  key_t key;
#ifdef HAVE_SPELL
  gboolean enable_spell;
  gchar *spell_lang;
#endif
} YadCommonData;

typedef struct {
  YadDialogMode mode;

  YadData data;
  YadCommonData common_data;

559
  YadAboutData about_data;
560
  YadAppData app_data;
Victor Ananjesky's avatar
Victor Ananjesky committed
561 562 563 564 565 566 567 568 569 570 571 572 573
  YadCalendarData calendar_data;
  YadColorData color_data;
  YadDNDData dnd_data;
  YadEntryData entry_data;
  YadFileData file_data;
  YadFontData font_data;
  YadFormData form_data;
#ifdef HAVE_HTML
  YadHtmlData html_data;
#endif
  YadIconsData icons_data;
  YadListData list_data;
  YadNotebookData notebook_data;
574
#ifdef HAVE_TRAY
Victor Ananjesky's avatar
Victor Ananjesky committed
575
  YadNotificationData notification_data;
576
#endif
Victor Ananjesky's avatar
Victor Ananjesky committed
577 578 579 580 581 582 583 584 585 586
  YadPanedData paned_data;
  YadPictureData picture_data;
  YadPrintData print_data;
  YadProgressData progress_data;
  YadScaleData scale_data;
  YadTextData text_data;
#ifdef HAVE_SOURCEVIEW
  YadSourceData source_data;
#endif

587
  gchar *css;
Victor Ananjesky's avatar
Victor Ananjesky committed
588 589 590 591 592 593 594 595
  gchar *gtkrc_file;

  gchar *rest_file;
  gchar **extra_data;

  key_t plug;
  guint tabnum;

Victor Ananjevsky's avatar
Victor Ananjevsky committed
596 597
  gboolean debug;

Victor Ananjesky's avatar
Victor Ananjesky committed
598 599 600 601 602 603 604
#ifndef G_OS_WIN32
  guint kill_parent;
  gboolean print_xid;
  gchar *xid_file;
#endif
} YadOptions;

605 606 607 608 609 610 611 612 613 614 615 616
/* Searvh bar */
typedef struct {
  GtkWidget *bar;
  GtkWidget *entry;
  GtkWidget *next;
  GtkWidget *prev;
  GtkWidget *case_toggle;
  gboolean case_sensitive;
  gboolean new_search;
  const gchar *str;
} YadSearchBar;

Victor Ananjesky's avatar
Victor Ananjesky committed
617
extern YadOptions options;
618
extern GtkIconTheme *yad_icon_theme;
Victor Ananjesky's avatar
Victor Ananjesky committed
619

620 621
#ifndef STANDALONE
extern GSettings *settings;
622
extern GSettings *sv_settings;
623 624
#endif

625 626
extern GdkPixbuf *big_fallback_image;
extern GdkPixbuf *small_fallback_image;
Victor Ananjesky's avatar
Victor Ananjesky committed
627

628 629
extern gboolean ignore_esc;

630
/* TABS */
Victor Ananjesky's avatar
Victor Ananjesky committed
631 632 633 634 635 636 637 638
typedef struct {
  pid_t pid;
  Window xid;
} YadNTabs;

/* pointer to shared memory for tabbed dialog */
/* 0 item used for special info: */
/*   pid - memory id */
639
/*   xid - allow plugs to write shmem (for sync) */
Victor Ananjesky's avatar
Victor Ananjesky committed
640 641
extern YadNTabs *tabs;

642 643 644 645 646 647 648 649 650 651 652 653
/* STOCK ITEMS */
#define YAD_STOCK_COUNT 19

typedef struct {
  gchar *key;
  gchar *label;
  gchar *icon;
} YadStock;

extern const YadStock yad_stock_items[];

/* FUNCTION PROTOTYPES */
Victor Ananjesky's avatar
Victor Ananjesky committed
654 655 656 657 658 659
void yad_options_init (void);
GOptionContext *yad_create_context (void);
void yad_set_mode (void);
void yad_print_result (void);
void yad_exit (gint id);

660
GtkWidget *app_create_widget (GtkWidget *dlg);
Victor Ananjesky's avatar
Victor Ananjesky committed
661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682
GtkWidget *calendar_create_widget (GtkWidget *dlg);
GtkWidget *color_create_widget (GtkWidget *dlg);
GtkWidget *entry_create_widget (GtkWidget *dlg);
GtkWidget *file_create_widget (GtkWidget *dlg);
GtkWidget *font_create_widget (GtkWidget *dlg);
GtkWidget *form_create_widget (GtkWidget *dlg);
#ifdef HAVE_HTML
GtkWidget *html_create_widget (GtkWidget *dlg);
#endif
GtkWidget *icons_create_widget (GtkWidget *dlg);
GtkWidget *list_create_widget (GtkWidget *dlg);
GtkWidget *notebook_create_widget (GtkWidget *dlg);
GtkWidget *paned_create_widget (GtkWidget *dlg);
GtkWidget *picture_create_widget (GtkWidget *dlg);
GtkWidget *progress_create_widget (GtkWidget *dlg);
GtkWidget *scale_create_widget (GtkWidget *dlg);
GtkWidget *text_create_widget (GtkWidget *dlg);

gboolean file_confirm_overwrite (GtkWidget *dlg);
void notebook_swallow_childs (void);
void paned_swallow_childs (void);
void picture_fit_to_window (void);
683
void text_goto_line (void);
Victor Ananjesky's avatar
Victor Ananjesky committed
684

685
void app_print_result (void);
Victor Ananjesky's avatar
Victor Ananjesky committed
686 687 688 689 690 691 692 693 694 695 696 697 698 699
void calendar_print_result (void);
void color_print_result (void);
void entry_print_result (void);
void file_print_result (void);
void font_print_result (void);
void form_print_result (void);
void list_print_result (void);
void notebook_print_result (void);
void paned_print_result (void);
void scale_print_result (void);
void text_print_result (void);

void dnd_init (GtkWidget *w);

700
#ifdef HAVE_TRAY
Victor Ananjesky's avatar
Victor Ananjesky committed
701
gint yad_notification_run (void);
702
#endif
Victor Ananjesky's avatar
Victor Ananjesky committed
703 704 705 706 707 708 709 710 711 712 713 714 715
gint yad_print_run (void);
gint yad_about (void);

gboolean yad_send_notify (gboolean);

void notebook_close_childs (void);
void paned_close_childs (void);

void read_settings (void);
void write_settings (void);

void update_preview (GtkFileChooser *chooser, GtkWidget *p);

716
GdkPixbuf *get_pixbuf (gchar *name, YadIconSize size, gboolean force);
Victor Ananjesky's avatar
Victor Ananjesky committed
717
gchar *get_color (GdkRGBA *c);
Victor Ananjesky's avatar
Victor Ananjesky committed
718 719 720 721 722

gchar **split_arg (const gchar *str);

YadNTabs *get_tabs (key_t key, gboolean create);

723 724
gboolean stock_lookup (gchar *key, YadStock *it);

725
GtkWidget *get_label (gchar *str, guint border, GtkWidget *w);
Victor Ananjesky's avatar
Victor Ananjesky committed
726 727 728 729 730 731

gchar *escape_str (gchar *str);
gchar *escape_char (gchar *str, gchar ch);

gboolean check_complete (GtkEntryCompletion *c, const gchar *key, GtkTreeIter *iter, gpointer data);

732 733
void parse_geometry ();

734 735 736
gboolean get_bool_val (gchar *str);
gchar *print_bool_val (gboolean val);

737 738 739
gint run_command_sync (gchar *cmd, gchar **out);
void run_command_async (gchar *cmd);

740
gchar *pango_to_css (gchar *font);
741

Victor Ananjevsky's avatar
Victor Ananjevsky committed
742
void open_uri (const gchar *uri);
743

744 745 746
YadSearchBar *create_search_bar ();

gboolean yad_confirm_dlg (GtkWindow *parent, gchar *txt);
747

Victor Ananjesky's avatar
Victor Ananjesky committed
748 749 750 751 752 753 754 755 756 757 758 759
static inline void
strip_new_line (gchar * str)
{
  gint nl = strlen (str) - 1;

  if (str[nl] == '\n')
    str[nl] = '\0';
}

G_END_DECLS

#endif /* _YAD_H_ */