Пример #1
0
 def __init__(self, parent):
     """
     Constructor
     
     @param parent parent widget (QWidget)
     """
     self.tabWidgets = []
     
     QSplitter.__init__(self, parent)
     ViewManager.__init__(self)
     self.setChildrenCollapsible(False)
     
     tw = TabWidget(self)
     self.addWidget(tw)
     self.tabWidgets.append(tw)
     self.currentTabWidget = tw
     self.currentTabWidget.showIndicator(True)
     tw.currentChanged.connect(self.__currentChanged)
     tw.installEventFilter(self)
     tw.tabBar().installEventFilter(self)
     self.setOrientation(Qt.Vertical)
     self.__inRemoveView = False
     
     self.maxFileNameChars = Preferences.getUI(
         "TabViewManagerFilenameLength")
     self.filenameOnly = Preferences.getUI("TabViewManagerFilenameOnly")
Пример #2
0
    def __init__(self, parent):
        """
        Constructor
        
        @param parent parent widget (QWidget)
        """
        self.tabWidgets = []

        QSplitter.__init__(self, parent)
        ViewManager.__init__(self)
        self.setChildrenCollapsible(False)

        tw = TabWidget(self)
        self.addWidget(tw)
        self.tabWidgets.append(tw)
        self.currentTabWidget = tw
        self.currentTabWidget.showIndicator(True)
        tw.currentChanged.connect(self.__currentChanged)
        tw.installEventFilter(self)
        tw.tabBar().installEventFilter(self)
        self.setOrientation(Qt.Vertical)
        self.__inRemoveView = False

        self.maxFileNameChars = Preferences.getUI(
            "TabViewManagerFilenameLength")
        self.filenameOnly = Preferences.getUI("TabViewManagerFilenameOnly")
Пример #3
0
    def __init__(self, orientation=Qt.Horizontal):
        QSplitter.__init__(self, orientation)
        self.pfile = None

        self.lateral_widget = lateral_widget.LateralWidget()
        self.table_widget = table_widget.TableWidget()
        self.query_container = query_container.QueryContainer(self)

        self._vsplitter = QSplitter(Qt.Vertical)
        self._vsplitter.addWidget(self.table_widget)
        self._vsplitter.addWidget(self.query_container)
        self.addWidget(self.lateral_widget)
        self.addWidget(self._vsplitter)

        self.modified = False

        self.__nquery = 1

        # Connections
        # FIXME
        self.lateral_widget.relationClicked.connect(self._on_relation_clicked)

        # lambda i: self.table_widget.stacked.setCurrentIndex(i))
        # For change table widget item when up/down
        # see issue #39
        self.lateral_widget.relationSelectionChanged.connect(
            lambda i: self.table_widget.stacked.setCurrentIndex(i))
        self.query_container.saveEditor['PyQt_PyObject'].connect(
            self.save_query)
        self.setSizes([1, 1])
Пример #4
0
    def __init__(self, orientation=Qt.Vertical):
        QSplitter.__init__(self, orientation)
        self.pfile = None
        self._hsplitter = QSplitter(Qt.Horizontal)

        self.lateral_widget = lateral_widget.LateralWidget()
        self._hsplitter.addWidget(self.lateral_widget)
        self.table_widget = table_widget.TableWidget()
        self._hsplitter.addWidget(self.table_widget)

        self.addWidget(self._hsplitter)

        self.query_container = query_container.QueryContainer(self)
        self.addWidget(self.query_container)

        self.modified = False

        self.__nquery = 1

        # Connections
        # FIXME
        self.lateral_widget.itemClicked.connect(
            lambda: self.table_widget.stacked.setCurrentIndex(
                self.lateral_widget.row()))
        # For change table widget item when up/down
        # see issue #39
        self.lateral_widget.itemSelectionChanged.connect(
            lambda: self.table_widget.stacked.setCurrentIndex(
                self.lateral_widget.row()))
        self.query_container.saveEditor['PyQt_PyObject'].connect(
            self.save_query)
        self.setSizes([1, 1])
