def metadata(self, path): path = util.format_path(path) _md = self.search(path) md = {} md['size'] = _md['size'] md['mtime'] = util.convert_time(_md['updated_time']) return md
def __init__(self, text, time, user='', sent=True, message_type=TOX_MESSAGE_TYPE['NORMAL'], parent=None): QtWidgets.QWidget.__init__(self, parent) self.name = DataLabel(self) self.name.setGeometry(QtCore.QRect(2, 2, 95, 23)) self.name.setTextFormat(QtCore.Qt.PlainText) font = QtGui.QFont() font.setFamily(settings.Settings.get_instance()['font']) font.setPointSize(11) font.setBold(True) self.name.setFont(font) self.name.setText(user) self.time = QtWidgets.QLabel(self) self.time.setGeometry(QtCore.QRect(parent.width() - 60, 0, 50, 25)) font.setPointSize(10) font.setBold(False) self.time.setFont(font) self._time = time if not sent: movie = QtGui.QMovie(curr_directory() + '/images/spinner.gif') self.time.setMovie(movie) movie.start() self.t = True else: self.time.setText(convert_time(time)) self.t = False self.message = MessageEdit(text, parent.width() - 160, message_type, self) if message_type != TOX_MESSAGE_TYPE['NORMAL']: self.name.setStyleSheet("QLabel { color: #5CB3FF; }") self.message.setAlignment(QtCore.Qt.AlignCenter) self.time.setStyleSheet("QLabel { color: #5CB3FF; }") self.message.setGeometry(QtCore.QRect(100, 0, parent.width() - 160, self.message.height())) self.setFixedHeight(self.message.height())
def metadata(self, path): path = util.format_path(path) _md = self.search(path) md = {} md['size'] = eval(_md['fileSize']) md['mtime'] = util.convert_time(_md['modifiedDate']) return md
def metadata(self, path): # only for file, not dir _md = self.client.metadata(path) md = {} md['size'] = _md['bytes'] md['mtime'] = util.convert_time(_md['modified']) return md
def __init__(self, text, time, user="", sent=True, message_type=TOX_MESSAGE_TYPE["NORMAL"], parent=None): QtGui.QWidget.__init__(self, parent) self.name = DataLabel(self) self.name.setGeometry(QtCore.QRect(2, 2, 95, 23)) self.name.setTextFormat(QtCore.Qt.PlainText) font = QtGui.QFont() font.setFamily(settings.Settings.get_instance()["font"]) font.setPointSize(11) font.setBold(True) self.name.setFont(font) self.name.setText(user) self.time = QtGui.QLabel(self) self.time.setGeometry(QtCore.QRect(parent.width() - 60, 0, 50, 25)) font.setPointSize(10) font.setBold(False) self.time.setFont(font) self._time = time if not sent: movie = QtGui.QMovie(curr_directory() + "/images/spinner.gif") self.time.setMovie(movie) movie.start() self.t = True else: self.time.setText(convert_time(time)) self.t = False self.message = MessageEdit(text, parent.width() - 160, message_type, self) if message_type != TOX_MESSAGE_TYPE["NORMAL"]: self.name.setStyleSheet("QLabel { color: #5CB3FF; }") self.message.setAlignment(QtCore.Qt.AlignCenter) self.time.setStyleSheet("QLabel { color: #5CB3FF; }") self.message.setGeometry(QtCore.QRect(100, 0, parent.width() - 160, self.message.height())) self.setFixedHeight(self.message.height())
def metadata(self, path): # only for file, not dir if not path.startswith('/'): path = '/' + path _md = self.client.files_get_metadata(path) md = {} md['size'] = _md.size md['mtime'] = util.convert_time(_md.client_modified) return md
def __init__(self, hostname, device_id, lastseen_time, is_connected, is_guest, ip_address, mac_address): """Station initialize.""" self.hostname = hostname self.device_id = device_id self.lastseen_time = convert_time(lastseen_time) self.is_connected = is_connected self.is_guest = is_guest self.ip_address = ip_address self.mac_address = convert_macaddr(mac_address)
def measure_oneshot(self, conf): """invoke a single measurement and send it to saving the data""" try: with locking(self.mainthread.controls_Lock): conf["store_signal"].emit( deepcopy(measure_resistance_singlechannel(**conf))) print("measuring", convert_time(time.time())) finally: QTimer.singleShot(30 * 1e3, lambda: self.measure_oneshot(self.conf))
def metadata(self, path): path = util.format_path(path) file_id = self._path_to_metadata(path)['id'] url = BoxAPI.BASE_URL + '/files/%s' % file_id _md = self._request('GET', url) md = {} md['size'] = _md['size'] md['mtime'] = util.convert_time(_md['modified_at']) return md
def __init__(self, time, src_macaddr, dst_macaddr, src_ipaddr, src_port, dst_ipaddr, dst_port, protocol, message): """Initialize Packet model.""" self.time = convert_time(time) self.src_macaddr = convert_macaddr(src_macaddr) self.dst_macaddr = convert_macaddr(dst_macaddr) self.src_ipaddr = src_ipaddr self.src_port = src_port self.dst_ipaddr = dst_ipaddr self.dst_port = dst_port self.protocol = protocol self.message = json.dumps(message)
def show_set_cache_length(cls, length): """Show set cache length setting""" if not len(length): wf.add_item(title=SETTINGS['SET_CACHE']['title'] % '[seconds]', autocomplete=SETTINGS['SET_CACHE']['autocomplete'], icon=SETTINGS['SET_CACHE']['icon']) else: try: int(length) wf.add_item(title=SETTINGS['SET_CACHE']['title'] % util.convert_time(length), arg=SETTINGS['SET_CACHE']['arg'] % length, icon=SETTINGS['SET_CACHE']['icon'], valid=True) except: wf.add_item(title='please insert valid cache length', icon=ICON_CLOCK)
def get_rss(endpoint: str, interval: int = 60) -> List[RssContent]: """ rssのxmlを返すendpoint(url)からrss情報を取得し、必要な情報だけ抜き出す interval分以内の記事だけを返す。定期実行はinterval分と同じ間隔にすればよい intervalを負数にすると全記事返す(デバッグ用) """ nowtime = datetime.now(timezone(timedelta(hours=+9), 'JST')) feed = feedparser.parse(endpoint) rss_list: List[RssContent] = [] for entry in feed.entries: if not entry.get("link"): continue published = convert_time(entry.published_parsed) if (nowtime - published).total_seconds() // 60 <= interval or interval < 0: rss_content = RssContent( title=entry.title, url=entry.link, published_date=published ) rss_list.append(rss_content) return rss_list
def process_input(input_path, length_unit, time_unit): # Read the tracks df = pd.read_csv(input_path, header=0, sep='\t', names=['track', 'slice', length_name('x', length_unit), length_name('y', length_unit), length_name('distance', length_unit), speed_name('speed', length_unit, time_unit), 'value'], na_values={ length_name('distance', length_unit): -1.0, speed_name('speed', length_unit, time_unit): -1.0 }) # Add time column df[time_name('duration', time_unit)] = ( df[length_name('distance', length_unit)] / df[speed_name('speed', length_unit, time_unit)] ) # Add unit conversion columns for column in ['x', 'y', 'distance']: col_in = df[length_name(column, length_unit)] if column == 'y' and OUTPUT_LENGTH_UNIT != 'px': col_out = convert_length(util.IMAGE_HEIGHT_PX - col_in, length_unit, OUTPUT_LENGTH_UNIT) else: col_out = convert_length(col_in, length_unit, OUTPUT_LENGTH_UNIT) df[length_name(column, OUTPUT_LENGTH_UNIT)] = col_out for column in ['duration']: col_in = df[time_name(column, time_unit)] col_out = convert_time(col_in, time_unit, OUTPUT_TIME_UNIT) df[time_name(column, OUTPUT_TIME_UNIT)] = col_out for column in ['speed']: col_in = df[speed_name(column, length_unit, time_unit)] col_out = convert_speed(col_in, length_unit, time_unit, OUTPUT_LENGTH_UNIT, OUTPUT_TIME_UNIT) df[speed_name(column, OUTPUT_LENGTH_UNIT, OUTPUT_TIME_UNIT)] = col_out return df
def predict(path): print(path) if not os.path.isfile(path): raise FileNotFoundError("正しくないファイルパスが入力されました。") if not any( [os.path.splitext(path)[-1].lower() == ext for ext in allow_ext]): raise ValueError("処理できる音声ファイルは " + ",".join(allow_ext) + "のいずれかです。") try: filename = os.path.splitext(os.path.basename(path))[0] print("音声読み込み中...") S, bins_per_seconds = preprocess(path, mono=False, hop_length=512) print("モデル予測中...") global sess global graph with graph.as_default(): keras.backend.set_session(sess) pred = model.predict(np.expand_dims(S, 0)) print("変換中...") times = convert_time(pred, bins_per_seconds, quality_index) print("ファイル保存中...") with open(current_dir + "/label/{}.txt".format(filename), mode="w") as f: for t in times: if t[2] != "N.C.": f.write("{} {} {}\n".format(t[0], t[1], t[2])) print("/label/{}.txtに保存しました。".format(filename)) return times except Exception as e: raise e
def load_history(self): """ Tries to load next part of messages """ friend = self._friends[self._active_friend] friend.load_corr(False) data = friend.get_corr() if not data: return data.reverse() data = data[self._messages.count():self._messages.count() + PAGE_SIZE] for message in data: if message.get_type() <= 1: data = message.get_data() self.create_message_item( data[0], convert_time(data[2]), friend.name if data[1] else self._name, data[3], False) elif message.get_type() == 2: item = self.create_file_transfer_item(message, False) if message.get_status() in (2, 4): ft = self._file_transfers[(message.get_friend_number(), message.get_file_number())] ft.set_state_changed_handler(item.update)
def load_history(self): """ Tries to load next part of messages """ friend = self._friends[self._active_friend] friend.load_corr(False) data = friend.get_corr() if not data: return data.reverse() data = data[self._messages.count():self._messages.count() + PAGE_SIZE] for message in data: if message.get_type() <= 1: data = message.get_data() self.create_message_item(data[0], convert_time(data[2]), friend.name if data[1] else self._name, data[3], False) elif message.get_type() == 2: item = self.create_file_transfer_item(message, False) if message.get_status() in (2, 4): ft = self._file_transfers[(message.get_friend_number(), message.get_file_number())] ft.set_state_changed_handler(item.update)
def set_active(self, value=None): """ :param value: number of new active friend in friend's list or None to update active user's data """ if value is None and self._active_friend == -1: # nothing to update return if value == -1: # all friends were deleted self._screen.account_name.setText('') self._screen.account_status.setText('') self._active_friend = -1 self._screen.account_avatar.setHidden(True) self._messages.clear() self._screen.messageEdit.clear() return try: self.send_typing(False) self._screen.typing.setVisible(False) if value is not None: self._active_friend = value friend = self._friends[value] self._friends[value].set_messages(False) self._screen.messageEdit.clear() self._messages.clear() friend.load_corr() messages = friend.get_corr()[-PAGE_SIZE:] for message in messages: if message.get_type() <= 1: data = message.get_data() self.create_message_item( data[0], convert_time(data[2]), friend.name if data[1] else self._name, data[3]) elif message.get_type() == 2: item = self.create_file_transfer_item(message) if message.get_status() in (2, 4): # active file transfer ft = self._file_transfers[( message.get_friend_number(), message.get_file_number())] ft.set_state_changed_handler(item.update) else: # inline self.create_inline_item(message.get_data()) self._messages.scrollToBottom() if value in self._call: self._screen.active_call() elif value in self._incoming_calls: self._screen.incoming_call() else: self._screen.call_finished() else: friend = self._friends[self._active_friend] self._screen.account_name.setText(friend.name) self._screen.account_status.setText(friend.status_message) avatar_path = (ProfileHelper.get_path() + 'avatars/{}.png').format( friend.tox_id[:TOX_PUBLIC_KEY_SIZE * 2]) if not os.path.isfile(avatar_path): # load default image avatar_path = curr_directory() + '/images/avatar.png' pixmap = QtGui.QPixmap(QtCore.QSize(64, 64)) pixmap.load(avatar_path) self._screen.account_avatar.setScaledContents(False) self._screen.account_avatar.setPixmap( pixmap.scaled(64, 64, QtCore.Qt.KeepAspectRatio)) self._screen.account_avatar.repaint() # comment? except: # no friend found. ignore log('Incorrect friend value: ' + str(value)) raise
def measure_resistance_singlechannel(threads, excitation_current_A, threadname_RES, threadname_CURR, threadname_Temp="control_LakeShore350", temperature_sensor="Sensor_1_K", n_measurements=1, **kwargs): """conduct one 'full' measurement of resistance: arguments: dict conf threads = dict of threads running of the mainWindow class threadname_Temp = name of the (LakeShore) Temperature thread threadname_RES = name of the (Keithley) Voltage measure thread threadname_CURR = name of the (Keithley) Current set thread n_measurements = number of measurements (dual polarity) to be averaged over default = 1 (no reason to do much more) excitation_current_A = excitation current for the measurement returns: dict data T_mean_K : mean of temperature readings before and after measurement [K] T_std_K : std of temperature readings before and after measurement [K] R_mean_Ohm : mean of all n_measurements resistance measurements [Ohm] R_std_Ohm : std of all n_measurements resistance measurements [Ohm] """ # measured current reversal = 40ms. # reversal measured with a DMM 7510 of a 6221 Source (both Keithley) current_reversal_time = 0.06 data = dict() temps = [] resistances = [] # pos & neg with loops_off(threads): threads[threadname_CURR][0].enable() temps.append(threads[threadname_Temp][0].read_Temperatures() [temperature_sensor]) for idx in range(n_measurements): # as first time, apply positive current --> pos voltage (correct) for currentfactor in [1, -1]: threads[threadname_CURR][0].gettoset_Current_A( excitation_current_A * currentfactor) threads[threadname_CURR][0].setCurrent_A() # wait for the current to be changed: time.sleep(current_reversal_time) voltage = threads[threadname_RES][0].read_Voltage( ) * currentfactor # pure V/I, I hope that is fine. resistances.append(voltage / (excitation_current_A * currentfactor)) temps.append(threads[threadname_Temp][0].read_Temperatures() [temperature_sensor]) data["T_mean_K"] = np.mean(temps) data["T_std_K"] = np.std(temps) data["R_mean_Ohm"] = np.mean(resistances) data["R_std_Ohm"] = np.std(resistances) data["datafile"] = kwargs["datafile"] timedict = { "timeseconds": time.time(), "ReadableTime": convert_time(time.time()), "SearchableTime": convert_time_searchable(time.time()), } data.update(timedict) return data
def measure_resistance_multichannel( threads, excitation_currents_A, threadnames_RES, threadnames_CURR, iv_characteristic, threadname_Temp="control_LakeShore350", # temperature_sensor='Sensor_1_K', # n_measurements=1, current_reversal_time=0.08, **kwargs): """conduct one 'full' measurement of resistance: arguments: dict conf threads = dict of threads running of the mainWindow class threadname_Temp = name of the (LakeShore) Temperature thread threadnames_RES = list of names of the (Keithley) Voltage measure threads threadnames_CURR = list of names of the (Keithley) Current set threads n_measurements = number of measurements (dual polarity) to be averaged over default = 1 (no reason to do much more) excitation_currents_A = list of excitations currents for the measurement returns: dict data T_mean_K : dict of means of temperature readings before and after measurement [K] T_std_K : dict of stds of temperature readings before and after measurement [K] resistances, voltages, currents: dicts with corresponding values for all measurement channels timeseconds: pythons time.time() ReadableTime: Time in %Y-%m-%d %H:%M:%S SearchableTime: Time in %Y%m%d%H%M%S """ # measured current reversal = 40ms. # reversal measured with a DMM 7510 of a 6221 Source (both Keithley) lengths = [ len(threadnames_CURR), len(threadnames_RES), len(excitation_currents_A) ] for c in comb(lengths, 2): if c[0] != c[1]: raise AssertionError( "number of excitation currents, current sources and voltmeters does not coincide!" ) data = dict() resistances = { key: dict(coeff=0, residuals=0, nonohmic=0) for key in threadnames_RES } voltages = {key: [] for key in threadnames_RES} currents = {key: [] for key in threadnames_CURR} with loops_off(threads): temp1 = threads[threadname_Temp][0].read_Temperatures() temps = {key: [val] for key, val in zip(temp1.keys(), temp1.values())} for ct, (name_curr, exc_curr, name_volt) in enumerate( zip(threadnames_CURR, excitation_currents_A, threadnames_RES)): threshold_residuals = 1e4 # threshold_coefficients = 1e4 threads[name_curr][0].enable() for current_base in iv_characteristic: for currentfactor in [-1, 1]: current = exc_curr * currentfactor * current_base # print(current) currents[name_curr].append(current) threads[name_curr][0].gettoset_Current_A(current) threads[name_curr][0].setCurrent_A() # wait for the current to be changed: time.sleep(current_reversal_time) voltage = threads[name_volt][0].read_Voltage() voltages[name_volt].append(voltage) c, stats = polyfit(currents[name_curr], voltages[name_volt], deg=1, full=True) resistances[name_volt]["coeff"] = c[1] resistances[name_volt]["residuals"] = stats[0][0] # c_wrong = polyfit(currents[name_curr], voltages[ # name_volt], deg=4) # print(stats[0], c_wrong) if stats[0] > threshold_residuals: resistances[name_volt]["nonohmic"] = 1 # if np.any(np.array([x > threshold_coefficients for x in stats[2:]])): # resistances[name_volt]['nonohmic'] = 1 threads[name_curr][0].disable() temp2 = threads[threadname_Temp][0].read_Temperatures() for key in temps: temps[key].append(temp2[key]) data["T_mean_K"] = {key + "_mean": np.mean(temps[key]) for key in temps} data["T_std_K"] = { key + "_std": np.std(temps[key], ddof=1) for key in temps } data["resistances"] = { key.strip("control_"): value for key, value in zip(resistances.keys(), resistances.values()) } data["voltages"] = { key.strip("control_"): value for key, value in zip(voltages.keys(), voltages.values()) } data["currents"] = { key.strip("control_"): value for key, value in zip(currents.keys(), currents.values()) } df = pd.DataFrame.from_dict(data) data["datafile"] = kwargs["datafile"] timedict = { "timeseconds": time.time(), "ReadableTime": convert_time(time.time()), "SearchableTime": convert_time_searchable(time.time()), } data.update(timedict) data["df"] = df # print(data) # for x in data: print(x) # df = pd.DataFrame.from_dict(data) return data
def __init__(self, file_name, size, time, user, friend_number, file_number, state, parent=None): QtGui.QListWidget.__init__(self, parent) self.resize(QtCore.QSize(620, 50)) if state != FILE_TRANSFER_MESSAGE_STATUS['CANCELLED']: self.setStyleSheet('QWidget { background-color: green; }') else: self.setStyleSheet('QWidget { background-color: #B40404; }') self.name = DataLabel(self) self.name.setGeometry(QtCore.QRect(1, 15, 95, 20)) self.name.setTextFormat(QtCore.Qt.PlainText) font = QtGui.QFont() font.setFamily("Times New Roman") font.setPointSize(11) font.setBold(True) self.name.setFont(font) self.name.setText(user) self.name.setStyleSheet('QLabel { color: black; }') self.time = QtGui.QLabel(self) self.time.setGeometry(QtCore.QRect(570, 2, 50, 46)) font.setPointSize(10) font.setBold(False) self.time.setFont(font) self.time.setText(convert_time(time)) self.time.setStyleSheet('QLabel { color: black; }') self.cancel = QtGui.QPushButton(self) self.cancel.setGeometry(QtCore.QRect(500, 2, 46, 46)) pixmap = QtGui.QPixmap(curr_directory() + '/images/decline.png') icon = QtGui.QIcon(pixmap) self.cancel.setIcon(icon) self.cancel.setIconSize(QtCore.QSize(30, 30)) self.cancel.setVisible(state > 1) self.cancel.clicked.connect(lambda: self.cancel_transfer(friend_number, file_number)) self.cancel.setStyleSheet('QPushButton:hover { border: 1px solid #3A3939; }') self.accept = QtGui.QPushButton(self) self.accept.setGeometry(QtCore.QRect(450, 2, 46, 46)) pixmap = QtGui.QPixmap(curr_directory() + '/images/accept.png') icon = QtGui.QIcon(pixmap) self.accept.setIcon(icon) self.accept.setIconSize(QtCore.QSize(30, 30)) self.accept.clicked.connect(lambda: self.accept_transfer(friend_number, file_number, size)) self.accept.setVisible(state == FILE_TRANSFER_MESSAGE_STATUS['INCOMING_NOT_STARTED']) self.accept.setStyleSheet('QPushButton:hover { border: 1px solid #3A3939; }') self.pb = QtGui.QProgressBar(self) self.pb.setGeometry(QtCore.QRect(100, 15, 100, 20)) self.pb.setValue(0) self.pb.setStyleSheet('QProgressBar { background-color: #302F2F; }') if state < 2: self.pb.setVisible(False) self.file_name = DataLabel(self) self.file_name.setGeometry(QtCore.QRect(210, 2, 230, 46)) font.setPointSize(12) self.file_name.setFont(font) file_size = size / 1024 if not file_size: file_size = '{}B'.format(size) elif file_size >= 1024: file_size = '{}MB'.format(file_size / 1024) else: file_size = '{}KB'.format(file_size) file_data = u'{} {}'.format(file_size, file_name) self.file_name.setText(file_data) self.file_name.setStyleSheet('QLabel { color: black; }') self.saved_name = file_name
def __init__(self, file_name, size, time, user, friend_number, file_number, state, width, parent=None): QtGui.QListWidget.__init__(self, parent) self.resize(QtCore.QSize(width, 34)) if state == TOX_FILE_TRANSFER_STATE["CANCELLED"]: self.setStyleSheet("QListWidget { border: 1px solid #B40404; }") elif state in PAUSED_FILE_TRANSFERS: self.setStyleSheet("QListWidget { border: 1px solid #FF8000; }") else: self.setStyleSheet("QListWidget { border: 1px solid green; }") self.state = state self.name = DataLabel(self) self.name.setGeometry(QtCore.QRect(3, 7, 95, 25)) self.name.setTextFormat(QtCore.Qt.PlainText) font = QtGui.QFont() font.setFamily(settings.Settings.get_instance()["font"]) font.setPointSize(11) font.setBold(True) self.name.setFont(font) self.name.setText(user) self.time = QtGui.QLabel(self) self.time.setGeometry(QtCore.QRect(width - 60, 7, 50, 25)) font.setPointSize(10) font.setBold(False) self.time.setFont(font) self.time.setText(convert_time(time)) self.cancel = QtGui.QPushButton(self) self.cancel.setGeometry(QtCore.QRect(width - 125, 2, 30, 30)) pixmap = QtGui.QPixmap(curr_directory() + "/images/decline.png") icon = QtGui.QIcon(pixmap) self.cancel.setIcon(icon) self.cancel.setIconSize(QtCore.QSize(30, 30)) self.cancel.setVisible(state in ACTIVE_FILE_TRANSFERS) self.cancel.clicked.connect(lambda: self.cancel_transfer(friend_number, file_number)) self.cancel.setStyleSheet("QPushButton:hover { border: 1px solid #3A3939; background-color: none;}") self.accept_or_pause = QtGui.QPushButton(self) self.accept_or_pause.setGeometry(QtCore.QRect(width - 170, 2, 30, 30)) if state == TOX_FILE_TRANSFER_STATE["INCOMING_NOT_STARTED"]: self.accept_or_pause.setVisible(True) self.button_update("accept") elif state in DO_NOT_SHOW_ACCEPT_BUTTON: self.accept_or_pause.setVisible(False) elif state == TOX_FILE_TRANSFER_STATE["PAUSED_BY_USER"]: # setup for continue self.accept_or_pause.setVisible(True) self.button_update("resume") else: # pause self.accept_or_pause.setVisible(True) self.button_update("pause") self.accept_or_pause.clicked.connect(lambda: self.accept_or_pause_transfer(friend_number, file_number, size)) self.accept_or_pause.setStyleSheet("QPushButton:hover { border: 1px solid #3A3939; background-color: none}") self.pb = QtGui.QProgressBar(self) self.pb.setGeometry(QtCore.QRect(100, 7, 100, 20)) self.pb.setValue(0) self.pb.setStyleSheet("QProgressBar { background-color: #302F2F; }") self.pb.setVisible(state in SHOW_PROGRESS_BAR) self.file_name = DataLabel(self) self.file_name.setGeometry(QtCore.QRect(210, 7, width - 420, 20)) font.setPointSize(12) self.file_name.setFont(font) file_size = size // 1024 if not file_size: file_size = "{}B".format(size) elif file_size >= 1024: file_size = "{}MB".format(file_size // 1024) else: file_size = "{}KB".format(file_size) file_data = "{} {}".format(file_size, file_name) self.file_name.setText(file_data) self.file_name.setToolTip(file_name) self.saved_name = file_name self.time_left = QtGui.QLabel(self) self.time_left.setGeometry(QtCore.QRect(width - 92, 7, 30, 20)) font.setPointSize(10) self.time_left.setFont(font) self.time_left.setVisible(state == TOX_FILE_TRANSFER_STATE["RUNNING"]) self.setFocusPolicy(QtCore.Qt.NoFocus) self.paused = False
dirs, files = listdir(srv, path) yield path, dirs, files toexpand.extend([path + '/' + d for d in dirs]) cls = sys.argv[1].lower() path = util.format_path(sys.argv[2]) srv = services.factory(cls) method = globals().get(cls + '_listdir', None) beg = None beg_file = None end = None end_file = None for root, dirs, files in walk(srv, path, method): #print root, dirs, files for f in files: #print f ts = util.convert_time(f[1]) if beg == None or ts < beg: beg = ts beg_file = f if end == None or ts > end: end = ts end_file = f #print beg, end print beg_file[0], beg_file[1] print end_file[0], end_file[1] print end - beg
def __init__(self, file_name, size, time, user, friend_number, file_number, state, width, parent=None): QtGui.QListWidget.__init__(self, parent) self.resize(QtCore.QSize(width, 34)) if state == TOX_FILE_TRANSFER_STATE['CANCELLED']: self.setStyleSheet('QListWidget { border: 1px solid #B40404; }') elif state in PAUSED_FILE_TRANSFERS: self.setStyleSheet('QListWidget { border: 1px solid #FF8000; }') else: self.setStyleSheet('QListWidget { border: 1px solid green; }') self.state = state self.name = DataLabel(self) self.name.setGeometry(QtCore.QRect(3, 7, 95, 20)) self.name.setTextFormat(QtCore.Qt.PlainText) font = QtGui.QFont() font.setFamily("Times New Roman") font.setPointSize(11) font.setBold(True) self.name.setFont(font) self.name.setText(user) self.time = QtGui.QLabel(self) self.time.setGeometry(QtCore.QRect(width - 53, 7, 50, 20)) font.setPointSize(10) font.setBold(False) self.time.setFont(font) self.time.setText(convert_time(time)) self.cancel = QtGui.QPushButton(self) self.cancel.setGeometry(QtCore.QRect(width - 120, 2, 30, 30)) pixmap = QtGui.QPixmap(curr_directory() + '/images/decline.png') icon = QtGui.QIcon(pixmap) self.cancel.setIcon(icon) self.cancel.setIconSize(QtCore.QSize(30, 30)) self.cancel.setVisible(state in ACTIVE_FILE_TRANSFERS) self.cancel.clicked.connect(lambda: self.cancel_transfer(friend_number, file_number)) self.cancel.setStyleSheet('QPushButton:hover { border: 1px solid #3A3939; background-color: none;}') self.accept_or_pause = QtGui.QPushButton(self) self.accept_or_pause.setGeometry(QtCore.QRect(width - 170, 2, 30, 30)) if state == TOX_FILE_TRANSFER_STATE['INCOMING_NOT_STARTED']: self.accept_or_pause.setVisible(True) self.button_update('accept') elif state in DO_NOT_SHOW_ACCEPT_BUTTON: self.accept_or_pause.setVisible(False) elif state == TOX_FILE_TRANSFER_STATE['PAUSED_BY_USER']: # setup for continue self.accept_or_pause.setVisible(True) self.button_update('resume') else: # pause self.accept_or_pause.setVisible(True) self.button_update('pause') self.accept_or_pause.clicked.connect(lambda: self.accept_or_pause_transfer(friend_number, file_number, size)) self.accept_or_pause.setStyleSheet('QPushButton:hover { border: 1px solid #3A3939; background-color: none}') self.pb = QtGui.QProgressBar(self) self.pb.setGeometry(QtCore.QRect(100, 7, 100, 20)) self.pb.setValue(0) self.pb.setStyleSheet('QProgressBar { background-color: #302F2F; }') self.pb.setVisible(state in SHOW_PROGRESS_BAR) self.file_name = DataLabel(self) self.file_name.setGeometry(QtCore.QRect(210, 7, width - 420, 20)) font.setPointSize(12) self.file_name.setFont(font) file_size = size // 1024 if not file_size: file_size = '{}B'.format(size) elif file_size >= 1024: file_size = '{}MB'.format(file_size // 1024) else: file_size = '{}KB'.format(file_size) file_data = '{} {}'.format(file_size, file_name) self.file_name.setText(file_data) self.file_name.setToolTip(file_name) self.saved_name = file_name self.time_left = QtGui.QLabel(self) self.time_left.setGeometry(QtCore.QRect(width - 87, 7, 30, 20)) font.setPointSize(10) self.time_left.setFont(font) self.time_left.setVisible(state == TOX_FILE_TRANSFER_STATE['RUNNING']) self.setFocusPolicy(QtCore.Qt.NoFocus) self.paused = False
def mark_as_sent(self): if self.t: self.time.setText(convert_time(self._time)) self.t = False return True return False
def set_active(self, value=None): """ :param value: number of new active friend in friend's list or None to update active user's data """ if value is None and self._active_friend == -1: # nothing to update return if value == -1: # all friends were deleted self._screen.account_name.setText('') self._screen.account_status.setText('') self._active_friend = -1 self._screen.account_avatar.setHidden(True) self._messages.clear() self._screen.messageEdit.clear() return try: self.send_typing(False) self._screen.typing.setVisible(False) if value is not None: self._active_friend = value friend = self._friends[value] self._friends[value].set_messages(False) self._screen.messageEdit.clear() self._messages.clear() friend.load_corr() messages = friend.get_corr()[-PAGE_SIZE:] for message in messages: if message.get_type() <= 1: data = message.get_data() self.create_message_item(data[0], convert_time(data[2]), friend.name if data[1] else self._name, data[3]) elif message.get_type() == 2: item = self.create_file_transfer_item(message) if message.get_status() in (2, 4): # active file transfer ft = self._file_transfers[(message.get_friend_number(), message.get_file_number())] ft.set_state_changed_handler(item.update) else: # inline self.create_inline_item(message.get_data()) self._messages.scrollToBottom() if value in self._call: self._screen.active_call() elif value in self._incoming_calls: self._screen.incoming_call() else: self._screen.call_finished() else: friend = self._friends[self._active_friend] self._screen.account_name.setText(friend.name) self._screen.account_status.setText(friend.status_message) avatar_path = (ProfileHelper.get_path() + 'avatars/{}.png').format(friend.tox_id[:TOX_PUBLIC_KEY_SIZE * 2]) if not os.path.isfile(avatar_path): # load default image avatar_path = curr_directory() + '/images/avatar.png' pixmap = QtGui.QPixmap(QtCore.QSize(64, 64)) pixmap.load(avatar_path) self._screen.account_avatar.setScaledContents(False) self._screen.account_avatar.setPixmap(pixmap.scaled(64, 64, QtCore.Qt.KeepAspectRatio)) self._screen.account_avatar.repaint() # comment? except: # no friend found. ignore log('Incorrect friend value: ' + str(value)) raise
path = toexpand.pop(0) dirs, files = listdir(srv, path) yield path, dirs, files toexpand.extend([path+'/'+d for d in dirs]) cls = sys.argv[1].lower() path = util.format_path(sys.argv[2]) srv = services.factory(cls) method = globals().get(cls + '_listdir', None) beg = None beg_file = None end = None end_file = None for root, dirs, files in walk(srv, path, method): #print root, dirs, files for f in files: #print f ts = util.convert_time(f[1]) if beg == None or ts < beg: beg = ts beg_file = f if end == None or ts > end: end = ts end_file = f #print beg, end print beg_file[0], beg_file[1] print end_file[0], end_file[1] print end - beg
def store_data(self, data): """storing logging data what data should be logged is set in self.conf or will be set there eventually at any rate """ # if isinstance(data, dict): if data["type"] == "multichannel": datastring = "" temperatures = [ "{{{mean}:.5E}} {{{std}:.5E}} ".format(mean=mean, std=std) for mean, std in zip(data["T_mean_K"], data["T_std_K"]) ] for t in temperatures: datastring += t datastring = datastring.format(**data["T_mean_K"], **data["T_std_K"]) for instrument in data["resistances"]: res_instr = [ "{{{name}:.10E}} ".format(name=key) for key in data["resistances"][instrument] ] for r in res_instr: datastring += r datastring = datastring.format(**data["resistances"][instrument]) for instrument in data["voltages"]: voltages = [ "{{{num}:.5E}} ".format(num=ct) for ct, value in enumerate(data["voltages"][instrument]) ] datastring += "{} ".format(len(voltages)) for v in voltages: datastring += v datastring = datastring.format(*data["voltages"][instrument]) for instrument in data["currents"]: currents = [ "{{{num}:.5E}} ".format(num=ct) for ct, value in enumerate(data["currents"][instrument]) ] datastring += "{} ".format(len(currents)) for v in currents: datastring += v datastring = datastring.format(*data["currents"][instrument]) datastring = "\n{ReadableTime} ".format(**data) + datastring # print(datastring) headerstring = """\ # Measurement started on {date} # #date,Sensor_1_(A)_[K]_arithmetic_mean,Sensor_1_(A)_[K]_uncertainty,Sensor_2_(B)_[K]_arithmetic_mean,Sensor_2_(B)_[K]_uncertainty,Sensor_3_(C)_[K]_arithmetic_mean,Sensor_3_(C)_[K]_uncertainty,Sensor_4_(D)_[K]_arithmetic_mean,Sensor_4_(D)_[K]_uncertainty,Keith1:_resistance_[Ohm]_(slope_of_4_points),Keith1:_residuals_(of_fit_for_slope),Keith1:_non-ohmicity:_0_if_ohmic_1_if_nonohmic,Keith2:_resistance_[Ohm]_(slope_of_4_points),Keith2:_residuals_(of_fit_for_slope),Keith2:_non-ohmicity:_0_if_ohmic_1_if_nonohmic,descr1,Keith1_voltage_1,Keith1_voltage_2,Keith1_voltage_3,Keith1_voltage_4,descr2,Keith2_voltage_1,Keith2_voltage_2,Keith2_voltage_3,Keith2_voltage_4,descr3,Keith1_current_1,Keith1_current_2,Keith1_current_3,Keith1_current_4,descr4,Keith2_current_1,Keith2_current_2,Keith2_current_3,Keith2_current_4, # columns -1 based / zero based / one based # # -1 / 0 / 1 date # # -- temperatures # 0 / 1 / 2 Sensor 1 (A) [K] arithmetic mean # 1 / 2 / 3 Sensor 1 (A) [K] uncertainty # 2 / 3 / 4 Sensor 2 (B) [K] arithmetic mean # 3 / 4 / 5 Sensor 2 (B) [K] uncertainty # 4 / 5 / 6 Sensor 3 (C) [K] arithmetic mean # 5 / 6 / 7 Sensor 3 (C) [K] uncertainty # 6 / 7 / 8 Sensor 4 (D) [K] arithmetic mean # 7 / 8 / 9 Sensor 4 (D) [K] uncertainty # # -- resistances Keithley2182_1 # 8 / 9 / 10 resistance [Ohm] (slope of 4 points) # 9 / 10 / 11 residuals (of fit for slope) # 10 / 11 / 12 non-ohmicity: 0 if ohmic, 1 if nonohmic # # -- resistances Keithley2182_2 # 11 / 12 / 13 resistance [Ohm] (slope of 4 points) # 12 / 13 / 14 residuals (of fit for slope) # 13 / 14 / 15 non-ohmicity: 0 if ohmic, 1 if nonohmic # # the following numbers only apply if the number of points for the iv-fit is 4 # -- voltages Keithley2182_1 # 14 / 15 / 16 number of voltages # 15 / 16 / 17 voltage 1 # 16 / 17 / 18 voltage 2 # 17 / 18 / 19 voltage 3 # 18 / 19 / 20 voltage 4 # -- voltages Keithley2182_2 # 19 / 20 / 21 number of voltages # 20 / 21 / 22 voltage 1 # 21 / 22 / 23 voltage 2 # 22 / 23 / 24 voltage 3 # 23 / 24 / 25 voltage 4 # -- currents Keithley6221_1 # 24 / 25 / 26 number of currents # 25 / 26 / 27 current 1 # 26 / 27 / 28 current 2 # 27 / 28 / 29 current 3 # 28 / 29 / 30 current 4 # -- currents Keithley6221_2 # 29 / 30 / 31 number of currents # 30 / 31 / 32 current 1 # 31 / 32 / 33 current 2 # 32 / 33 / 34 current 3 # 33 / 34 / 35 current 4 # 34 / 35 / 36 unused # 35 / 36 / 37 unused # 36 / 37 / 38 unused # 37 / 38 / 39 unused # 38 / 39 / 40 unused # 39 / 40 / 41 unused # 40 / 41 / 42 unused # 41 / 42 / 43 unused # 42 / 43 / 44 unused # 43 / 44 / 45 unused # 44 / 45 / 46 unused # 45 / 46 / 47 unused # 46 / 47 / 48 unused # 47 / 48 / 49 unused # 48 / 49 / 50 unused # 49 / 50 / 51 unused # 50 / 51 / 52 unused # 51 / 52 / 53 unused # 52 / 53 / 54 unused # 53 / 54 / 55 unused # 54 / 55 / 56 unused # 55 / 56 / 57 unused # 56 / 57 / 58 unused # 57 / 58 / 59 unused # 58 / 59 / 60 unused # 59 / 60 / 61 unused # 60 / 61 / 62 unused # 61 / 62 / 63 unused # 62 / 63 / 64 unused # 63 / 64 / 65 unused # 64 / 65 / 66 unused # 65 / 66 / 67 unused # 66 / 67 / 68 unused # 67 / 68 / 69 unused #68 / """.format( date=convert_time(self.starttime) ) else: datastring = "\n {T_mean_K:.3E} {T_std_K:.3E} {R_mean_Ohm:.14E} {R_std_Ohm:.14E} {timeseconds} {ReadableTime}".format( **data ) headerstring = str( "# Measurement started on {date} \n".format( date=convert_time(self.starttime) ) + "# temp_sample [K], T_std [K], resistance [Ohm], R_std [Ohm], time [s], date \n" ) if os.path.isfile(data["datafile"]): try: with open(data["datafile"], "a") as f: f.write(datastring) except IOError as err: self.sig_assertion.emit("DataSaver: " + err.args[0]) else: try: with open(data["datafile"], "w") as f: f.write(headerstring) f.write(datastring) except IOError as err: self.sig_assertion.emit("DataSaver: " + err.args[0])
def __init__(self, file_name, size, time, user, friend_number, file_number, state, parent=None): QtGui.QListWidget.__init__(self, parent) self.resize(QtCore.QSize(620, 50)) if state != FILE_TRANSFER_MESSAGE_STATUS['CANCELLED']: self.setStyleSheet('QWidget { background-color: green; }') else: self.setStyleSheet('QWidget { background-color: #B40404; }') self.name = DataLabel(self) self.name.setGeometry(QtCore.QRect(1, 15, 95, 20)) self.name.setTextFormat(QtCore.Qt.PlainText) font = QtGui.QFont() font.setFamily("Times New Roman") font.setPointSize(11) font.setBold(True) self.name.setFont(font) self.name.setText(user) self.name.setStyleSheet('QLabel { color: black; }') self.time = QtGui.QLabel(self) self.time.setGeometry(QtCore.QRect(570, 2, 50, 46)) font.setPointSize(10) font.setBold(False) self.time.setFont(font) self.time.setText(convert_time(time)) self.time.setStyleSheet('QLabel { color: black; }') self.cancel = QtGui.QPushButton(self) self.cancel.setGeometry(QtCore.QRect(500, 2, 46, 46)) pixmap = QtGui.QPixmap(curr_directory() + '/images/decline.png') icon = QtGui.QIcon(pixmap) self.cancel.setIcon(icon) self.cancel.setIconSize(QtCore.QSize(30, 30)) self.cancel.setVisible(state > 1) self.cancel.clicked.connect( lambda: self.cancel_transfer(friend_number, file_number)) self.cancel.setStyleSheet( 'QPushButton:hover { border: 1px solid #3A3939; }') self.accept = QtGui.QPushButton(self) self.accept.setGeometry(QtCore.QRect(450, 2, 46, 46)) pixmap = QtGui.QPixmap(curr_directory() + '/images/accept.png') icon = QtGui.QIcon(pixmap) self.accept.setIcon(icon) self.accept.setIconSize(QtCore.QSize(30, 30)) self.accept.clicked.connect( lambda: self.accept_transfer(friend_number, file_number, size)) self.accept.setVisible( state == FILE_TRANSFER_MESSAGE_STATUS['INCOMING_NOT_STARTED']) self.accept.setStyleSheet( 'QPushButton:hover { border: 1px solid #3A3939; }') self.pb = QtGui.QProgressBar(self) self.pb.setGeometry(QtCore.QRect(100, 15, 100, 20)) self.pb.setValue(0) self.pb.setStyleSheet('QProgressBar { background-color: #302F2F; }') if state < 2: self.pb.setVisible(False) self.file_name = DataLabel(self) self.file_name.setGeometry(QtCore.QRect(210, 2, 230, 46)) font.setPointSize(12) self.file_name.setFont(font) file_size = size / 1024 if not file_size: file_size = '{}B'.format(size) elif file_size >= 1024: file_size = '{}MB'.format(file_size / 1024) else: file_size = '{}KB'.format(file_size) file_data = u'{} {}'.format(file_size, file_name) self.file_name.setText(file_data) self.file_name.setStyleSheet('QLabel { color: black; }') self.saved_name = file_name