ncurses: move dialog function to a new source

This commit is contained in:
Kaian 2018-12-16 10:20:08 +01:00
parent 2ca1c87b45
commit ddc848742b
13 changed files with 447 additions and 400 deletions

View File

@ -5,7 +5,7 @@ project(sngrep
set(PROJECT_NAME sngrep)
set(CMAKE_C_STANDARD 11)
add_compile_options(-Wall -pedantic -Wextra)
add_compile_options(-Wall -pedantic -Wextra -Werror)
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_SOURCE_DIR}/src/curses)
@ -39,6 +39,7 @@ set(SOURCES
src/ncurses/windows/stats_win.c
src/ncurses/windows/auth_validate_win.c
src/ncurses/window.c
src/ncurses/dialog.c
src/ncurses/keybinding.c
src/ncurses/scrollbar.c
src/filter.c

View File

@ -40,6 +40,7 @@ sngrep_SOURCES+=storage.c
sngrep_SOURCES+=ncurses/keybinding.c
sngrep_SOURCES+=ncurses/scrollbar.c
sngrep_SOURCES+=ncurses/manager.c
sngrep_SOURCES+=ncurses/dialog.c
sngrep_SOURCES+=ncurses/window.c
sngrep_SOURCES+=ncurses/windows/stats_win.c
sngrep_SOURCES+=ncurses/windows/filter_win.c

314
src/ncurses/dialog.c Normal file
View File

@ -0,0 +1,314 @@
/**************************************************************************
**
** sngrep - SIP Messages flow viewer
**
** Copyright (C) 2013-2018 Ivan Alonso (Kaian)
** Copyright (C) 2013-2018 Irontec SL. All rights reserved.
**
** This program 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.
**
** This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
**
****************************************************************************/
/**
* @file dialog.c
* @author Ivan Alonso [aka Kaian] <kaian@irontec.com>
*
* @brief Function for handing moodal dialogs
*
*/
#include "config.h"
#include "ncurses/theme.h"
#include "ncurses/keybinding.h"
#include "ncurses/dialog.h"
int
dialog_run(const char *fmt, ...)
{
char textva[2048];
va_list ap;
int height, width;
WINDOW *win;
char *word;
int col = 2;
int line = 2;
// Get the message from the format string
va_start(ap, fmt);
vsprintf(textva, fmt, ap);
va_end(ap);
// Determine dialog dimensions
height = 6 + (strlen(textva) / 50);
width = strlen(textva);
// Check we don't have a too big or small window
if (width > DIALOG_MAX_WIDTH)
width = DIALOG_MAX_WIDTH;
if (width < DIALOG_MIN_WIDTH)
width = DIALOG_MIN_WIDTH;
// Create the window
win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
box(win, 0, 0);
// Write the message into the screen
for (word = strtok(textva, " "); word; word = strtok(NULL, " ")) {
if ((gint) (col + strlen(word)) > width - 2) {
line++;
col = 2;
}
mvwprintw(win, line, col, "%s", word);
col += strlen(word) + 1;
}
// Write Accept button
wattron(win, A_REVERSE);
mvwprintw(win, height - 2, width / 2 - 5, "[ Accept ]");
curs_set(0);
// Disable input timeout
nocbreak();
cbreak();
// Wait for input
wgetch(win);
delwin(win);
return 1;
}
WINDOW *
dialog_progress_run(const char *fmt, ...)
{
char textva[2048];
va_list ap;
int height, width;
WINDOW *win;
char *word;
int col = 2;
int line = 2;
// Get the message from the format string
va_start(ap, fmt);
vsprintf(textva, fmt, ap);
va_end(ap);
// Determine dialog dimensions
height = 6 + (strlen(textva) / 50);
width = strlen(textva);
// Check we don't want a too big or small window
if (width > DIALOG_MAX_WIDTH)
width = DIALOG_MAX_WIDTH;
if (width < DIALOG_MIN_WIDTH)
width = DIALOG_MIN_WIDTH;
// Create the window
win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
box(win, 0, 0);
// Write the message into the screen
for (word = strtok(textva, " "); word; word = strtok(NULL, " ")) {
if ((gint) (col + strlen(word)) > width - 2) {
line++;
col = 2;
}
mvwprintw(win, line, col, "%s", word);
col += strlen(word) + 1;
}
curs_set(0);
wrefresh(win);
// Disable input timeout
nocbreak();
cbreak();
return win;
}
void
dialog_progress_set_value(WINDOW *win, int perc)
{
int width;
width = getmaxx(win);
mvwhline(win, 4, 4, '-', width - 10);
mvwaddch(win, 4, 3, '[');
mvwaddch(win, 4, width - 7, ']');
mvwprintw(win, 4, width - 5, "%d%%", perc);
if (perc > 0 && perc <= 100)
mvwhline(win, 4, 4, ACS_CKBOARD, (width - 10) * ((float) perc / 100));
wrefresh(win);
}
void
dialog_progress_destroy(WINDOW *win)
{
delwin(win);
}
int
dialog_confirm(const char *title, const char *text, const char *options)
{
WINDOW *dialog_win;
int key, i, curs, newl, height, width;
char *str, *tofree, *option, *word;
int selected = 0;
int optioncnt = 1;
int col = 2;
int line = 3;
char opts[4][10];
// Initialize
memset(opts, 0, 4 * 10);
// Check how many options exists
for (i = 0; options[i]; i++) {
if (options[i] == ',')
optioncnt++;
}
// We only support 4 options
if (optioncnt > 4)
return -1;
// Calculate proper width taking into acount longest data
width = strlen(options) + 6 * optioncnt;
if ((gint) strlen(title) + 4 > width)
width = strlen(title) + 4;
if ((gint) strlen(text) > width && strlen(text) < 50)
width = strlen(text);
// Check we don't want a too big or small window
if (width > DIALOG_MAX_WIDTH)
width = DIALOG_MAX_WIDTH;
if (width < DIALOG_MIN_WIDTH)
width = DIALOG_MIN_WIDTH;
// Determine dialog dimensions
height = 7; // Minimum for header and button lines
height += (strlen(text) / width); // Space for the text.
// Add one extra line for each newline in the text
for (i = 0; text[i]; i++) {
if (text[i] == '\n')
height++;
}
// Parse each line of payload looking for sdp information
tofree = str = strdup((char *) options);
i = 0;
while ((option = strsep(&str, ",")) != NULL) {
strcpy(opts[i++], option);
}
g_free(tofree);
// Create a new panel and show centered
dialog_win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
keypad(dialog_win, TRUE);
curs = curs_set(0);
// Set the window title
mvwprintw(dialog_win, 1, (width - strlen(title)) / 2, title);
// Write border and boxes around the window
wattron(dialog_win, COLOR_PAIR(CP_BLUE_ON_DEF));
box(dialog_win, 0, 0);
mvwhline(dialog_win, 2, 1, ACS_HLINE, width);
mvwaddch(dialog_win, 2, 0, ACS_LTEE);
mvwaddch(dialog_win, 2, width - 1, ACS_RTEE);
mvwhline(dialog_win, height - 3, 1, ACS_HLINE, width);
mvwaddch(dialog_win, height - 3, 0, ACS_LTEE);
mvwaddch(dialog_win, height - 3, width - 1, ACS_RTEE);
// Exit confirmation message message
wattron(dialog_win, COLOR_PAIR(CP_CYAN_ON_DEF));
// Write the message into the screen
tofree = str = strdup((char *) text);
newl = 0;
while ((word = strsep(&str, " ")) != NULL) {
if (word[strlen(word) - 1] == '\n') {
word[strlen(word) - 1] = '\0';
newl = 1;
}
if ((gint) (col + strlen(word)) > width - 2) {
line++;
col = 2;
}
mvwprintw(dialog_win, line, col, "%s", word);
col += strlen(word) + 1;
if (newl) {
line++;
col = 2;
newl = 0;
}
}
g_free(tofree);
wattroff(dialog_win, COLOR_PAIR(CP_CYAN_ON_DEF));
for (;;) {
// A list of available keys in this window
for (i = 0; i < optioncnt; i++) {
if (i == selected) wattron(dialog_win, A_REVERSE);
mvwprintw(dialog_win, height - 2, 10 + 10 * i, "[ %s ]", opts[i]);
wattroff(dialog_win, A_REVERSE);
}
// Get pressed key
key = wgetch(dialog_win);
// Check actions for this key
enum KeybindingAction action = ACTION_UNKNOWN;
while ((action = key_find_action(key, action)) != ACTION_UNKNOWN) {
// Check if we handle this action
switch (action) {
case ACTION_RIGHT:
selected++;
break;
case ACTION_LEFT:
case ACTION_NEXT_FIELD:
selected--;
break;
case ACTION_SELECT:
case ACTION_CONFIRM:
goto done;
case ACTION_PREV_SCREEN:
selected = -1;
goto done;
default:
// Parse next action
continue;
}
// key handled successfully
break;
}
// Cycle through ooptions
if (selected > optioncnt - 1)
selected = 0;
if (selected < 0)
selected = optioncnt - 1;
}
done:
delwin(dialog_win);
curs_set(curs);
return selected;
}

98
src/ncurses/dialog.h Normal file
View File

@ -0,0 +1,98 @@
/**************************************************************************
**
** sngrep - SIP Messages flow viewer
**
** Copyright (C) 2013-2018 Ivan Alonso (Kaian)
** Copyright (C) 2013-2018 Irontec SL. All rights reserved.
**
** This program 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.
**
** This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
**
****************************************************************************/
/**
* @file dialog.h
* @author Ivan Alonso [aka Kaian] <kaian@irontec.com>
*
* @brief Common process for modal dialogs
*
*/
#ifndef __SNGREP_DIALOG_H
#define __SNGREP_DIALOG_H
#include <glib.h>
#include "ncurses/window.h"
//! Default dialog dimensions
#define DIALOG_MAX_WIDTH 100
#define DIALOG_MIN_WIDTH 40
/**
* @brief Draw a centered dialog with a message
*
* Create a centered dialog with a message.
* @param msg Message to be drawn
*/
int
dialog_run(const char *fmt, ...);
/**
* @brief Create a new progress bar dialog
*
* Create a new progress bar dialog with the given text. The returned
* pointer should be used as parameter for @dialog_progress_set_value
* in order to move the progress bar percentage.
*
* @param fmt, vaarg Text to be displayed above the progress bar
* @return a pointer to the created window.
*/
WINDOW *
dialog_progress_run(const char *fmt, ...);
/**
* @brief Set current percentage of dialog progress bar
*
* @param win Window pointer created with @dialog_progress_run
* @param perc 0-100 percentage of progress bar
*/
void
dialog_progress_set_value(WINDOW *win, int perc);
/**
* @brief Destroy a dialog created by @dialog_progress_run
*
* This function will deallocate all memory and close the
* given window pointer.
*
* @param win Window pointer created with @dialog_progress_run
*/
void
dialog_progress_destroy(WINDOW *win);
/**
* @brief Create a new confirmation dialog with multiple buttons
*
* This function can be used to create dialogs with multiple buttons to
* request user confirmation. By default, the first given option will
* be selected.
*
* @param title Title displayed in the top of the dialog
* @param text Text displayed inside the dialog
* @param options Comma separated labels for the different buttons
* @return the index of the button pressed
*/
int
dialog_confirm(const char *title, const char *text, const char *options);
#endif // __SNGREP_DIALOG_H

View File

@ -539,284 +539,3 @@ draw_message_pos(WINDOW *win, Message *msg, int starting)
return line - starting;
}
int
dialog_run(const char *fmt, ...)
{
char textva[2048];
va_list ap;
int height, width;
WINDOW *win;
char *word;
int col = 2;
int line = 2;
// Get the message from the format string
va_start(ap, fmt);
vsprintf(textva, fmt, ap);
va_end(ap);
// Determine dialog dimensions
height = 6 + (strlen(textva) / 50);
width = strlen(textva);
// Check we don't have a too big or small window
if (width > DIALOG_MAX_WIDTH)
width = DIALOG_MAX_WIDTH;
if (width < DIALOG_MIN_WIDTH)
width = DIALOG_MIN_WIDTH;
// Create the window
win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
box(win, 0, 0);
// Write the message into the screen
for (word = strtok(textva, " "); word; word = strtok(NULL, " ")) {
if ((gint) (col + strlen(word)) > width - 2) {
line++;
col = 2;
}
mvwprintw(win, line, col, "%s", word);
col += strlen(word) + 1;
}
// Write Accept button
wattron(win, A_REVERSE);
mvwprintw(win, height - 2, width / 2 - 5, "[ Accept ]");
curs_set(0);
// Disable input timeout
nocbreak();
cbreak();
// Wait for input
wgetch(win);
delwin(win);
return 1;
}
WINDOW *
dialog_progress_run(const char *fmt, ...)
{
char textva[2048];
va_list ap;
int height, width;
WINDOW *win;
char *word;
int col = 2;
int line = 2;
// Get the message from the format string
va_start(ap, fmt);
vsprintf(textva, fmt, ap);
va_end(ap);
// Determine dialog dimensions
height = 6 + (strlen(textva) / 50);
width = strlen(textva);
// Check we don't want a too big or small window
if (width > DIALOG_MAX_WIDTH)
width = DIALOG_MAX_WIDTH;
if (width < DIALOG_MIN_WIDTH)
width = DIALOG_MIN_WIDTH;
// Create the window
win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
box(win, 0, 0);
// Write the message into the screen
for (word = strtok(textva, " "); word; word = strtok(NULL, " ")) {
if ((gint) (col + strlen(word)) > width - 2) {
line++;
col = 2;
}
mvwprintw(win, line, col, "%s", word);
col += strlen(word) + 1;
}
curs_set(0);
wrefresh(win);
// Disable input timeout
nocbreak();
cbreak();
return win;
}
void
dialog_progress_set_value(WINDOW *win, int perc)
{
int width;
width = getmaxx(win);
mvwhline(win, 4, 4, '-', width - 10);
mvwaddch(win, 4, 3, '[');
mvwaddch(win, 4, width - 7, ']');
mvwprintw(win, 4, width - 5, "%d%%", perc);
if (perc > 0 && perc <= 100)
mvwhline(win, 4, 4, ACS_CKBOARD, (width - 10) * ((float) perc / 100));
wrefresh(win);
}
void
dialog_progress_destroy(WINDOW *win)
{
delwin(win);
}
int
dialog_confirm(const char *title, const char *text, const char *options)
{
WINDOW *dialog_win;
int key, i, curs, newl, height, width;
char *str, *tofree, *option, *word;
int selected = 0;
int optioncnt = 1;
int col = 2;
int line = 3;
char opts[4][10];
// Initialize
memset(opts, 0, 4 * 10);
// Check how many options exists
for (i = 0; options[i]; i++) {
if (options[i] == ',')
optioncnt++;
}
// We only support 4 options
if (optioncnt > 4)
return -1;
// Calculate proper width taking into acount longest data
width = strlen(options) + 6 * optioncnt;
if ((gint) strlen(title) + 4 > width)
width = strlen(title) + 4;
if ((gint) strlen(text) > width && strlen(text) < 50)
width = strlen(text);
// Check we don't want a too big or small window
if (width > DIALOG_MAX_WIDTH)
width = DIALOG_MAX_WIDTH;
if (width < DIALOG_MIN_WIDTH)
width = DIALOG_MIN_WIDTH;
// Determine dialog dimensions
height = 7; // Minimum for header and button lines
height += (strlen(text) / width); // Space for the text.
// Add one extra line for each newline in the text
for (i = 0; text[i]; i++) {
if (text[i] == '\n')
height++;
}
// Parse each line of payload looking for sdp information
tofree = str = strdup((char *) options);
i = 0;
while ((option = strsep(&str, ",")) != NULL) {
strcpy(opts[i++], option);
}
g_free(tofree);
// Create a new panel and show centered
dialog_win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
keypad(dialog_win, TRUE);
curs = curs_set(0);
// Set the window title
mvwprintw(dialog_win, 1, (width - strlen(title)) / 2, title);
// Write border and boxes around the window
wattron(dialog_win, COLOR_PAIR(CP_BLUE_ON_DEF));
box(dialog_win, 0, 0);
mvwhline(dialog_win, 2, 1, ACS_HLINE, width);
mvwaddch(dialog_win, 2, 0, ACS_LTEE);
mvwaddch(dialog_win, 2, width - 1, ACS_RTEE);
mvwhline(dialog_win, height - 3, 1, ACS_HLINE, width);
mvwaddch(dialog_win, height - 3, 0, ACS_LTEE);
mvwaddch(dialog_win, height - 3, width - 1, ACS_RTEE);
// Exit confirmation message message
wattron(dialog_win, COLOR_PAIR(CP_CYAN_ON_DEF));
// Write the message into the screen
tofree = str = strdup((char *) text);
newl = 0;
while ((word = strsep(&str, " ")) != NULL) {
if (word[strlen(word) - 1] == '\n') {
word[strlen(word) - 1] = '\0';
newl = 1;
}
if ((gint) (col + strlen(word)) > width - 2) {
line++;
col = 2;
}
mvwprintw(dialog_win, line, col, "%s", word);
col += strlen(word) + 1;
if (newl) {
line++;
col = 2;
newl = 0;
}
}
g_free(tofree);
wattroff(dialog_win, COLOR_PAIR(CP_CYAN_ON_DEF));
for (;;) {
// A list of available keys in this window
for (i = 0; i < optioncnt; i++) {
if (i == selected) wattron(dialog_win, A_REVERSE);
mvwprintw(dialog_win, height - 2, 10 + 10 * i, "[ %s ]", opts[i]);
wattroff(dialog_win, A_REVERSE);
}
// Get pressed key
key = wgetch(dialog_win);
// Check actions for this key
enum KeybindingAction action = ACTION_UNKNOWN;
while ((action = key_find_action(key, action)) != ACTION_UNKNOWN) {
// Check if we handle this action
switch (action) {
case ACTION_RIGHT:
selected++;
break;
case ACTION_LEFT:
case ACTION_NEXT_FIELD:
selected--;
break;
case ACTION_SELECT:
case ACTION_CONFIRM:
goto done;
case ACTION_PREV_SCREEN:
selected = -1;
goto done;
default:
// Parse next action
continue;
}
// key handled successfully
break;
}
// Cycle through ooptions
if (selected > optioncnt - 1)
selected = 0;
if (selected < 0)
selected = optioncnt - 1;
}
done:
delwin(dialog_win);
curs_set(curs);
return selected;
}