Пример #5
0
    def __init__(self, querylist, config, parent, debug=True):
        QSplitter.__init__(self, parent)
        self.sql = querylist
        self.conf = config
        self.debug = debug
        self.parent = parent
        self.db = Database.Database(self.conf, sql=self.sql)

        filters_display = {
            "Heroes": True,
            "Sites": True,
            "Games": True,
            "Currencies": True,
            "Limits": True,
            "LimitSep": True,
            "LimitType": True,
            "Type": False,
            "UseType": 'ring',
            "Seats": False,
            "SeatSep": False,
            "Dates": True,
            "GraphOps": True,
            "Groups": False,
            "Button1": True,
            "Button2": True
        }

        self.filters = Filters.Filters(self.db, display=filters_display)
        self.filters.registerButton1Name(_("Refresh Graph"))
        self.filters.registerButton1Callback(self.generateGraph)
        self.filters.registerButton2Name(_("Export to File"))
        self.filters.registerButton2Callback(self.exportGraph)

        scroll = QScrollArea()
        scroll.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)
        scroll.setWidget(self.filters)
        self.addWidget(scroll)

        frame = QFrame()
        self.graphBox = QVBoxLayout()
        frame.setLayout(self.graphBox)
        self.addWidget(frame)
        self.setStretchFactor(0, 0)
        self.setStretchFactor(1, 1)

        self.fig = None
        #self.exportButton.set_sensitive(False)
        self.canvas = None

        self.exportFile = None

        self.db.rollback()
Пример #6
0
    def __init__(self, parent):
        QSplitter.__init__(self, parent)

        self.parent = parent

        codeInspector = CodeInspector(self)
        self.addWidget(codeInspector)

        self.tabwidget = TabWidget(self)
        self.addWidget(self.tabwidget)

        tools = Tools(self)
        self.addWidget(tools)
Пример #7
0
    def __init__(self):
        QSplitter.__init__(self)
        self.setObjectName("main_container")
        self.main_tab = tab_manager.TabManager()
        self.secundary_tab = tab_manager.TabManager()
        self.secundary_tab.hide()
        self.tab = self.main_tab
        self.addWidget(self.main_tab)
        self.addWidget(self.secundary_tab)
        Amaru.load_component("main_container", self)

        self.fileChanged.connect(self._file_changed)
        self.tab.currentChanged[int].connect(self._current_tab_changed)
        self.tab.allTabsClosed.connect(self._all_tabs_closed)
Пример #8
0
    def __init__(self, parent):
        """
        Constructor
        
        @param parent parent widget (QWidget)
        """
        self.stacks = []

        QSplitter.__init__(self, parent)
        ViewManager.__init__(self)
        self.setChildrenCollapsible(False)

        self.viewlist = QListWidget(self)
        policy = self.viewlist.sizePolicy()
        policy.setHorizontalPolicy(QSizePolicy.Ignored)
        self.viewlist.setSizePolicy(policy)
        self.addWidget(self.viewlist)
        self.viewlist.setContextMenuPolicy(Qt.CustomContextMenu)
        self.viewlist.currentRowChanged.connect(self.__showSelectedView)
        self.viewlist.customContextMenuRequested.connect(self.__showMenu)

        self.stackArea = QSplitter(self)
        self.stackArea.setChildrenCollapsible(False)
        self.addWidget(self.stackArea)
        self.stackArea.setOrientation(Qt.Vertical)
        stack = StackedWidget(self.stackArea)
        self.stackArea.addWidget(stack)
        self.stacks.append(stack)
        self.currentStack = stack
        stack.currentChanged.connect(self.__currentChanged)
        stack.installEventFilter(self)
        self.setSizes([int(self.width() * 0.2), int(self.width() * 0.8)])
        # 20% for viewlist, 80% for the editors
        self.__inRemoveView = False

        self.__initMenu()
        self.contextMenuEditor = None
        self.contextMenuIndex = -1
