gtkIOStream  1.7.0
GTK+ << C++ IOStream operators for GTK+. Now with ORBing, numerical computation, audio client and more ...
FileGtk.H
Go to the documentation of this file.
1 /* Copyright 2000-2018 Matt Flax <flatmax@flatmax.org>
2  This file is part of GTK+ IOStream class set
3 
4  GTK+ IOStream is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  GTK+ IOStream is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You have received a copy of the GNU General Public License
15  along with GTK+ IOStream
16  */
17 #ifndef FILEGTK_H_
18 #define FILEGTK_H_
19 
20 #include <iostream>
21 #include <gtk/gtk.h>
22 
23 #define TITLE "Select audio file"
24 
25 class FileGtk {
26  GtkWidget* fileGtk;
27 
28  static void store_filename(GtkFileSelection *selector, gpointer data) {
29  FileGtk* f=(FileGtk*)data;
30  if (f->fileName) delete f->fileName;
31  // f->fileName = gtk_file_selection_get_filename(GTK_FILE_SELECTION(f->fileGtk));
32  f->fileName = (gchar*)gtk_file_selection_get_filename(GTK_FILE_SELECTION(f->fileGtk));
33  std::cout<<"FileGtk::store_filename: File is now : "<<f->fileName<<std::endl;
34  }
35 
36  void internalInit(void){
37  fileGtk=gtk_file_selection_new(TITLE);
38  //gtk_widget_ref(fileGtk);
39  //gtk_file_selection_complete(GTK_FILE_SELECTION(fileGtk), fileName);
40 
41  g_signal_connect(G_OBJECT (GTK_FILE_SELECTION(fileGtk)->ok_button), "clicked", reinterpret_cast<GCallback> (store_filename), this);
42  g_signal_connect(G_OBJECT (GTK_FILE_SELECTION(fileGtk)->ok_button), "clicked", reinterpret_cast<GCallback> (gtk_widget_hide), GTK_OBJECT(fileGtk));
43  g_signal_connect(G_OBJECT (GTK_FILE_SELECTION(fileGtk)->cancel_button), "clicked", reinterpret_cast<GCallback> (gtk_widget_hide),GTK_OBJECT(fileGtk));
44  }
45 protected:
46  gchar* fileName;
47 public:
48  FileGtk(void){
49 #ifdef DEBUG
50  std::cout<<"FileGtk::FileGtk()"<<std::endl;
51 #endif
52  fileName=NULL;
53  internalInit();
54  }
55  FileGtk(const char* name){
56 #ifdef DEBUG
57  std::cout<<"FileGtk::FileGtk(name)"<<std::endl;
58 #endif
59  fileName=g_strdup(name);
60  internalInit();
61  }
62 
63  ~FileGtk(void){
64 #ifdef DEBUG
65  std::cout<<"FileGtk::~FileGtk()"<<std::endl;
66 #endif
67  if (fileName) delete fileName;
68  //gtk_widget_unref(fileGtk);
69  // gtk_widget_destroy(fileGtk);
70  gtk_widget_hide(fileGtk);
71  }
72 
73  void getFileName(void){gtk_widget_show(fileGtk);}
74  void setFileName(const char* fn){
75  if (fileName) delete fileName;
76  fileName=g_strdup(fn);
77  }
78 
79  void addOKCallback(GtkSignalFunc callB, gpointer data){
80  g_signal_connect_after(G_OBJECT(GTK_FILE_SELECTION(fileGtk)->ok_button), "clicked", callB, data);
81  }
82  void addCancelCallback(GtkSignalFunc callB, gpointer data){
83  g_signal_connect_after(G_OBJECT(GTK_FILE_SELECTION(fileGtk)->cancel_button), "clicked", callB, data);
84  }
85 };
86 #endif //FILEGTK_H_
87 
~FileGtk(void)
Definition: FileGtk.H:63
FileGtk(void)
Definition: FileGtk.H:48
void getFileName(void)
Definition: FileGtk.H:73
FileGtk(const char *name)
Definition: FileGtk.H:55
GtkWidget * fileGtk
Definition: FileGtk.H:26
void setFileName(const char *fn)
Definition: FileGtk.H:74
gchar * fileName
Definition: FileGtk.H:46
void internalInit(void)
Definition: FileGtk.H:36
void addCancelCallback(GtkSignalFunc callB, gpointer data)
Definition: FileGtk.H:82
#define TITLE
Definition: FileGtk.H:23
void addOKCallback(GtkSignalFunc callB, gpointer data)
Definition: FileGtk.H:79
static void store_filename(GtkFileSelection *selector, gpointer data)
Definition: FileGtk.H:28
gtkIOStream: /tmp/gtkiostream/include/FileGtk.H Source File
GTK+ IOStream  Beta