View File

@ -20,7 +20,7 @@
**
****************************************************************************/
/**
* @file ui_manager.h
* @file manager.h
* @author Ivan Alonso [aka Kaian] <kaian@irontec.com>
*
* @brief Functions to manage interface panels
@ -46,9 +46,7 @@
//! Refresh UI every 200 ms
#define REFRESHTHSECS 2
//! Default dialog dimensions
#define DIALOG_MAX_WIDTH 100
#define DIALOG_MIN_WIDTH 40
//! Error reporting
#define NCURSES_ERROR (capture_pcap_error_quark())
@ -169,61 +167,4 @@ draw_message(WINDOW *win, Message *msg);
int
draw_message_pos(WINDOW *win, Message *msg, int starting);
/**
* @brief Draw a centered dialog with a message
*
* Create a centered dialog with a message.
* @param msg Message to be drawn
*/
int
dialog_run(const char *fmt, ...);
/**
* @brief Create a new progress bar dialog
*
* Create a new progress bar dialog with the given text. The returned
* pointer should be used as parameter for @dialog_progress_set_value
* in order to move the progress bar percentage.
*
* @param fmt, vaarg Text to be displayed above the progress bar
* @return a pointer to the created window.
*/
WINDOW *
dialog_progress_run(const char *fmt, ...);
/**
* @brief Set current percentage of dialog progress bar
*
* @param win Window pointer created with @dialog_progress_run
* @param perc 0-100 percentage of progress bar
*/
void
dialog_progress_set_value(WINDOW *win, int perc);
/**
* @brief Destroy a dialog created by @dialog_progress_run
*
* This function will deallocate all memory and close the
* given window pointer.
*
* @param win Window pointer created with @dialog_progress_run
*/
void
dialog_progress_destroy(WINDOW *win);
/**
* @brief Create a new confirmation dialog with multiple buttons
*
* This function can be used to create dialogs with multiple buttons to
* request user confirmation. By default, the first given option will
* be selected.
*
* @param title Title displayed in the top of the dialog
* @param text Text displayed inside the dialog
* @param options Comma separated labels for the different buttons
* @return the index of the button pressed
*/
int
dialog_confirm(const char *title, const char *text, const char *options);
#endif // __SNGREP_UI_MANAGER_H