Пример #9
0
 def __init__(self, parent):
     """
     Constructor
     
     @param parent parent widget (QWidget)
     """
     self.stacks = []
     
     QSplitter.__init__(self, parent)
     ViewManager.__init__(self)
     self.setChildrenCollapsible(False)
     
     self.viewlist = QListWidget(self)
     policy = self.viewlist.sizePolicy()
     policy.setHorizontalPolicy(QSizePolicy.Ignored)
     self.viewlist.setSizePolicy(policy)
     self.addWidget(self.viewlist)
     self.viewlist.setContextMenuPolicy(Qt.CustomContextMenu)
     self.viewlist.currentRowChanged.connect(self.__showSelectedView)
     self.viewlist.customContextMenuRequested.connect(self.__showMenu)
     
     self.stackArea = QSplitter(self)
     self.stackArea.setChildrenCollapsible(False)
     self.addWidget(self.stackArea)
     self.stackArea.setOrientation(Qt.Vertical)
     stack = StackedWidget(self.stackArea)
     self.stackArea.addWidget(stack)
     self.stacks.append(stack)
     self.currentStack = stack
     stack.currentChanged.connect(self.__currentChanged)
     stack.installEventFilter(self)
     self.setSizes([int(self.width() * 0.2), int(self.width() * 0.8)])
     # 20% for viewlist, 80% for the editors
     self.__inRemoveView = False
     
     self.__initMenu()
     self.contextMenuEditor = None
     self.contextMenuIndex = -1
Пример #10
0
    def __init__(self, config, querylist, mainwin, owner, debug=True):
        QSplitter.__init__(self, mainwin)
        self.debug = debug
        self.conf = config
        self.sql = querylist
        self.window = mainwin
        self.owner = owner

        self.liststore = None

        self.MYSQL_INNODB = 2
        self.PGSQL = 3
        self.SQLITE = 4

        self.fig = None
        self.canvas = None
        self.ax = None
        self.graphBox = None

        # create new db connection to avoid conflicts with other threads
        self.db = Database.Database(self.conf, sql=self.sql)
        self.cursor = self.db.cursor

        settings = {}
        settings.update(self.conf.get_db_parameters())
        settings.update(self.conf.get_import_parameters())
        settings.update(self.conf.get_default_paths())

        # text used on screen stored here so that it can be configured
        self.filterText = {
            'handhead': _('Hand Breakdown for all levels listed above')
        }

        filters_display = {
            "Heroes": True,
            "Sites": True,
            "Games": True,
            "Currencies": True,
            "Limits": True,
            "LimitSep": True,
            "LimitType": True,
            "Type": False,
            "Seats": True,
            "SeatSep": False,
            "Dates": True,
            "Groups": False,
            "GroupsAll": False,
            "Button1": True,
            "Button2": False
        }

        self.filters = Filters.Filters(self.db, display=filters_display)
        self.filters.registerButton1Name("_Refresh")
        self.filters.registerButton1Callback(self.refreshStats)

        scroll = QScrollArea()
        scroll.setWidget(self.filters)

        # ToDo: store in config
        # ToDo: create popup to adjust column config
        # columns to display, keys match column name returned by sql, values in tuple are:
        #     is column displayed, column heading, xalignment, formatting
        self.columns = [(1.0, "SID"), (1.0, "Hands"), (0.5, "Start"),
                        (0.5, "End"), (1.0, "Rate"), (1.0, "Open"),
                        (1.0, "Close"), (1.0, "Low"), (1.0, "High"),
                        (1.0, "Range"), (1.0, "Profit")]

        self.detailFilters = []  # the data used to enhance the sql select

        self.stats_frame = QFrame()
        self.stats_frame.setLayout(QVBoxLayout())
        self.view = None
        heading = QLabel(self.filterText['handhead'])
        heading.setAlignment(Qt.AlignCenter)
        self.stats_frame.layout().addWidget(heading)

        self.main_vbox = QSplitter(Qt.Vertical)

        self.graphBox = QFrame()
        self.graphBox.setLayout(QVBoxLayout())

        self.addWidget(scroll)
        self.addWidget(self.main_vbox)
        self.setStretchFactor(0, 0)
        self.setStretchFactor(1, 1)
        self.main_vbox.addWidget(self.graphBox)
        self.main_vbox.addWidget(self.stats_frame)
