diff options
Diffstat (limited to 'ui/win32/file_dlg_win32.h')
-rw-r--r-- | ui/win32/file_dlg_win32.h | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/ui/win32/file_dlg_win32.h b/ui/win32/file_dlg_win32.h new file mode 100644 index 00000000..0edee0bb --- /dev/null +++ b/ui/win32/file_dlg_win32.h @@ -0,0 +1,180 @@ +/** @file + * + * Native Windows file dialog routines + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 2006 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef __FILE_DLG_WIN32_H__ +#define __FILE_DLG_WIN32_H__ + +#ifndef RC_INVOKED // RC warns about gatomic's long identifiers. +#include "ui/file_dialog.h" +#include "ui/packet_range.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @brief set_thread_per_monitor_v2_awareness + * + * Qt <= 5.9 supports setting old (Windows 8.1) per-monitor DPI awareness + * via Qt:AA_EnableHighDpiScaling. We do this in main.cpp. In order for + * native dialogs to be rendered correctly we need to set per-monitor + * *v2* awareness prior to creating the dialog, which we can do here. + * Qt doesn't render correctly when per-monitor v2 awareness is enabled, so + * we need to revert our thread context when we're done. + * + * @return The current thread DPI awareness context, which should + * be passed to revert_thread_per_monitor_v2_awareness. + */ +HANDLE set_thread_per_monitor_v2_awareness(void); + +/** + * @brief revert_thread_per_monitor_v2_awareness + * @param context + */ +void revert_thread_per_monitor_v2_awareness(HANDLE context); + +/** Open the "Open" dialog box. + * + * @param h_wnd HWND of the parent window. + * @param file_name File name + * @param type File type + * @param display_filter a display filter + */ +bool win32_open_file (HWND h_wnd, const wchar_t *title, GString *file_name, unsigned int *type, GString *display_filter); + +/** Open the "Save As" dialog box. + * + * @param h_wnd HWND of the parent window. + * @param cf capture_file Structure for the capture to be saved + * @param file_name File name. May be empty. + * @param file_type Wiretap file type. + * @param compression_type Compression type to use, or uncompressed. + * @param must_support_comments true if the file format list should + * include only file formats that support comments + * + * @return true if packets were discarded when saving, false otherwise + */ +bool win32_save_as_file(HWND h_wnd, const wchar_t *title, capture_file *cf, + GString *file_name, int *file_type, + wtap_compression_type *compression_type, + bool must_support_comments); + +/** Open the "Export Specified Packets" dialog box. + * + * @param h_wnd HWND of the parent window. + * @param cf capture_file Structure for the capture to be saved + * @param file_name File name. May be empty. + * @param file_type Wiretap file type. + * @param compression_type Compression type to use, or uncompressed. + * @param range Range of packets to export. + * + * @return true if packets were discarded when saving, false otherwise + */ +bool win32_export_specified_packets_file(HWND h_wnd, + const wchar_t *title, + capture_file *cf, + GString *file_name, + int *file_type, + wtap_compression_type *compression_type, + packet_range_t *range); + + +/** Open the "Merge" dialog box. + * + * @param h_wnd HWND of the parent window. + * @param file_name File name + * @param display_filter a display filter + * @param merge_type type of merge + */ +bool win32_merge_file (HWND h_wnd, const wchar_t *title, GString *file_name, GString *display_filter, int *merge_type); + +/** Open the "Export" dialog box. + * + * @param h_wnd HWND of the parent window. + * @param cf capture_file Structure for the capture to be saved + * @param export_type The export type. + * @param range a possible range + */ +void win32_export_file (HWND h_wnd, const wchar_t *title, capture_file *cf, export_type_e export_type, const char *range); + +/* Open dialog defines */ +/* #define EWFD_FILTER_BTN 1000 */ +#define EWFD_FILTER_LBL 1000 +#define EWFD_FILTER_EDIT 1001 + +#define EWFD_MAC_NR_CB 1002 +#define EWFD_NET_NR_CB 1003 +#define EWFD_TRANS_NR_CB 1004 +#define EWFD_EXTERNAL_NR_CB 1005 + +/* Note: The preview title (PT) and text (PTX) MUST have sequential IDs; + they're used in a for loop. EWFD_PT_FILENAME MUST be first, and + EWFD_PTX_ELAPSED MUST be last. (so why don't we just use an enum? */ +#define EWFD_PT_FORMAT 1006 +#define EWFD_PT_SIZE 1007 +#define EWFD_PT_START_ELAPSED 1008 + +#define EWFD_PTX_FORMAT 1009 +#define EWFD_PTX_SIZE 1010 +#define EWFD_PTX_START_ELAPSED 1011 + +#define EWFD_FORMAT_TYPE 1020 + +/* Save as and export dialog defines */ +#define EWFD_GZIP_CB 1040 + +/* Export dialog defines */ +#define EWFD_CAPTURED_BTN 1000 +#define EWFD_DISPLAYED_BTN 1001 +#define EWFD_ALL_PKTS_BTN 1002 +#define EWFD_SEL_PKT_BTN 1003 +#define EWFD_MARKED_BTN 1004 +#define EWFD_FIRST_LAST_BTN 1005 +#define EWFD_RANGE_BTN 1006 +#define EWFD_RANGE_EDIT 1007 +#define EWFD_REMOVE_IGN_CB 1008 + +#define EWFD_ALL_PKTS_CAP 1009 +#define EWFD_SEL_PKT_CAP 1010 +#define EWFD_MARKED_CAP 1011 +#define EWFD_FIRST_LAST_CAP 1012 +#define EWFD_RANGE_CAP 1013 +#define EWFD_IGNORED_CAP 1014 + +#define EWFD_ALL_PKTS_DISP 1015 +#define EWFD_SEL_PKT_DISP 1016 +#define EWFD_MARKED_DISP 1017 +#define EWFD_FIRST_LAST_DISP 1018 +#define EWFD_RANGE_DISP 1019 +#define EWFD_IGNORED_DISP 1020 + +/* Merge dialog defines. Overlays Open dialog defines above. */ +#define EWFD_MERGE_PREPEND_BTN 1050 +#define EWFD_MERGE_CHRONO_BTN 1051 +#define EWFD_MERGE_APPEND_BTN 1052 + +/* Export dialog defines. Overlays Save dialog defines above. */ +/* These MUST be contiguous */ +#define EWFD_PKT_FORMAT_GB 1050 +#define EWFD_PKT_SUMMARY_CB 1051 +#define EWFD_COL_HEADINGS_CB 1052 +#define EWFD_PKT_DETAIL_CB 1053 +#define EWFD_PKT_DETAIL_COMBO 1054 +#define EWFD_PKT_BYTES_CB 1055 +#define EWFD_DATA_SOURCES_CB 1056 +#define EWFD_PKT_NEW_PAGE_CB 1057 + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __FILE_DLG_WIN32_H__ */ |