View File

@ -27,10 +27,9 @@
*/
#include "config.h"
#include <glib.h>
#include <packet/dissectors/packet_sip.h>
#include "glib-extra.h"
#include "packet/dissectors/packet_sip.h"
#include "ncurses/dialog.h"
#include "auth_validate_win.h"
#include "setting.h"
/**
* @brief Get custom information of given panel

View File

@ -20,27 +20,23 @@
**
****************************************************************************/
/**
* @file call_flow.c
* @file call_flow_win.c
* @author Ivan Alonso [aka Kaian] <kaian@irontec.com>
*
* @brief Source of functions defined in call_flow.h
* @brief Source of functions to handle Message arrows display window
*/
#include "config.h"
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <packet/dissectors/packet_sip.h>
#include "capture/capture_pcap.h"
#include "ncurses/manager.h"
#include "call_flow_win.h"
#include "call_raw_win.h"
#include "msg_diff_win.h"
#include "auth_validate_win.h"
#include "save_win.h"
#include "timeval.h"
#include "ncurses/dialog.h"
#include "ncurses/windows/call_flow_win.h"
#include "ncurses/windows/call_raw_win.h"
#include "ncurses/windows/msg_diff_win.h"
#include "ncurses/windows/auth_validate_win.h"
#include "ncurses/windows/save_win.h"
#include "glib-extra.h"
#include "setting.h"
/***
*

View File

@ -20,35 +20,28 @@
**
****************************************************************************/
/**
* @file ui_call_list.c
* @file call_list_win.c
* @author Ivan Alonso [aka Kaian] <kaian@irontec.com>
*
* @brief Source of functions defined in ui_call_list.h
* @brief Functions to handle Call List window
*
*/
#include "config.h"
#include <glib.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include "glib-extra.h"
#include "setting.h"
#include "filter.h"
#include "capture/capture_pcap.h"
#ifdef USE_HEP
#include "capture/capture_hep.h"
#endif
#include "ncurses/manager.h"
#include "call_list_win.h"
#include "call_flow_win.h"
#include "call_raw_win.h"
#include "stats_win.h"
#include "filter_win.h"
#include "save_win.h"
#include "storage.h"
#include "column_select_win.h"
#include "ncurses/dialog.h"
#include "ncurses/windows/call_list_win.h"
#include "ncurses/windows/call_flow_win.h"
#include "ncurses/windows/call_raw_win.h"
#include "ncurses/windows/save_win.h"
#include "ncurses/windows/column_select_win.h"
/**
* @brief Get custom information of given panel

View File

@ -20,7 +20,7 @@
**
****************************************************************************/
/**
* @file call_raw.c
* @file call_raw_win.c
* @author Ivan Alonso [aka Kaian] <kaian@irontec.com>
*
* @brief Source of functions defined in call_raw.h
@ -29,14 +29,13 @@
* @todo Replace the panel refresh. Wclear sucks on high latency conections.
*
*/
#include "config.h"
#include <string.h>
#include <stdlib.h>
#include "ncurses/manager.h"
#include "call_raw_win.h"
#include "save_win.h"
#include "capture/capture_pcap.h"
#include "ncurses/dialog.h"
#include "packet/dissectors/packet_sip.h"
#include "ncurses/windows/save_win.h"
#include "ncurses/windows/call_raw_win.h"
/**
* @brief Get custom information of given panel

View File

@ -27,17 +27,14 @@
* @brief Source of functions defined in ui_column_select.h
*
*/
#include "config.h"
#include <glib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <glib/gstdio.h>
#include "glib-extra.h"
#include "ncurses/manager.h"
#include "call_list_win.h"
#include "column_select_win.h"
#include "ncurses/dialog.h"
#include "ncurses/windows/call_list_win.h"
#include "ncurses/windows/column_select_win.h"
/**
* @brief Get custom information of given panel

View File

@ -25,21 +25,16 @@
*
* @brief Source of functions defined in save_win.h
*/
#include "config.h"
#include <glib.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <form.h>
#include <ctype.h>
#include "glib-extra.h"
#include "save_win.h"
#include "setting.h"
#include "capture/capture_pcap.h"
#include "capture/capture_txt.h"
#include "filter.h"
#include "capture/capture_txt.h"
#include "ncurses/dialog.h"
#include "ncurses/windows/save_win.h"
/**
* @brief Get custom information of given panel

View File

@ -27,16 +27,10 @@
*/
#include "config.h"
#include <glib/gstdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "ncurses/manager.h"
#include "settings_win.h"
#include "setting.h"
#include "ncurses/dialog.h"
#include "ncurses/windows/settings_win.h"
SettingsWinCategory categories[] = {
{ CAT_SETTINGS_INTERFACE, "Interface" },