Пример #11
0
 def __init__(self, orientation=Qt.Horizontal):
     QSplitter.__init__(self, orientation)
     self.setHandleWidth(1)
     self.child_splitters = []
Пример #12
0
    def __init__(self, config, querylist, mainwin):
        QSplitter.__init__(self, mainwin)
        self.config = config
        self.main_window = mainwin
        self.sql = querylist
        self.replayer = None

        self.db = Database.Database(self.config, sql=self.sql)

        filters_display = {
            "Heroes": True,
            "Sites": True,
            "Games": True,
            "Currencies": False,
            "Limits": True,
            "LimitSep": True,
            "LimitType": True,
            "Positions": True,
            "Type": True,
            "Seats": False,
            "SeatSep": False,
            "Dates": True,
            "Cards": True,
            "Groups": False,
            "GroupsAll": False,
            "Button1": True,
            "Button2": False
        }

        self.filters = Filters.Filters(self.db, display=filters_display)
        self.filters.registerButton1Name(_("Load Hands"))
        self.filters.registerButton1Callback(self.loadHands)
        self.filters.registerCardsCallback(self.filter_cards_cb)

        scroll = QScrollArea()
        scroll.setWidget(self.filters)

        self.handsFrame = QFrame()
        self.handsVBox = QVBoxLayout()
        self.handsFrame.setLayout(self.handsVBox)

        self.addWidget(scroll)
        self.addWidget(self.handsFrame)
        self.setStretchFactor(0, 0)
        self.setStretchFactor(1, 1)

        self.deck_instance = Deck.Deck(self.config, height=42, width=30)
        self.cardImages = self.init_card_images()

        # Dict of colnames and their column idx in the model/ListStore
        self.colnum = {
            'Stakes': 0,
            'Pos': 1,
            'Street0': 2,
            'Action0': 3,
            'Street1-4': 4,
            'Action1-4': 5,
            'Won': 6,
            'Bet': 7,
            'Net': 8,
            'Game': 9,
            'HandId': 10,
        }
        self.view = QTableView()
        self.view.setSelectionBehavior(QTableView.SelectRows)
        self.handsVBox.addWidget(self.view)
        self.model = QStandardItemModel(0, len(self.colnum), self.view)
        self.filterModel = QSortFilterProxyModel()
        self.filterModel.setSourceModel(self.model)
        self.filterModel.setSortRole(Qt.UserRole)

        self.view.setModel(self.filterModel)
        self.view.verticalHeader().hide()
        self.model.setHorizontalHeaderLabels([
            'Stakes', 'Pos', 'Street0', 'Action0', 'Street1-4', 'Action1-4',
            'Won', 'Bet', 'Net', 'Game', 'HandId'
        ])

        self.view.doubleClicked.connect(self.row_activated)
        self.view.contextMenuEvent = self.contextMenu
        self.filterModel.rowsInserted.connect(
            lambda index, start, end:
            [self.view.resizeRowToContents(r) for r in xrange(start, end + 1)])
        self.filterModel.filterAcceptsRow = lambda row, sourceParent: self.is_row_in_card_filter(
            row)

        self.view.resizeColumnsToContents()
        self.view.setSortingEnabled(True)
Пример #13
0
 def __init__(self, parent=None):
     QSplitter.__init__(self, parent)
Пример #14
0
    def __init__(self, config, querylist, mainwin, debug=True):
        QSplitter.__init__(self, None)
        self.debug = debug
        self.conf = config
        self.main_window = mainwin
        self.sql = querylist

        self.liststore = [
        ]  # gtk.ListStore[]         stores the contents of the grids
        self.listcols = [
        ]  # gtk.TreeViewColumn[][]  stores the columns in the grids

        self.MYSQL_INNODB = 2
        self.PGSQL = 3
        self.SQLITE = 4

        # create new db connection to avoid conflicts with other threads
        self.db = Database.Database(self.conf, sql=self.sql)
        self.cursor = self.db.cursor

        settings = {}
        settings.update(self.conf.get_db_parameters())
        settings.update(self.conf.get_import_parameters())
        settings.update(self.conf.get_default_paths())

        # text used on screen stored here so that it can be configured
        self.filterText = {
            'handhead': _('Hand Breakdown for all levels listed above')
        }

        filters_display = {
            "Heroes": True,
            "Sites": True,
            "Games": True,
            "Currencies": True,
            "Limits": True,
            "LimitSep": True,
            "LimitType": True,
            "Type": True,
            "Seats": True,
            "SeatSep": True,
            "Dates": True,
            "Groups": True,
            "GroupsAll": True,
            "Button1": True,
            "Button2": True
        }

        self.filters = Filters.Filters(self.db, display=filters_display)
        self.filters.registerButton1Name(_("Filters"))
        self.filters.registerButton1Callback(self.showDetailFilter)
        self.filters.registerButton2Name(_("Refresh Stats"))
        self.filters.registerButton2Callback(self.refreshStats)

        scroll = QScrollArea()
        scroll.setWidget(self.filters)

        # ToDo: store in config
        # ToDo: create popup to adjust column config
        # columns to display, keys match column name returned by sql, values in tuple are:
        #     is column displayed(summary then position), column heading, xalignment, formatting, celltype
        self.columns = self.conf.get_gui_cash_stat_params()

        # Detail filters:  This holds the data used in the popup window, extra values are
        # added at the end of these lists during processing
        #                  sql test,              screen description,        min, max
        self.handtests = [  # already in filter class : ['h.seats', 'Number of Players', 2, 10]
            ['gt.maxSeats', 'Size of Table', 2, 10],
            ['h.playersVpi', 'Players who VPI', 0, 10],
            ['h.playersAtStreet1', 'Players at Flop', 0, 10],
            ['h.playersAtStreet2', 'Players at Turn', 0, 10],
            ['h.playersAtStreet3', 'Players at River', 0, 10],
            ['h.playersAtStreet4', 'Players at Street7', 0, 10],
            ['h.playersAtShowdown', 'Players at Showdown', 0, 10],
            ['h.street0Raises', 'Bets to See Flop', 0, 5],
            ['h.street1Raises', 'Bets to See Turn', 0, 5],
            ['h.street2Raises', 'Bets to See River', 0, 5],
            ['h.street3Raises', 'Bets to See Street7', 0, 5],
            ['h.street4Raises', 'Bets to See Showdown', 0, 5]
        ]

        self.cardstests = [
            [Card.DATABASE_FILTERS['pair'],
             _('Pocket pairs')],
            [Card.DATABASE_FILTERS['suited'],
             _('Suited')],
            [
                Card.DATABASE_FILTERS['suited_connectors'],
                _('Suited connectors')
            ],
            [Card.DATABASE_FILTERS['offsuit'],
             _('Offsuit')],
            [
                Card.DATABASE_FILTERS['offsuit_connectors'],
                _('Offsuit connectors')
            ],
        ]
        self.stats_frame = None
        self.stats_vbox = None
        self.detailFilters = []  # the data used to enhance the sql select
        self.cardsFilters = []

        self.stats_frame = QFrame()
        self.stats_frame.setLayout(QVBoxLayout())

        self.stats_vbox = QSplitter(Qt.Vertical)
        self.stats_frame.layout().addWidget(self.stats_vbox)

        self.addWidget(scroll)
        self.addWidget(self.stats_frame)
        self.setStretchFactor(0, 0)
        self.setStretchFactor(1, 1)

        # Make sure Hand column is not displayed.
        hand_column = (x for x in self.columns if x[0] == 'hand').next()
        hand_column[colshowsumm] = hand_column[colshowposn] = False

        # If rfi and steal both on for summaries, turn rfi off.
        rfi_column = (x for x in self.columns if x[0] == 'rfi').next()
        steals_column = (x for x in self.columns if x[0] == 'steals').next()
        if rfi_column[colshowsumm] and steals_column[colshowsumm]:
            rfi_column[colshowsumm] = False

        # If rfi and steal both on for position breakdowns, turn steals off.
        if rfi_column[colshowposn] and steals_column[colshowposn]:
            steals_column[colshowposn] = False
Пример #15
0
    def __init__(self, config, db, sql, mainwin, debug=True):
        QSplitter.__init__(self, mainwin)
        self.conf = config
        self.db = db
        self.cursor = self.db.cursor
        self.sql = sql
        self.main_window = mainwin
        self.debug = debug

        self.liststore = [
        ]  # QStandardItemModel[] stores the contents of the grids
        self.listcols = []

        filters_display = {
            "Heroes": True,
            "Sites": True,
            #"Games"     : True,
            #"Limits"    : True,
            #"LimitSep"  : True,
            #"LimitType" : True,
            #"Type"      : True,
            "Seats": True,
            #"SeatSep"   : True,
            "Dates": True,
            #"Groups"    : True,
            #"GroupsAll" : True,
            #"Button1"   : True,
            "Button2": True
        }

        self.stats_frame = None
        self.stats_vbox = None
        self.detailFilters = []  # the data used to enhance the sql select

        self.filters = Filters.Filters(self.db, display=filters_display)
        #self.filters.registerButton1Name(_("_Filters"))
        #self.filters.registerButton1Callback(self.showDetailFilter)
        self.filters.registerButton2Name(_("_Refresh Stats"))
        self.filters.registerButton2Callback(self.refreshStats)

        scroll = QScrollArea()
        scroll.setWidget(self.filters)

        # ToDo: store in config
        # ToDo: create popup to adjust column config
        # columns to display, keys match column name returned by sql, values in tuple are:
        #     is column displayed, column heading, xalignment, formatting, celltype
        self.columns = [
            ["siteName", True, _("Site"), 0.0, "%s", "str"]
            #,["tourney",        False, _("Tourney"), 0.0, "%s", "str"]   # true not allowed for this line
            ,
            ["category", True, _("Cat."), 0.0, "%s", "str"],
            ["limitType", True,
             _("Limit"), 0.0, "%s", "str"],
            ["currency", True, _("Curr."), 0.0, "%s", "str"],
            ["buyIn", True, _("BuyIn"), 1.0, "%3.2f", "str"],
            ["fee", True, _("Fee"), 1.0, "%3.2f", "str"],
            ["playerName", False,
             _("Name"), 0.0, "%s",
             "str"]  # true not allowed for this line (set in code)
            ,
            ["tourneyCount", True,
             _("#"), 1.0, "%1.0f", "str"],
            ["itm", True, _("ITM%"), 1.0, "%3.2f", "str"],
            ["_1st", False, _("1st"), 1.0, "%1.0f", "str"],
            ["_2nd", True, _("2nd"), 1.0, "%1.0f", "str"],
            ["_3rd", True, _("3rd"), 1.0, "%1.0f", "str"],
            ["unknownRank", True,
             _("Rank?"), 1.0, "%1.0f", "str"],
            ["spent", True, _("Spent"), 1.0, "%3.2f", "str"],
            ["won", True, _("Won"), 1.0, "%3.2f", "str"],
            ["roi", True, _("ROI%"), 1.0, "%3.0f", "str"],
            ["profitPerTourney", True,
             _("$/Tour"), 1.0, "%3.2f", "str"]
        ]

        self.stats_frame = QFrame()
        self.stats_frame.setLayout(QVBoxLayout())

        self.stats_vbox = QSplitter(Qt.Vertical)
        self.stats_frame.layout().addWidget(self.stats_vbox)
        # self.fillStatsFrame(self.stats_vbox)

        #self.main_hbox.pack_start(self.filters.get_vbox())
        #self.main_hbox.pack_start(self.stats_frame, expand=True, fill=True)
        self.addWidget(scroll)
        self.addWidget(self.stats_frame)
        self.setStretchFactor(0, 0)
        self.setStretchFactor(1, 1)