Advertisement
Guest User

Untitled

a guest
May 24th, 2017
549
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.92 KB | None | 0 0
  1. /* ----------------------------------------------------------------------------
  2.  * ginterface.h -- graphic interface
  3.  * Main module                                                           header
  4.  * ----------------------------------------------------------------------------
  5.  * copyright (c) 2006 Jérôme BENHAÏM <benhaimjerome@gmail.com>, Mirsal ENNAIME <mirsal.ennaime@gmail.com>
  6.  *
  7.  * ----------------------------------------------------------------------------
  8.  * This program is free software ; you can redistribute it and/or modify it
  9.  * under the terms of the GNU General Public License as published by the Free
  10.  * Software Foundation ; either version 2 of the License, or (at your option)
  11.  * any later version.
  12.  *
  13.  * This program is distributed in the hope that it will be useful, but WITHOUT
  14.  * ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or
  15.  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  16.  * more details.
  17.  * ----------------------------------------------------------------------------
  18.  * Before attempting to install gtkmm 2.4, you might first need to install these other packages.
  19.  
  20.     * libsigc++ 2.0
  21.     * GTK+ 2.4
  22.     * cairomm
  23.  
  24. *These dependencies have their own dependencies, including the following applications and libraries:
  25.  
  26.     * pkg-config
  27.     * glib
  28.     * ATK
  29.     * Pango
  30.     * cairo
  31.  */
  32. using namespace std;
  33.  
  34. #ifndef ginterface_H
  35.     #define ginterface_H
  36.     /* sys */
  37.     #include <string>  
  38.     /* gnome */
  39.     #include <libglademm.h>
  40.     #include <gtkmm.h>
  41.     /* app */
  42.     #include "debug.h"
  43.     #include "common.h"
  44.     #include "interface.h"
  45.     #include "callback.h"
  46.     using namespace Gtk;
  47.     // Liste des Class
  48.  
  49. /* class Gmodules */
  50.     class Gmodule : public Module { /* Gnome Module structure */
  51.     private:
  52.         // widget:          Pointer table of Widgets
  53.         /*Widget* widgets;*/
  54.         Glib::RefPtr<Gnome::Glade::Xml> refXml;
  55.     protected:
  56.     public:
  57.         //Modules(){ };
  58.         Gmodule(Glib::ustring name) : Module(name){ LOG_IN ();
  59.                 #ifdef GLIBMM_EXCEPTIONS_ENABLED
  60.                     try{ refXml = Gnome::Glade::Xml::create(name); }
  61.                     catch(const Gnome::Glade::XmlError& ex){
  62.                         cerr << ex.what() << endl;
  63.                         exit;
  64.                     }
  65.                 #else
  66.                     auto_ptr<Gnome::Glade::XmlError> error;
  67.                     refXml = Gnome::Glade::Xml::create(name, "", "", error);
  68.                     if(error.get()){
  69.                         cerr << error->what() << endl;
  70.                         exit;
  71.                     }
  72.                 #endif
  73.                 //Get the Glade-instantiated window_main:
  74.         LOG_OUT ();
  75.          };
  76.         ~Gmodule(){ LOG_IN (); /*delete refXml;*/ LOG_OUT (); };
  77.        
  78.         Glib::RefPtr<Gnome::Glade::Xml> get_refxml(){ LOG_IN (); return refXml; LOG_OUT (); };
  79.        
  80.         //void get_win_main(Window* p){ LOG_IN ();  LOG_OUT (); };
  81.     };
  82.     /* class */
  83.  
  84.     class Ginterface : public Interface {
  85.         private:
  86.             Glib::ustring filename;
  87.             Gmodule* modules;
  88.             Window* winmain;
  89.            
  90.         protected:
  91.            
  92.         public:
  93.             static void on_oscil_sync_algo1_clicked(Gtk::CheckButton * button, gpointer p) {
  94.                 LOG_IN ();
  95.                 //button.set_label("ello");
  96.                 LOG_OUT ();
  97.             };
  98.             static void on_winmain_quit_event(Window * window, gpointer p) {
  99.                 LOG_IN ();
  100.            
  101.                 LOG_OUT ();
  102.             };
  103.         Ginterface(int argc, char *argv[]) : Interface() {
  104.             LOG_IN();
  105.             Main kit(argc, argv);
  106.            
  107.             int i;
  108.             filename="";
  109.             for ( i = 1; i <= argc; i++){
  110.                 if ( (argv[i] != NULL) && (Glib::ustring(argv[i]) == "-f")
  111.                   && (argv[i+1] != NULL) && (Glib::ustring(argv[i+1]) != "") ){  // -f and name as argument
  112.                     FILE *file = fopen(argv[i+1],"r");
  113.                     if ( file == NULL) {                        // try open fil
  114.                         filename="dxbaseinterface.glade";
  115.                         cout << "Le fichier "<<argv[i+1]<<" n'existe pas" << endl;
  116.                         cout << "Chargement du fichier par defaut : " << filename << endl;
  117.                     }else{
  118.                        cout << "Chargement du fichier d'interface : "<<argv[i+1]<<" ."<<endl;
  119.                         fclose(file);
  120.                         filename=Glib::ustring(argv[i+1]);
  121.                     }
  122.                 }
  123.             }
  124.             if (filename == ""){
  125.                 filename="dxbaseinterface.glade";
  126.                 cout << "Aucun fichier spécifié." << endl;
  127.                 cout << "Chargement du fichier : " << filename << endl;
  128.                 FILE *file = fopen("dxbaseinterface.glade","r");
  129.                 if ( file == NULL) {                        // try open fil
  130.                     cout << "Le fichier "<<filename<<" n'existe pas" << endl;
  131.                     filename="interface.glade";
  132.                     cout << "Chargement du fichier par defaut : " << filename << endl;
  133.                     FILE *file = fopen("dxbaseinterface.glade","r");
  134.                 }else{
  135.                     cout << "argv "<<i<<" : "<<argv[i]<<" ."<<endl;
  136.                     fclose(file);
  137.                 }
  138.             }
  139.             winmain = 0;
  140.             modules = new Gmodule(filename);
  141.             (modules[0].get_refxml())->get_widget("window_main", winmain);
  142.             cout << modules[0].get_name() << endl;
  143.             CheckButton* checkbutton_oscil_sync_algo1;
  144.             (modules[0].get_refxml())->get_widget("checkbutton_oscil_sync_algo1", checkbutton_oscil_sync_algo1);
  145.            
  146.             // gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(togglebutton_mute_op1),TRUE);
  147.             // fprintf ( stderr, "kiki  %u\n", togglebutton_mute_op1 );
  148.             //register_click_handler(okbutton, clicked, somedata);
  149.            
  150.             //g_signal_connect(checkbutton_oscil_sync_algo1, "clicked", G_CALLBACK (on_oscil_sync_algo1_clicked),NULL);
  151.             checkbutton_oscil_sync_algo1->signal_clicked().connect(sigc::ptr_fun(&on_oscil_sync_algo1_clicked));
  152.  
  153.             //g_signal_connect(togglebutton_mute_op1, "toggled", G_CALLBACK(on_togglebutton_mute_op1_clicked_event), NULL);
  154.             //g_signal_connect(winmain, "clicked", G_CALLBACK(on_winmain_quit_event), NULL);
  155.             if(winmain){
  156.             //Get the Glade-instantiated Button, and connect a signal handler:
  157.                    
  158.                 kit.run(*winmain);
  159.                 delete winmain;
  160.                 //winmain = 0;
  161.             }
  162.                
  163.             // assign widgets
  164.             //g_assign_widget();
  165.             // assign signals
  166.             //g_assign_signal();
  167.             //Gtk::Window window;
  168.             //Main::run(*(Gtk::Window*)gtk_widget_get_tooltip_window(*modules[0].get_widget(0)));
  169.         LOG_OUT();
  170.         }
  171.         ~Ginterface(){ LOG_IN(); delete modules; LOG_OUT(); };
  172.     }; 
  173.  
  174. //int ginterface(int , char *[]);
  175.  
  176.    
  177. #endif /* ginterface_H */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement