Selecting of TOP 250

The initial window of the Terminal section in the program includes list of 250 Solana tokens according to market cap. The data which is collected:

  • Project (full name + ticker)

  • CA (with copy option)

  • Market cap

  • Current price

  • Price change (24h)

  • Volume

  • Circulating supply (+ percent how much of total supply it is)

  • Total supply

  • ATH

  • ATL

  • Rank according to market cap

def display_project_info(self, selected_project):
        if hasattr(self, 'project_info_frame'):
            self.project_info_frame.destroy()

        self.project_info_frame = customtkinter.CTkFrame(self.main_content_frame)
        self.project_info_frame.grid(row=3, column=0, padx=20, pady=20, sticky="nsew")
        self.project_info_frame.grid_columnconfigure(0, weight=1)

        coin_id = selected_project['id']
        coin_data = self.coin_data_cache.get(coin_id, {})

        contract_address = selected_project.get('contract_address', 'N/A')

        market_cap = selected_project.get('market_cap', 'N/A')
        current_price = selected_project.get('current_price', 'N/A')
        price_change_percentage_24h = selected_project.get('price_change_percentage_24h', 'N/A')
        total_volume = selected_project.get('total_volume', 'N/A')
        circulating_supply = selected_project.get('circulating_supply', 'N/A')
        total_supply = selected_project.get('total_supply', 'N/A')
        ath = selected_project.get('ath', 'N/A')
        atl = selected_project.get('atl', 'N/A')
        market_cap_rank = selected_project.get('market_cap_rank', 'N/A')

        supply_percentage = (circulating_supply / total_supply * 100) if isinstance(circulating_supply, (int, float)) and isinstance(total_supply, (int, float)) and total_supply != 0 else 0

        info_frame = customtkinter.CTkFrame(self.project_info_frame, fg_color="transparent")
        info_frame.grid(row=0, column=0, padx=20, pady=10, sticky="nsew")
        info_frame.grid_columnconfigure(0, weight=1)
        info_frame.grid_columnconfigure(1, weight=2)

        labels = [
            ("Project:", f"{selected_project.get('name', 'N/A')} ({selected_project.get('symbol', 'N/A').upper()})"),
            ("Contract Address:", contract_address),
            ("Market Cap:", f"${format_number(market_cap)}" if isinstance(market_cap, (int, float)) else "N/A"),
            ("Current Price:", f"${format_number(current_price, 2)}" if isinstance(current_price, (int, float)) else "N/A"),
            ("24h Change:", f"{format_number(price_change_percentage_24h)}%" if isinstance(price_change_percentage_24h, (int, float)) else "N/A"),
            ("Total Volume:", f"${format_number(total_volume)}" if isinstance(total_volume, (int, float)) else "N/A"),
            ("Circulating Supply:", f"{format_number(circulating_supply)} ({format_number(supply_percentage)}% of Total Supply)" if isinstance(circulating_supply, (int, float)) else "N/A"),
            ("Total Supply:", f"{format_number(total_supply)}" if isinstance(total_supply, (int, float)) else "N/A"),
            ("ATH:", f"${format_number(ath, 2)}" if isinstance(ath, (int, float)) else "N/A"),
            ("ATL:", f"${format_number(atl, 2)}" if isinstance(atl, (int, float)) else "N/A"),
            ("Market Cap Rank:", market_cap_rank if isinstance(market_cap_rank, int) else "N/A")
        ]

        for idx, (label_text, value_text) in enumerate(labels):
            label = customtkinter.CTkLabel(info_frame, text=label_text, anchor="w", font=customtkinter.CTkFont(weight="bold"))
            label.grid(row=idx, column=0, padx=5, pady=2, sticky="w")
            value = customtkinter.CTkLabel(info_frame, text=value_text, anchor="w")
            value.grid(row=idx, column=1, padx=5, pady=2, sticky="w")
            if label_text == "Contract Address:":
                copy_button = customtkinter.CTkButton(info_frame, text="Copy", width=60, command=lambda ca=contract_address: self.copy_to_clipboard(ca))
                copy_button.grid(row=idx, column=2, padx=5, pady=2, sticky="w")

        buttons_frame = customtkinter.CTkFrame(self.project_info_frame)
        buttons_frame.grid(row=1, column=0, padx=20, pady=10, sticky="w")

        coingecko_button = customtkinter.CTkButton(buttons_frame, text="Show on CoinGecko", command=lambda: self.open_coingecko(coin_id))
        coingecko_button.grid(row=0, column=0, padx=10, pady=10)

        if contract_address != 'N/A':
            swap_button = customtkinter.CTkButton(buttons_frame, text="Swap via Jupiter", command=lambda: self.open_jupiter(contract_address))
            swap_button.grid(row=0, column=1, padx=10, pady=10)
            
            audit_button = customtkinter.CTkButton(buttons_frame, text="Audit via GoPlus", command=lambda: self.open_goplus_audit(contract_address))
            audit_button.grid(row=0, column=2, padx=10, pady=10)

Last updated