def __init__(self, parent):
        self.builder = make_builder('glade/deals_filter.glade')
        self._parent = parent
        w = self.builder.get_object("deals_filter")
        w.set_transient_for(self._parent.window.builder.get_object('main_window'))
        w.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_ACCEPT)
        ######################
        # hide controls init #
        ######################
        self.hcontrols = []
        for (cb, boxes) in [("deals_filter_datetime_range_cb", ["deals_filter_datetime_range_box"]),
                            ("deals_filter_datetime_lower_cb", ["deals_filter_calendar_lower", "deals_filter_lower_time_box",
                                                                "deals_filter_lower_year", "deals_filter_lower_month", "deals_filter_lower_day"]),
                            ("deals_filter_datetime_upper_cb", ["deals_filter_calendar_upper", "deals_filter_upper_time_box",
                                                                "deals_filter_upper_year", "deals_filter_upper_month", "deals_filter_upper_day"]),
                            ("deals_filter_time_lower_cb", ["deals_filter_time_lower_box"]),
                            ("deals_filter_time_upper_cb", ["deals_filter_time_upper_box"]),
                            ("deals_filter_position_cb", ["deals_filter_position_box"]),
                            ("deals_filter_direction_cb", ["deals_filter_direction_box"]),
                            ("deals_filter_count_cb", ["deals_filter_count_box"]),
                            ("deals_filter_price_cb", ["deals_filter_price_box"]),
                            # ("deals_filter_broker_comm_cb", ["deals_filter_broker_comm_box"]),
                            # ("deals_filter_stock_comm_cb", ["deals_filter_stock_comm_box"]),
                            ("deals_filter_comm_cb", ["deals_filter_comm_box"]),
                            ("deals_filter_volume_cb", ["deals_filter_volume_box"]),
                            ("deals_filter_count_lower_cb", ["deals_filter_count_lower_spin"]),
                            ("deals_filter_count_upper_cb", ["deals_filter_count_upper_spin"]),
                            ("deals_filter_price_lower_cb", ["deals_filter_price_lower_spin"]),
                            ("deals_filter_price_upper_cb", ["deals_filter_price_upper_spin"]),
                            # ("deals_filter_broker_comm_lower_cb", ["deals_filter_broker_comm_lower_spin"]),
                            # ("deals_filter_broker_comm_upper_cb", ["deals_filter_broker_comm_upper_spin"]),
                            # ("deals_filter_stock_comm_lower_cb", ["deals_filter_stock_comm_lower_spin"]),
                            # ("deals_filter_stock_comm_upper_cb", ["deals_filter_stock_comm_upper_spin"]),
                            ("deals_filter_comm_lower_cb", ["deals_filter_comm_lower_spin"]),
                            ("deals_filter_comm_upper_cb", ["deals_filter_comm_upper_spin"]),
                            ("deals_filter_volume_lower_cb", ["deals_filter_volume_lower_spin"]),
                            ("deals_filter_volume_upper_cb", ["deals_filter_volume_upper_spin"]),
                            ("deals_filter_account_select", ["deals_filter_account_box"])]:
            self.hcontrols.append(hide_control(self.builder.get_object(cb), map(lambda a: self.builder.get_object(a), boxes)))

        ##########################
        # checkbuttons subhiders #
        ##########################
        self.subhcontrols = []
        for (cb, subcbs) in [("deals_filter_datetime_range_cb", ["deals_filter_datetime_lower_cb", "deals_filter_datetime_upper_cb"]),
                             ("deals_filter_count_cb", ["deals_filter_count_lower_cb", "deals_filter_count_upper_cb"]),
                             ("deals_filter_price_cb", ["deals_filter_price_lower_cb", "deals_filter_price_upper_cb"]),
                             # ("deals_filter_broker_comm_cb", ["deals_filter_broker_comm_lower_cb", "deals_filter_broker_comm_upper_cb"]),
                             # ("deals_filter_stock_comm_cb", ["deals_filter_stock_comm_lower_cb", "deals_filter_stock_comm_upper_cb"]),
                             ("deals_filter_comm_cb", ["deals_filter_comm_lower_cb", "deals_filter_comm_upper_cb"]),
                             ("deals_filter_volume_cb", ["deals_filter_volume_lower_cb", "deals_filter_volume_upper_cb"])]:
            self.subhcontrols.append(all_checked_control(self.builder.get_object(cb), map(lambda a: self.builder.get_object(a), subcbs)))

        ####################
        # datetime control #
        ####################
        dtcontrols = []
        for (dtcb, dtcal, tcb, h, m, s, year, month, day) in [("deals_filter_datetime_lower_cb", "deals_filter_calendar_lower",
                                                               "deals_filter_time_lower_cb", "deals_filter_hour_lower_spin",
                                                               "deals_filter_min_lower_spin", "deals_filter_sec_lower_spin",
                                                               "deals_filter_lower_year", "deals_filter_lower_month", "deals_filter_lower_day"),
                                                              ("deals_filter_datetime_upper_cb", "deals_filter_calendar_upper",
                                                               "deals_filter_time_upper_cb", "deals_filter_hour_upper_spin",
                                                               "deals_filter_min_upper_spin", "deals_filter_sec_upper_spin",
                                                               "deals_filter_upper_year", "deals_filter_upper_month", "deals_filter_upper_day")]:
            tcon = time_control(self.builder.get_object(h), self.builder.get_object(m), self.builder.get_object(s), self.builder.get_object(tcb))
            dtcon = datetime_control(self.builder.get_object(dtcal), tcon, checkbutton = self.builder.get_object(dtcb),
                                     year = self.builder.get_object(year), month = self.builder.get_object(month),
                                     day = self.builder.get_object(day))
            dtcon.set_current_datetime()
            dtcontrols.append(dtcon)
        self.datetime_range = datetime_range_control(dtcontrols[0], dtcontrols[1], self.builder.get_object("deals_filter_datetime_range_cb"))

        #############################
        # check instruments control #
        #############################
        dfv = self.builder.get_object("deals_filter_view")
        rev = self.builder.get_object("deals_filter_revers_bt")
        sel = self.builder.get_object("deals_filter_select_bt")
        desel = self.builder.get_object("deals_filter_deselect_bt")
        self.instruments = check_control(dfv, u'', [['id', int], (u'Инструмент', gtk.CellRendererText())], reverse_button = rev, select_button = sel, deselect_button = desel)

        ##########################
        # check accounts control #
        ##########################
        acv = self.builder.get_object("deals_filter_account_view")
        acr = self.builder.get_object("deals_filter_account_reverse")
        acset = self.builder.get_object("deals_filter_account_set")
        acunset = self.builder.get_object("deals_filter_account_unset")
        self.accounts = check_control(acv, u'', [['id', int], (u'Счет', gtk.CellRendererText())], reverse_button = acr, select_button = acset, deselect_button = acunset)
            

        ###################
        # select controls #
        ###################
        self.position = select_control({False : self.builder.get_object("deals_filter_position_free_rb"),
                                        True : self.builder.get_object("deals_filter_position_occpied_rb")},
                                       self.builder.get_object("deals_filter_position_cb"))
        self.direction = select_control({-1 : self.builder.get_object("deals_filter_direction_long_rb"),
                                         1 : self.builder.get_object("deals_filter_direction_short_rb")},
                                        self.builder.get_object("deals_filter_direction_cb"))
        self.account_current = select_control({"current" : self.builder.get_object("deals_filter_account_current"),
                                               "select" : self.builder.get_object("deals_filter_account_select"),
                                               "all" : self.builder.get_object("deals_filter_acount_all")})
        
        ##################
        # number ranges  #
        ##################
        self.count = number_range_control(number_control(self.builder.get_object("deals_filter_count_lower_spin"),
                                                         self.builder.get_object("deals_filter_count_lower_cb")),
                                          number_control(self.builder.get_object("deals_filter_count_upper_spin"),
                                                         self.builder.get_object("deals_filter_count_upper_cb")),
                                          self.builder.get_object("deals_filter_count_cb"))
        self.price = number_range_control(number_control(self.builder.get_object("deals_filter_price_lower_spin"),
                                                         self.builder.get_object("deals_filter_price_lower_cb"), step_incr = 0.01, digits = 4),
                                          number_control(self.builder.get_object("deals_filter_price_upper_spin"),
                                                         self.builder.get_object("deals_filter_price_upper_cb"), step_incr = 0.01, digits = 4),
                                          self.builder.get_object("deals_filter_price_cb"))
        self.comm = number_range_control(number_control(self.builder.get_object("deals_filter_comm_lower_spin"),
                                                        self.builder.get_object("deals_filter_comm_lower_cb"), step_incr = 0.01, digits = 4),
                                         number_control(self.builder.get_object("deals_filter_comm_upper_spin"),
                                                        self.builder.get_object("deals_filter_comm_upper_cb"), step_incr = 0.01, digits = 4),
                                         self.builder.get_object("deals_filter_comm_cb"))
        self.volume = number_range_control(number_control(self.builder.get_object("deals_filter_volume_lower_spin"),
                                                          self.builder.get_object("deals_filter_volume_lower_cb"), digits = 4),
                                           number_control(self.builder.get_object("deals_filter_volume_upper_spin"),
                                                          self.builder.get_object("deals_filter_volume_upper_cb"),  digits = 4),
                                           self.builder.get_object("deals_filter_volume_cb"))
        
        self.time = hiding_time_distance_range_control({"chbt" : self.builder.get_object("deals_filter_use_time_lower"),
                                                        "box" : self.builder.get_object("deals_filter_use_time_lower_box"),
                                                        "hour" : self.builder.get_object("deals_filter_use_time_lower_hour"),
                                                        "min" : self.builder.get_object("deals_filter_use_time_lower_min"),
                                                        "sec" : self.builder.get_object("deals_filter_use_time_lower_sec")},
                                                       {"chbt" : self.builder.get_object("deals_filter_use_time_upper"),
                                                        "box" : self.builder.get_object("deals_filter_use_time_upper_box"),
                                                        "hour" : self.builder.get_object("deals_filter_use_time_upper_hour"),
                                                        "min" : self.builder.get_object("deals_filter_use_time_upper_min"),
                                                        "sec" : self.builder.get_object("deals_filter_use_time_upper_sec")},
                                                       [self.builder.get_object("deals_filter_use_time_box")],
                                                       self.builder.get_object("deals_filter_use_time"))
    def __init__(self, parent):
        self._parent = parent
        self.builder = make_builder('glade/positions_filter.glade')
        w = self.builder.get_object("positions_filter")
        w.set_transient_for(self._parent.window.builder.get_object('main_window'))
        w.add_buttons(gtk.STOCK_CLOSE, gtk.RESPONSE_CANCEL)
        def shorter(name):
            return self.builder.get_object(name)

        self.open_datetime = hiding_datetime_range_control({"chbt" : shorter("pfilter_open_datetime_lower"),
                                                            "box" : shorter("pfilter_open_datetime_lower_box"),
                                                            "year" : shorter("pfilter_open_lower_year"),
                                                            "month" : shorter("pfilter_open_lower_month"),
                                                            "day" : shorter("pfilter_open_lower_day"),
                                                            "calendar" : shorter("pfilter_open_datetime_lower_calendar"),
                                                            "hour" : shorter("pfilter_open_datetime_lower_hour"),
                                                            "min" : shorter("pfilter_open_datetime_lower_min"),
                                                            "sec" : shorter("pfilter_open_datetime_lower_sec"),
                                                            "time_chbt" : shorter("pfilter_open_datetime_lower_time"),
                                                            "time_box" : shorter("pfilter_open_datetime_lower_time_box")},
                                                           {"chbt" : shorter("pfilter_open_datetime_upper"),
                                                            "box" : shorter("pfilter_open_datetime_upper_box"),
                                                            "year" : shorter("pfilter_open_upper_year"),
                                                            "month" : shorter("pfilter_open_upper_month"),
                                                            "day" : shorter("pfilter_open_upper_day"),
                                                            "calendar" : shorter("pfilter_open_datetime_upper_calendar"),
                                                            "hour" : shorter("pfilter_open_datetime_upper_hour"),
                                                            "min" : shorter("pfilter_open_datetime_upper_min"),
                                                            "sec" : shorter("pfilter_open_datetime_upper_sec"),
                                                            "time_chbt" : shorter("pfilter_open_datetime_upper_time"),
                                                            "time_box" : shorter("pfilter_open_datetime_upper_time_box")},
                                                           [shorter("pfilter_open_datetime_lower_superbox"),
                                                            shorter("pfilter_open_datetime_upper_superbox")],
                                                           shorter("pfilter_open_datetime"))
        
        self.close_datetime = hiding_datetime_range_control({"chbt" : shorter("pfilter_close_datetime_lower"),
                                                             "box" : shorter("pfilter_close_datetime_lower_box"),
                                                             "calendar" : shorter("pfilter_close_datetime_lower_calendar"),
                                                             "year" : shorter("pfilter_close_lower_year"),
                                                             "month" : shorter("pfilter_close_lower_month"),
                                                             "day" : shorter("pfilter_close_lower_day"),
                                                             "hour" : shorter("pfilter_close_datetime_lower_hour"),
                                                             "min" : shorter("pfilter_close_datetime_lower_min"),
                                                             "sec" : shorter("pfilter_close_datetime_lower_sec"),
                                                             "time_chbt" : shorter("pfilter_close_datetime_lower_time"),
                                                             "time_box" : shorter("pfilter_close_datetime_lower_time_box")},
                                                            {"chbt" : shorter("pfilter_close_datetime_upper"),
                                                             "box" : shorter("pfilter_close_datetime_upper_box"),
                                                             "calendar" : shorter("pfilter_close_datetime_upper_calendar"),
                                                             "year" : shorter("pfilter_close_upper_year"),
                                                             "month" : shorter("pfilter_close_upper_month"),
                                                             "day" : shorter("pfilter_close_upper_day"),
                                                             "hour" : shorter("pfilter_close_datetime_upper_hour"),
                                                             "min" : shorter("pfilter_close_datetime_upper_min"),
                                                             "sec" : shorter("pfilter_close_datetime_upper_sec"),
                                                             "time_chbt" : shorter("pfilter_close_datetime_upper_time"),
                                                             "time_box" : shorter("pfilter_close_datetime_upper_time_box")},
                                                            [shorter("pfilter_close_datetime_lower_superbox"),
                                                             shorter("pfilter_close_datetime_upper_superbox")],
                                                            shorter("pfilter_close_datetime"))
                                                           

        self.direction = hiding_select_control({-1 : shorter("pfilter_direction_long"),
                                                1 : shorter("pfilter_direction_short")},
                                               shorter("pfilter_direction"),
                                               shorter("pfilter_direction_box"))
        self.count = hiding_number_range_control(shorter("pfilter_count_lower_spin"),
                                                 shorter("pfilter_count_upper_spin"),
                                                 shorter("pfilter_count_box"),
                                                 shorter("pfilter_count"),
                                                 shorter("pfilter_count_lower"),
                                                 shorter("pfilter_count_upper"))
        self.price = hiding_number_range_control(shorter("pfilter_coast_lower_spin"),
                                                 shorter("pfilter_coast_upper_spin"),
                                                 shorter("pfilter_coast_box"),
                                                 shorter("pfilter_coast"),
                                                 shorter("pfilter_coast_lower"),
                                                 shorter("pfilter_coast_upper"),
                                                 step_incr = 0.1, digits = 4)
        self.volume = hiding_number_range_control(shorter("pfilter_volume_lower_spin"),
                                                  shorter("pfilter_volume_upper_spin"),
                                                  shorter("pfilter_volume_box"),
                                                  shorter("pfilter_volume"),
                                                  shorter("pfilter_volume_lower"),
                                                  shorter("pfilter_volume_upper"),
                                                  digits = 4)
        self.plnet_acc = hiding_number_range_control(shorter("pfilter_plnet_acc_lower_spin"),
                                                     shorter("pfilter_plnet_acc_upper_spin"),
                                                     shorter("pfilter_plnet_acc_box"),
                                                     shorter("pfilter_plnet_acc"),
                                                     shorter("pfilter_plnet_acc_lower"),
                                                     shorter("pfilter_plnet_acc_upper"),
                                                     step_incr = 0.1, digits = 4)
        self.plnet_volume = hiding_number_range_control(shorter("pfilter_plnet_volume_lower_spin"),
                                                        shorter("pfilter_plnet_volume_upper_spin"),
                                                        shorter("pfilter_plnet_volume_box"),
                                                        shorter("pfilter_plnet_volume"),
                                                        shorter("pfilter_plnet_volume_lower"),
                                                        shorter("pfilter_plnet_volume_upper"),
                                                        step_incr = 0.1, digits = 4)
        self.comm_plgross = hiding_number_range_control(shorter("pfilter_comm_plgross_lower_spin"),
                                                        shorter("pfilter_comm_plgross_upper_spin"),
                                                        shorter("pfilter_comm_plgross_box"),
                                                        shorter("pfilter_comm_plgross"),
                                                        shorter("pfilter_comm_plgross_lower"),
                                                        shorter("pfilter_comm_plgross_upper"),
                                                        step_incr = 0.1, digits = 4)
        self.price_range = hiding_number_range_control(shorter("pfilter_price_range_lower_spin"),
                                                       shorter("pfilter_price_range_upper_spin"),
                                                       shorter("pfilter_price_range_box"),
                                                       shorter("pfilter_price_range"),
                                                       shorter("pfilter_price_range_lower"),
                                                       shorter("pfilter_price_range_upper"),
                                                       step_incr = 0.1, digits = 4)
        self.plgross = hiding_number_range_control(shorter("pfilter_plgross_lower_spin"),
                                                   shorter("pfilter_plgross_upper_spin"),
                                                   shorter("pfilter_plgross_box"),
                                                   shorter("pfilter_plgross"),
                                                   shorter("pfilter_plgross_lower"),
                                                   shorter("pfilter_plgross_upper"),
                                                   step_incr = 0.1, digits = 4)
        self.plnet = hiding_number_range_control(shorter("pfilter_plnet_lower_spin"),
                                                 shorter("pfilter_plnet_upper_spin"),
                                                 shorter("pfilter_plnet_box"),
                                                 shorter("pfilter_plnet"),
                                                 shorter("pfilter_plnet_lower"),
                                                 shorter("pfilter_plnet_upper"),
                                                 step_incr = 0.1, digits = 4)
        self.comm = hiding_number_range_control(shorter("pfilter_comm_lower_spin"),
                                                shorter("pfilter_comm_upper_spin"),
                                                shorter("pfilter_comm_box"),
                                                shorter("pfilter_comm"),
                                                shorter("pfilter_comm_lower"),
                                                shorter("pfilter_comm_upper"),
                                                step_incr = 0.1, digits = 4)
        self.loss_profit = hiding_select_control({1 : shorter("pfilter_profit_prof"),
                                                  -1 : shorter("pfilter_profit_loss")},
                                                 shorter("pfilter_profit"),
                                                 shorter("pfilter_profit_box"))
        
        
        

        

        self.time_distance = hiding_time_distance_range_control({"chbt" : shorter("pfilter_timerange_lower"),
                                                                 "box" : shorter("pfilter_timerange_lower_box"),
                                                                 "day" : shorter("pfilter_timerange_lower_day"),
                                                                 "hour" : shorter("pfilter_timerange_lower_hour"),
                                                                 "min" : shorter("pfilter_timerange_lower_min")},
                                                                {"chbt" : shorter("pfilter_timerange_upper"),
                                                                 "box" : shorter("pfilter_timerange_upper_box"),
                                                                 "day" : shorter("pfilter_timerange_upper_day"),
                                                                 "hour" : shorter("pfilter_timerange_upper_hour"),
                                                                 "min" : shorter("pfilter_timerange_upper_min")},
                                                                [shorter("pfilter_timerange_lower_superbox"), shorter("pfilter_timerange_upper_superbox")],
                                                                shorter("pfilter_timerange"))
        self.account_current = select_control({"current" : shorter("pfilter_account_current"),
                                               "all" : shorter("pfilter_account_all"),
                                               "select" : shorter("pfilter_account_select")})
        self.check_accounts = check_control(shorter("pfilter_accounts_view"), "", [['id', int], (u'Счет', gtk.CellRendererText())],
                                            reverse_button = shorter("pfilter_account_reverse"),
                                            select_button = shorter("pfilter_account_set"),
                                            deselect_button = shorter("pfilter_account_unset"))
        self.hiders = []
        self.hiders.append(hide_control(shorter("pfilter_account_select"),
                                        [shorter("pfilter_accounts_box")]))
        self.check_instruments = check_control(shorter("pfilter_instruments"), "", [['id', int], (u'Инструмент', gtk.CellRendererText())],
                                               reverse_button = shorter("pfilter_instrument_reverse"),
                                               select_button = shorter("pfilter_instrument_set"),
                                               deselect_button = shorter("pfilter_instrument_unset"))